diff --git a/tools/maven2/felix-archetype/pom.xml b/tools/maven2/felix-archetype/pom.xml
new file mode 100644
index 0000000..d0d4e5d
--- /dev/null
+++ b/tools/maven2/felix-archetype/pom.xml
@@ -0,0 +1,8 @@
+<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>
+  <groupId>org.apache.felix.archetypes</groupId>
+  <artifactId>felix-archetype</artifactId>
+  <packaging>maven-plugin</packaging>
+  <version>1.0</version>
+</project>
diff --git a/tools/maven2/felix-archetype/src/main/resources/META-INF/archetype.xml b/tools/maven2/felix-archetype/src/main/resources/META-INF/archetype.xml
new file mode 100644
index 0000000..73b3df3
--- /dev/null
+++ b/tools/maven2/felix-archetype/src/main/resources/META-INF/archetype.xml
@@ -0,0 +1,6 @@
+<archetype>
+  <id>felix-archetype</id>
+  <sources>
+    <source>src/main/java/Activator.java</source>
+  </sources>
+</archetype>
\ No newline at end of file
diff --git a/tools/maven2/felix-archetype/src/main/resources/archetype-resources/pom.xml b/tools/maven2/felix-archetype/src/main/resources/archetype-resources/pom.xml
new file mode 100644
index 0000000..e9a8ddd
--- /dev/null
+++ b/tools/maven2/felix-archetype/src/main/resources/archetype-resources/pom.xml
@@ -0,0 +1,71 @@
+<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>
+  <groupId>${groupId}</groupId>
+  <artifactId>${artifactId}</artifactId>
+  <packaging>osgi-bundle</packaging>
+  <version>${version}</version>
+  <name>Simple Bundle Project</name>
+  <url>http://incubator.apache.org/felix</url>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.osgi.core</artifactId>
+      <version>0.8.0-SNAPSHOT</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <!-- Uncomment to override default bundle jar naming convention
+    <finalName>my-bundle</finalName>
+    -->
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix.plugins</groupId>
+        <artifactId>maven-felix-plugin</artifactId>
+        <executions>
+          <execution>
+             <id>run</id>
+             <configuration>
+               <felixCacheDir>${basedir}/target/.felix</felixCacheDir>
+               <exclusions>
+                 <exclusion>junit:junit</exclusion>
+               </exclusions>
+             </configuration>
+             <goals>
+               <goal>run</goal>
+             </goals>
+          </execution>
+        </executions>
+      </plugin>
+    
+      <plugin>
+        <groupId>org.apache.felix.plugins</groupId>
+        <artifactId>maven-osgi-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <!-- Uncomment to specify a manifest file to merge
+          <manifestFile>path/to/manifest.mf</manifestFile>
+          -->
+          <osgiManifest>
+            <bundleName>Simple Bundle</bundleName>
+            <bundleActivator>${groupId}.Activator</bundleActivator>
+            <bundleVendor>Apache Software Foundation</bundleVendor>
+            <importBundle>
+              ${groupId}
+            </importBundle>
+          </osgiManifest>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
diff --git a/tools/maven2/felix-archetype/src/main/resources/archetype-resources/src/main/java/Activator.java b/tools/maven2/felix-archetype/src/main/resources/archetype-resources/src/main/java/Activator.java
new file mode 100644
index 0000000..f8b93c1
--- /dev/null
+++ b/tools/maven2/felix-archetype/src/main/resources/archetype-resources/src/main/java/Activator.java
@@ -0,0 +1,94 @@
+/*
+ *   Copyright 2006 The Apache Software Foundation
+ *
+ *   Licensed 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.
+ *
+ */
+package ${groupId};
+
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+
+
+/**
+ * This class implements a simple bundle that utilizes the OSGi
+ * framework's event mechanism to listen for service events.
+ *
+ * Upon receiving a service event, it prints out the event's details.
+ */
+public class Activator implements BundleActivator, ServiceListener 
+{
+    /**
+     * Put your bundle initialization code here...
+     *
+	 * Implements <code>BundleActivator.start()</code>. Prints a message
+     * and adds itself to the bundle context as a service listener.
+     *
+     * @param bundleContext the framework context for the bundle
+     * @throws Exception
+     */
+    public void start( BundleContext bundleContext ) throws Exception 
+    {
+        System.out.println( "Starting to listen for service events." );
+        bundleContext.addServiceListener( this );
+    }
+
+    
+    /**
+     * Put your bundle finalization code here...
+     *
+     * Implements <code>BundleActivator.stop()</code>. Prints a message
+     * and removes itself from the bundle context as a service listener.
+     *
+     * @param bundleContext the framework context for the bundle
+     * @throws Exception
+     */
+    public void stop( BundleContext bundleContext ) throws Exception 
+    {
+        bundleContext.removeServiceListener( this );
+        System.out.println( "Stopped listening for service events." );
+
+        // Note: It is not required that we remove the listener here, since
+        // the framework will do it automatically anyway.
+    }
+
+    
+    /**
+     * Implements <code>ServiceListener.serviceChanges()</code>. Prints the
+     * details of any service event from the framework.
+     *
+     * @param event the fired service event
+     */
+    public void serviceChanged( ServiceEvent event ) 
+    {
+        String[] objectClass = ( String[] ) event.getServiceReference().getProperty( "objectClass" );
+        
+        switch( event.getType() )
+        {
+            case( ServiceEvent.REGISTERED ):
+                System.out.println( "SimpleBundle: Service of type " + objectClass[0] + " registered." );
+                break;
+            case( ServiceEvent.UNREGISTERED ):
+                System.out.println( "SimpleBundle: Service of type " + objectClass[0] + " unregistered." );
+                break;
+            case( ServiceEvent.MODIFIED ):
+                System.out.println( "SimpleBundle: Service of type " + objectClass[0] + " modified." );
+                break;
+            default:
+                break;
+        }
+    }
+}
diff --git a/tools/maven2/osgi-archetype/src/main/resources/archetype-resources/pom.xml b/tools/maven2/osgi-archetype/src/main/resources/archetype-resources/pom.xml
index e9f3898..a723a26 100644
--- a/tools/maven2/osgi-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/tools/maven2/osgi-archetype/src/main/resources/archetype-resources/pom.xml
@@ -7,6 +7,16 @@
   <version>${version}</version>
   <name>Simple Bundle Project</name>
   <url>http://incubator.apache.org/felix</url>
+  
+  <dependencies>
+    <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi</artifactId>
+      <version>3.0</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+
   <build>
     <!--
     ***********************************************************
@@ -19,7 +29,7 @@
         <groupId>org.apache.felix.plugins</groupId>
         <artifactId>maven-osgi-plugin</artifactId>
         <extensions>true</extensions>
-        <version>0.3.0</version>
+        <version>0.8.0-SNAPSHOT</version>
         <configuration>
           <!--
           *************************************************
@@ -38,17 +48,12 @@
             <bundleName>Simple Bundle</bundleName>
             <bundleActivator>${groupId}.Activator</bundleActivator>
             <bundleVendor>Apache Software Foundation</bundleVendor>
+            <importPackage>
+              ${groupId}
+            </importPackage>
           </osgiManifest>
         </configuration>
       </plugin>
     </plugins>
   </build>
-  <dependencies>
-    <dependency>
-      <groupId>org.osgi</groupId>
-      <artifactId>org.osgi</artifactId>
-      <version>3.0</version>
-      <scope>provided</scope>
-    </dependency>
-  </dependencies>
 </project>
\ No newline at end of file
