diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..31cb776
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,359 @@
+<!-- 
+ 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>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.felix</groupId>
+  <artifactId>felix</artifactId>
+  <packaging>pom</packaging>
+  <name>Apache Felix</name>
+  <version>0.9.0-incubator-SNAPSHOT</version>
+  <url>http://incubator.apache.org/felix/</url>
+  <description>Apache felix is an OSGi implementation.</description>
+
+  <issueManagement>
+    <system>Jira</system>
+    <url>http://issues.apache.org/jira/browse/FELIX</url>
+  </issueManagement>
+
+  <mailingLists>
+    <mailingList>
+      <name>Felix Dev</name>
+      <subscribe>felix-dev-subscribe@incubator.apache.org</subscribe>
+      <unsubscribe>felix-dev-unsubscribe@incubator.apache.org</unsubscribe>
+      <post>-</post>
+      <archive>http://www.mail-archive.com/felix-dev%40incubator.apache.org/</archive>
+    </mailingList>
+    <mailingList>
+      <name>Felix Commits</name>
+      <subscribe>felix-commits-subscribe@incubator.apache.org</subscribe>
+      <unsubscribe>felix-commits-unsubscribe@incubator.apache.org</unsubscribe>
+      <post>-</post>
+      <archive>http://www.mail-archive.com/felix-commits%40incubator.apache.org/</archive>
+    </mailingList>
+  </mailingLists>
+
+  <licenses>
+    <license>
+      <name>The Apache Software License, Version 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+
+  <scm>
+    <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/felix</connection>
+    <developerConnection>scm:svn:http://svn.apache.org/repos/asf/incubator/felix</developerConnection>
+    <url>http://cvs.apache.org/viewcvs.cgi/incubator/felix/?root=Apache-SVN</url>
+  </scm>
+
+  <!-- 
+  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-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>tools/maven2/maven-bundle-plugin</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>bundlerepository</module>
+        <module>log</module>
+        <module>eventadmin</module>
+        <module>eventadmin.bridge.upnp</module>
+        <module>eventadmin.bridge.configuration</module>
+        <module>eventadmin.bridge.useradmin</module>
+        <module>eventadmin.bridge.wireadmin</module>
+      </modules>
+    </profile>
+    
+    <profile>
+      <id>packaging-osgi-bundle</id>
+      <activation>
+        <property>
+          <name>packaging</name>
+          <value>osgi-bundle</value>
+        </property>
+      </activation>
+      <modules>
+        <module>tools/maven2/maven-osgi-plugin</module>
+        <module>shell.gui</module>
+        <module>shell.gui.plugin</module>
+        <module>org.apache.felix.daemon</module>
+        <module>org.apache.felix.dependencymanager</module>
+
+        <module>examples</module>
+
+        <module>servicebinder</module>
+        <module>wireadmin</module>
+        <module>upnp.extra</module>
+        <module>upnp.basedriver</module>
+        <module>upnp.tester</module>
+        <module>upnp.sample.tv</module>
+        <module>upnp.sample.clock</module>
+        <module>upnp.sample.binaryLight</module>
+        <!--    <module>http.jetty</module> -->
+        <module>scr</module>
+
+        <!--    <module>tools/mangen</module> -->
+
+        <module>ipojo</module>
+        <module>ipojo.metadata</module>
+        <module>ipojo.plugin</module>
+      </modules>
+    </profile>
+
+    <profile>
+      <id>osgi-bundle-mosgi</id>
+      <activation>
+        <property>
+          <name>packaging</name>
+          <value>osgi-bundle-mosgi</value>
+        </property>
+        <!--Two activation elements don't AND. <jdk>1.5</jdk>-->
+      </activation>
+      <modules>
+        <module>mosgi.console.ifc</module>
+        <module>mosgi.console.component</module>
+        <module>mosgi.console.gui</module>
+        <module>mosgi.jmx.agent</module>
+        <module>mosgi.jmx.httpconnector</module>
+        <module>mosgi.jmx.registry</module>
+        <module>mosgi.jmx.remotelogger</module>
+        <module>mosgi.jmx.rmiconnector</module>
+        <module>mosgi.managedelements.osgiprobes</module>
+        <module>mosgi.managedelements.osgiprobes.tab</module>
+        <module>mosgi.managedelements.bundlesprobes</module>
+        <module>mosgi.managedelements.bundlesprobes.tab</module>
+        <module>mosgi.managedelements.obrprobe</module>
+        <module>mosgi.managedelements.obrprobe.tab</module>
+        <module>mosgi.managedelements.memoryprobe</module>
+      </modules>
+    </profile>
+  </profiles>
+
+  <!-- Specify a default version number for dependencies -->
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>org.osgi.core</artifactId>
+        <version>0.9.0-incubator-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>org.osgi.compendium</artifactId>
+        <version>0.9.0-incubator-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>org.apache.felix.framework</artifactId>
+        <version>0.9.0-incubator-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>org.apache.felix.bundlerepository</artifactId>
+        <version>0.9.0-incubator-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>org.apache.felix.mosgi.jmx.registry</artifactId>
+        <version>0.9.0-incubator-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>org.apache.felix.mosgi.jmx.agent</artifactId>
+        <version>0.9.0-incubator-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>org.apache.felix.mosgi.console.ifc</artifactId>
+        <version>0.9.0-incubator-SNAPSHOT</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <repositories>
+    <!-- For snapshots (no release jars or non-apache jars)           -->
+    <repository>
+      <id>apache.snapshots</id>
+      <name>Apache Snapshot Repository</name>
+      <url>http://people.apache.org/repo/m2-snapshot-repository</url>
+    </repository>
+  
+    <repository>
+      <id>safehaus</id>
+      <name>Alternate Repository for Missing Ibiblio Artifacts</name>
+      <url>http://m2.safehaus.org</url>
+    </repository>
+  </repositories>
+
+  <distributionManagement>
+    <site>
+      <id>felix website</id>
+      <url>file:///${user.dir}/target/site-deployed/</url>
+    </site>
+    <snapshotRepository>
+      <id>apache.snapshots</id>
+      <name>Apache Snapshot Repository</name>
+      <url>
+        scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository
+      </url>
+    </snapshotRepository>
+    <repository>
+      <name>ASF Mirrored M2 Distributions</name>
+      <id>apache.distributions</id>
+      <url>
+        scp://people.apache.org/www/people.apache.org/repo/m2-incubating-repository
+      </url>
+    </repository>
+  </distributionManagement>
+
+  <pluginRepositories>
+    <pluginRepository>
+      <id>apache.snapshots</id>
+      <name>snapshot plugins</name>
+      <url>
+        http://people.apache.org/repo/m2-snapshot-repository
+      </url>
+    </pluginRepository>
+  </pluginRepositories>
+
+  <!-- definitions for testing -->
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>easymock</groupId>
+      <artifactId>easymock</artifactId>
+      <version>1.2_Java1.3</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <target>1.4</target>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+      </plugin>
+      <!-- plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-report-plugin</artifactId>
+      </plugin -->
+    </plugins>
+  </build>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-site-plugin</artifactId>
+        <configuration>
+          <templateDirectory>${user.dir}/src/site/</templateDirectory>
+          <template>maven-site.vm</template>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>jxr-maven-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>index</report>
+              <report>dependencies</report>
+              <report>project-team</report>
+              <report>mailing-list</report>
+              <report>issue-tracking</report>
+              <report>license</report>
+              <report>scm</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+      <!--plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <configuration>
+          <aggregate>true</aggregate>
+        </configuration> 
+      </plugin-->
+    </plugins>
+  </reporting>
+</project>
