diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..1e65dc6
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,152 @@
+<!-- 
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+ 
+    http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License. 
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache</groupId>
+    <artifactId>apache</artifactId>
+    <version>4</version>
+  </parent>
+
+  <groupId>org.apache.felix</groupId>
+  <artifactId>reactor</artifactId>
+  <packaging>pom</packaging>
+  <name>Apache Felix</name>
+  <!-- We just increase the version each time the list of modules changes -->
+  <version>1</version>
+  <description>Apache Felix Reactor POM</description>
+  <!-- 
+  Felix contains 3 custom maven packaging plugins. Each creates a jar file
+  as an artifact. 
+  
+  maven-bundle-plugin 
+    (bundle packaging - latest prefered plugin for generating OSGi bundles.)
+  maven-osgi-plugin 
+    (osgi-bundle packaging - old plugin for generating OSGi bundles.)
+  org.apache.felix.ipojo.plugin 
+    (plugin for generating iPOJO OSGi bundles.)
+    
+  But with maven bug https://issues.apache.org/jira/browse/FELIX-198 files
+  are not always created with the correct extension in the repository.
+
+  As a work around, this pom creates different profiles for building the 
+  different types of felix modules. 
+
+  Usage:
+  mvn -Dpackaging=<type> clean install
+  -->
+
+  <profiles>
+
+    <profile>
+      <id>packaging-plugins</id>
+      <activation>
+        <property>
+          <name>packaging</name>
+          <value>plugins</value>
+        </property>
+      </activation>
+      <modules>
+        <module>maven-obr-plugin</module>
+        <module>bundleplugin</module>
+        <module>scrplugin</module>
+        <module>tools/maven2/maven-osgi-plugin</module>
+<!--        <module>tools/maven2/maven-felix-plugin</module> -->
+      </modules>
+    </profile>
+
+    <profile>
+      <id>packaging-ipojo-bundle</id>
+      <activation>
+        <property>
+          <name>packaging</name>
+          <value>ipojo-bundle</value>
+        </property>
+      </activation>
+      <modules>
+        <!--<module>ipojo/arch</module>-->
+      </modules>
+    </profile>
+
+    <profile>
+      <id>packaging-bundle</id>
+      <activation>
+        <property>
+          <name>packaging</name>
+          <value>bundle</value>
+        </property>
+      </activation>
+      <modules>        
+        <module>org.osgi.foundation</module>
+        <module>javax.servlet</module>
+        <module>org.osgi.core</module>
+        <module>org.osgi.compendium</module>
+        <module>framework</module>
+        <module>main</module>
+        <module>shell</module>
+        <module>shell.tui</module>
+        <module>shell.gui</module>
+        <module>shell.gui.plugin</module>
+        <module>shell.remote</module>
+        <module>org.osgi.service.obr</module>
+        <module>bundlerepository</module>
+        <module>log</module>
+        <module>eventadmin</module>
+        <module>http.jetty</module>
+        <module>upnp</module>
+        <module>scr</module>
+        <module>configadmin</module>
+        <module>metatype</module>
+        <module>dependencymanager</module>
+        <module>dependencymanager.shell</module>
+	    <module>deploymentadmin</module>
+        <module>servicebinder</module>
+        <module>wireadmin</module>
+        <module>prefs</module>
+        <module>webconsole</module>
+        <module>fileinstall</module>
+
+        <module>ipojo</module>
+
+        <module>mosgi</module> 
+        <module>jmood</module> 
+
+        <module>examples</module>
+      </modules>
+    </profile>
+    
+    <profile>
+      <id>packaging-osgi-bundle</id>
+      <activation>
+        <property>
+          <name>packaging</name>
+          <value>osgi-bundle</value>
+        </property>
+      </activation>
+      <modules>
+        <module>org.apache.felix.daemon</module>
+
+        <!--    <module>tools/mangen</module> -->
+
+
+      </modules>
+    </profile>
+  </profiles>
+</project>
