Issue 552: add buildable maven poms

git-svn-id: https://google-guice.googlecode.com/svn/trunk@1305 d779f126-a31b-0410-b53b-1d3aecad763e
diff --git a/core/pom.xml b/core/pom.xml
new file mode 100644
index 0000000..e63e083
--- /dev/null
+++ b/core/pom.xml
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-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>
+
+  <parent>
+    <groupId>com.google.inject</groupId>
+    <artifactId>guice-parent</artifactId>
+    <version>3.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>guice</artifactId>
+
+  <name>Google Guice - Core Library</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>aopalliance</groupId>
+      <artifactId>aopalliance</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.sonatype.sisu.inject</groupId>
+      <artifactId>cglib</artifactId>
+      <version>2.2.1</version>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject-tck</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-beans</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>biz.aQute</groupId>
+      <artifactId>bnd</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.framework</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <includes>
+            <include>**/AllTests.java</include>
+          </includes>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <configuration>
+          <instructions>
+            <Bundle-SymbolicName>com.google.inject</Bundle-SymbolicName>
+            <Import-Package>!*.asm.*,!*.cglib.*,!com.google.inject.*,*</Import-Package>
+          </instructions>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.sonatype.plugins</groupId>
+        <artifactId>munge-maven-plugin</artifactId>
+        <version>1.0</version>
+        <executions>
+          <execution>
+            <phase>prepare-package</phase>
+            <goals>
+              <goal>munge-fork</goal>
+            </goals>
+            <configuration>
+              <symbols>NO_AOP</symbols>
+              <excludes>
+                **/InterceptorBinding.java,
+                **/InterceptorBindingProcessor.java,
+                **/InterceptorStackCallback.java,
+                **/LineNumbers.java,
+                **/MethodAspect.java,
+                **/ProxyFactory.java,
+                **/BytecodeGenTest.java,
+                **/IntegrationTest.java,
+                **/MethodInterceptionTest.java,
+                **/ProxyFactoryTest.java
+              </excludes>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <archive>
+                <manifestFile>target/munged/classes/META-INF/MANIFEST.MF</manifestFile>
+              </archive>
+              <classesDirectory>target/munged/classes</classesDirectory>
+              <classifier>noaop</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.sonatype.plugins</groupId>
+        <artifactId>jarjar-maven-plugin</artifactId>
+        <version>1.2</version>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>jarjar</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>asm:asm</include>
+                <include>org.sonatype.sisu.inject:cglib</include>
+              </includes>
+              <rules>
+                <rule>
+                  <pattern>org.objectweb.asm.**</pattern>
+                  <result>com.google.inject.internal.asm.@1</result>
+                </rule>
+                <rule>
+                  <pattern>net.sf.cglib.**</pattern>
+                  <result>com.google.inject.internal.cglib.@1</result>
+                </rule>
+                <keep>
+                  <pattern>com.google.inject.**</pattern>
+                </keep>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/extensions/assistedinject/pom.xml b/extensions/assistedinject/pom.xml
index c2a543a..745d6b4 100644
--- a/extensions/assistedinject/pom.xml
+++ b/extensions/assistedinject/pom.xml
@@ -1,21 +1,16 @@
-<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">
+<?xml version="1.0" encoding="UTF-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>
+
   <parent>
     <groupId>com.google.inject.extensions</groupId>
     <artifactId>extensions-parent</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
-  <artifactId>guice-assisted-inject</artifactId>
-  <packaging>jar</packaging>
-  <name>Google Guice - Extension: Assisted Inject</name>
-  <description>An easier way to help the Guice Injector build objects</description>
-  <!-- Note: this pom is for dependency management only.  It will not build the project -->
-  <dependencies>
-    <dependency>
-      <groupId>com.google.inject</groupId>
-      <artifactId>guice</artifactId>
-    </dependency>
-  </dependencies>
+
+  <artifactId>guice-assistedinject</artifactId>
+
+  <name>Google Guice - Extensions - AssistedInject</name>
+
 </project>
diff --git a/extensions/grapher/pom.xml b/extensions/grapher/pom.xml
index 5c94020..015db56 100644
--- a/extensions/grapher/pom.xml
+++ b/extensions/grapher/pom.xml
@@ -1,21 +1,35 @@
-<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">
+<?xml version="1.0" encoding="UTF-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>
+
   <parent>
     <groupId>com.google.inject.extensions</groupId>
     <artifactId>extensions-parent</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
+
   <artifactId>guice-grapher</artifactId>
-  <packaging>jar</packaging>
-  <name>Google Guice - Extension: Grapher</name>
-  <description>A tool to visualize Guice applications</description>
-  <!-- Note: this pom is for dependency management only.  It will not build the project -->
+
+  <name>Google Guice - Extensions - Grapher</name>
+
   <dependencies>
     <dependency>
-      <groupId>com.google.inject</groupId>
-      <artifactId>guice</artifactId>
+      <groupId>com.google.inject.extensions</groupId>
+      <artifactId>guice-assistedinject</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.inject.extensions</groupId>
+      <artifactId>guice-multibindings</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.easymock</groupId>
+      <artifactId>easymock</artifactId>
+      <version>3.0</version>
+      <scope>test</scope>
     </dependency>
   </dependencies>
+
 </project>
diff --git a/extensions/jmx/pom.xml b/extensions/jmx/pom.xml
index 7a28ecf..d8188ca 100644
--- a/extensions/jmx/pom.xml
+++ b/extensions/jmx/pom.xml
@@ -1,21 +1,16 @@
-<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">
+<?xml version="1.0" encoding="UTF-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>
+
   <parent>
     <groupId>com.google.inject.extensions</groupId>
     <artifactId>extensions-parent</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
+
   <artifactId>guice-jmx</artifactId>
-  <packaging>jar</packaging>
-  <name>Google Guice - Extension: JMX</name>
-  <description>Tools for using Guice with Java Management Extensions</description>
-  <!-- Note: this pom is for dependency management only.  It will not build the project -->
-  <dependencies>
-    <dependency>
-      <groupId>com.google.inject</groupId>
-      <artifactId>guice</artifactId>
-    </dependency>
-  </dependencies>
+
+  <name>Google Guice - Extensions - JMX</name>
+
 </project>
diff --git a/extensions/jndi/pom.xml b/extensions/jndi/pom.xml
index fc0dd9f..ff04c5f 100644
--- a/extensions/jndi/pom.xml
+++ b/extensions/jndi/pom.xml
@@ -1,21 +1,16 @@
-<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">
+<?xml version="1.0" encoding="UTF-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>
+
   <parent>
     <groupId>com.google.inject.extensions</groupId>
     <artifactId>extensions-parent</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
+
   <artifactId>guice-jndi</artifactId>
-  <packaging>jar</packaging>
-  <name>Google Guice - Extension: JNDI</name>
-  <description>Tools for using Guice with the Java Naming and Directory Interface</description>
-  <!-- Note: this pom is for dependency management only.  It will not build the project -->
-  <dependencies>
-    <dependency>
-      <groupId>com.google.inject</groupId>
-      <artifactId>guice</artifactId>
-    </dependency>
-  </dependencies>
+
+  <name>Google Guice - Extensions - JNDI</name>
+
 </project>
diff --git a/extensions/mini/pom.xml b/extensions/mini/pom.xml
new file mode 100644
index 0000000..3fa7032
--- /dev/null
+++ b/extensions/mini/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-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>
+
+  <parent>
+    <groupId>com.google.inject.extensions</groupId>
+    <artifactId>extensions-parent</artifactId>
+    <version>3.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>guice-mini</artifactId>
+
+  <name>Google Guice - Extensions - Mini</name>
+
+</project>
diff --git a/extensions/multibindings/pom.xml b/extensions/multibindings/pom.xml
index 55a2fd8..b49283c 100644
--- a/extensions/multibindings/pom.xml
+++ b/extensions/multibindings/pom.xml
@@ -1,21 +1,16 @@
-<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">
+<?xml version="1.0" encoding="UTF-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>
+
   <parent>
     <groupId>com.google.inject.extensions</groupId>
     <artifactId>extensions-parent</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
+
   <artifactId>guice-multibindings</artifactId>
-  <packaging>jar</packaging>
-  <name>Google Guice - Extension: Multibindings</name>
-  <description>Tools injecting collections of bound values</description>
-  <!-- Note: this pom is for dependency management only.  It will not build the project -->
-  <dependencies>
-    <dependency>
-      <groupId>com.google.inject</groupId>
-      <artifactId>guice</artifactId>
-    </dependency>
-  </dependencies>
+
+  <name>Google Guice - Extensions - MultiBindings</name>
+
 </project>
diff --git a/extensions/persist/pom.xml b/extensions/persist/pom.xml
index 1815bc0..92c8e9a 100644
--- a/extensions/persist/pom.xml
+++ b/extensions/persist/pom.xml
@@ -1,36 +1,59 @@
-<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">
+<?xml version="1.0" encoding="UTF-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>
+
   <parent>
     <groupId>com.google.inject.extensions</groupId>
     <artifactId>extensions-parent</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
+
   <artifactId>guice-persist</artifactId>
-  <packaging>jar</packaging>
-  <name>Google Guice - Extension: Persist</name>
-  <description>Tools for integrating with JPA</description>
-  <!-- Note: this pom is for dependency management only.  It will not build the project -->
+
+  <name>Google Guice - Extensions - Persist</name>
+
   <dependencies>
     <dependency>
-      <groupId>com.google.inject</groupId>
-      <artifactId>guice</artifactId>
-    </dependency>
-    <dependency>
       <groupId>javax.persistence</groupId>
       <artifactId>persistence-api</artifactId>
       <version>1.0</version>
     </dependency>
-
-    <!-- guice-persist depends on guice-servlet to implement request-scoped units of work. -->
     <dependency>
-      <groupId>com.google.inject.extensions</groupId>
-      <artifactId>guice-servlet</artifactId>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <version>1.6.1</version>
     </dependency>
     <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
+      <version>2.5</version>
+    </dependency>
+    <dependency>
+      <groupId>org.hibernate</groupId>
+      <artifactId>hibernate-entitymanager</artifactId>
+      <version>3.4.0.GA</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.hsqldb</groupId>
+      <artifactId>hsqldb-j5</artifactId>
+      <version>2.0.0</version>
+      <scope>test</scope>
     </dependency>
   </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <excludes>
+            <exclude>**/DynamicFinderTest.java</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
 </project>
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 0958e86..d64fae7 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -1,41 +1,65 @@
-<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">
+<?xml version="1.0" encoding="UTF-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>
+
   <parent>
     <groupId>com.google.inject</groupId>
     <artifactId>guice-parent</artifactId>
     <version>3.0-SNAPSHOT</version>
-    <relativePath>../guice-parent/pom.xml</relativePath>
   </parent>
+
+  <packaging>pom</packaging>
+
   <groupId>com.google.inject.extensions</groupId>
   <artifactId>extensions-parent</artifactId>
-  <packaging>pom</packaging>
+
   <name>Google Guice - Extensions</name>
-  <description>A collection of extensions to Guice</description>
-  <dependencyManagement>
-     <dependencies>
-       <dependency>
-         <groupId>com.google.inject.extensions</groupId>
-         <artifactId>guice-assisted-inject</artifactId>
-         <version>${version}</version>
-       </dependency>
-       <dependency>
-         <groupId>com.google.inject.extensions</groupId>
-         <artifactId>guice-multibindings</artifactId>
-         <version>${version}</version>
-       </dependency>
-       <dependency>
-         <groupId>com.google.inject.extensions</groupId>
-         <artifactId>guice-servlet</artifactId>
-         <version>${version}</version>
-       </dependency>
-       <dependency>
-         <groupId>javax.servlet</groupId>
-         <artifactId>servlet-api</artifactId>
-         <version>2.5</version>
-         <scope>provided</scope>
-       </dependency>
-     </dependencies>
-   </dependencyManagement>
+
+  <modules>
+    <module>assistedinject</module>
+    <module>grapher</module>
+    <module>jmx</module>
+    <module>jndi</module>
+    <module>multibindings</module>
+    <module>persist</module>
+    <module>servlet</module>
+    <module>spring</module>
+    <module>struts2</module>
+    <module>throwingproviders</module>
+<!--
+    <module>mini</module>
+    <module>service</module>
+-->
+  </modules>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.google.inject</groupId>
+      <artifactId>guice</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.inject</groupId>
+      <artifactId>guice</artifactId>
+      <version>${project.version}</version>
+      <classifier>tests</classifier>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <configuration>
+          <instructions>
+            <Fragment-Host>com.google.inject</Fragment-Host>
+          </instructions>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
 </project>
diff --git a/extensions/service/pom.xml b/extensions/service/pom.xml
new file mode 100644
index 0000000..71dfece
--- /dev/null
+++ b/extensions/service/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-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>
+
+  <parent>
+    <groupId>com.google.inject.extensions</groupId>
+    <artifactId>extensions-parent</artifactId>
+    <version>3.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>guice-service</artifactId>
+
+  <name>Google Guice - Extensions - Service</name>
+
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <skipTests>true</skipTests>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/extensions/servlet/pom.xml b/extensions/servlet/pom.xml
index 14aabfe..2f88546 100644
--- a/extensions/servlet/pom.xml
+++ b/extensions/servlet/pom.xml
@@ -1,25 +1,30 @@
-<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">
+<?xml version="1.0" encoding="UTF-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>
+
   <parent>
     <groupId>com.google.inject.extensions</groupId>
     <artifactId>extensions-parent</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
+
   <artifactId>guice-servlet</artifactId>
-  <packaging>jar</packaging>
-  <name>Google Guice - Extension: Servlet</name>
-  <description>Guice integration with servlets</description>
-  <!-- Note: this pom is for dependency management only.  It will not build the project -->
+
+  <name>Google Guice - Extensions - Servlet</name>
+
   <dependencies>
     <dependency>
-      <groupId>com.google.inject</groupId>
-      <artifactId>guice</artifactId>
-    </dependency>
-    <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
+      <version>2.5</version>
+    </dependency>
+    <dependency>
+      <groupId>org.easymock</groupId>
+      <artifactId>easymock</artifactId>
+      <version>3.0</version>
+      <scope>test</scope>
     </dependency>
   </dependencies>
+
 </project>
diff --git a/extensions/spring/pom.xml b/extensions/spring/pom.xml
index 6d37f49..c0fc7a5 100644
--- a/extensions/spring/pom.xml
+++ b/extensions/spring/pom.xml
@@ -1,26 +1,23 @@
-<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">
+<?xml version="1.0" encoding="UTF-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>
+
   <parent>
     <groupId>com.google.inject.extensions</groupId>
     <artifactId>extensions-parent</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
+
   <artifactId>guice-spring</artifactId>
-  <packaging>jar</packaging>
-  <name>Google Guice - Extension: Spring</name>
-  <description>Guice integration with the Spring container</description>
-  <!-- Note: this pom is for dependency management only.  It will not build the project -->
+
+  <name>Google Guice - Extensions - Spring</name>
+
   <dependencies>
     <dependency>
-      <groupId>com.google.inject</groupId>
-      <artifactId>guice</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-beans</artifactId>
-      <version>2.0.6</version>
     </dependency>
   </dependencies>
+
 </project>
diff --git a/extensions/struts2/pom.xml b/extensions/struts2/pom.xml
index 162ae0f..6c6bc27 100644
--- a/extensions/struts2/pom.xml
+++ b/extensions/struts2/pom.xml
@@ -1,35 +1,29 @@
-<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">
+<?xml version="1.0" encoding="UTF-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>
+
   <parent>
     <groupId>com.google.inject.extensions</groupId>
     <artifactId>extensions-parent</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
-  <artifactId>guice-struts2-plugin</artifactId>
-  <packaging>jar</packaging>
-  <name>Google Guice - Extension: Struts2 Plugin</name>
-  <description>Guice integration with Struts2 as a plugin</description>
-  <!-- Note: this pom is for dependency management only.  It will not build the project -->
+
+  <artifactId>guice-struts2</artifactId>
+
+  <name>Google Guice - Extensions - Struts2</name>
+
   <dependencies>
     <dependency>
-      <groupId>com.google.inject</groupId>
-      <artifactId>guice</artifactId>
-    </dependency>
-    <dependency>
       <groupId>com.google.inject.extensions</groupId>
       <artifactId>guice-servlet</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>opensymphony</groupId>
-      <artifactId>xwork</artifactId>
-      <version>2.0.0</version>
+      <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.struts</groupId>
       <artifactId>struts2-core</artifactId>
-      <version>2.0.5</version>
+      <version>2.2.1</version>
     </dependency>
   </dependencies>
+
 </project>
diff --git a/extensions/throwingproviders/pom.xml b/extensions/throwingproviders/pom.xml
index 83bac69..bd67158 100644
--- a/extensions/throwingproviders/pom.xml
+++ b/extensions/throwingproviders/pom.xml
@@ -1,21 +1,16 @@
-<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">
+<?xml version="1.0" encoding="UTF-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>
+
   <parent>
     <groupId>com.google.inject.extensions</groupId>
     <artifactId>extensions-parent</artifactId>
     <version>3.0-SNAPSHOT</version>
   </parent>
-  <artifactId>guice-throwing-providers</artifactId>
-  <packaging>jar</packaging>
-  <name>Google Guice - Extension: Throwing Providers</name>
-  <description>Providers that throw checked exceptions</description>
-  <!-- Note: this pom is for dependency management only.  It will not build the project -->
-  <dependencies>
-    <dependency>
-      <groupId>com.google.inject</groupId>
-      <artifactId>guice</artifactId>
-    </dependency>
-  </dependencies>
+
+  <artifactId>guice-throwingproviders</artifactId>
+
+  <name>Google Guice - Extensions - ThrowingProviders</name>
+
 </project>
diff --git a/guice-parent/pom.xml b/guice-parent/pom.xml
deleted file mode 100644
index a7103c6..0000000
--- a/guice-parent/pom.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<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>com.google</groupId>
-    <artifactId>google</artifactId>
-    <version>1</version>
-  </parent>
-  <groupId>com.google.inject</groupId>
-  <artifactId>guice-parent</artifactId>
-  <packaging>pom</packaging>
-  <version>3.0-SNAPSHOT</version>
-  <name>Google Guice</name>
-  <description>Guice (pronounced 'juice') is a lightweight dependency injection
-      framework for Java 5 and above, brought to you by Google.</description>
-  <url>http://code.google.com/p/google-guice/</url>
-  <inceptionYear>2006</inceptionYear>
-  <issueManagement>
-    <system>Google Code</system>
-    <url>http://code.google.com/p/google-guice/issues/</url>
-  </issueManagement>
-  <mailingLists>
-    <mailingList>
-      <name>google-guice</name>
-      <archive>http://groups.google.com/group/google-guice/topics</archive>
-      <subscribe>http://groups.google.com/group/google-guice/subscribe</subscribe>
-      <unsubscribe>http://groups.google.com/group/google-guice/subscribe</unsubscribe>
-      <post>http://groups.google.com/group/google-guice/post</post>
-    </mailingList>
-    <mailingList>
-      <name>google-guice-dev</name>
-      <archive>http://groups.google.com/group/google-guice-dev/topics</archive>
-      <subscribe>http://groups.google.com/group/google-guice-dev/subscribe</subscribe>
-      <unsubscribe>http://groups.google.com/group/google-guice-dev/subscribe</unsubscribe>
-      <post>http://groups.google.com/group/google-guice-dev/post</post>
-    </mailingList>
-  </mailingLists>
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>com.google.inject</groupId>
-        <artifactId>guice</artifactId>
-        <version>${version}</version>
-      </dependency>
-      <dependency>
-        <groupId>aopalliance</groupId>
-        <artifactId>aopalliance</artifactId>
-        <version>1.0</version>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-  <scm>
-    <url>http://code.google.com/p/google-guice/source/browse/</url>
-  </scm>
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <artifactId>maven-compiler-plugin</artifactId>
-          <configuration>
-            <source>1.5</source>
-            <target>1.5</target>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
-</project>
diff --git a/pom.xml b/pom.xml
index 79326a3..63310fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,30 +1,296 @@
-<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>com.google.inject</groupId>
-    <artifactId>guice-parent</artifactId>
-    <version>3.0-SNAPSHOT</version>
-    <relativePath>guice-parent/pom.xml</relativePath>
-  </parent>
-  <artifactId>guice</artifactId>
-  <packaging>jar</packaging>
-  <name>Google Guice: Core</name>
-  <!-- Note: this pom is for dependency management only.  It will not build the project -->
-  <dependencies>
-    <!-- CGLib is not listed because it has been repackaged with JarJar -->
-    <dependency>
-      <groupId>aopalliance</groupId>
-      <artifactId>aopalliance</artifactId>
-    </dependency>
+<?xml version="1.0" encoding="UTF-8"?>
 
-    <!-- Not optional, even in pure-Guice, no JSR 330 applications:
-    javax.inject.Provider is referenced in Guice code. -->
+<!--
+Copyright (c) 2006 Google, Inc. All rights reserved.
+
+This program is licensed to you under the Apache License Version 2.0,
+and you may not use this file except in compliance with the Apache License Version 2.0.
+You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the Apache License Version 2.0 is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
+-->
+
+<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>com.google</groupId>
+    <artifactId>google</artifactId>
+    <version>5</version>
+  </parent>
+
+  <packaging>pom</packaging>
+
+  <groupId>com.google.inject</groupId>
+  <artifactId>guice-parent</artifactId>
+  <version>3.0-SNAPSHOT</version>
+
+  <name>Google Guice</name>
+
+  <description>
+    Guice is a lightweight dependency injection framework for Java 5 and above
+  </description>
+
+  <url>http://code.google.com/p/google-guice/</url>
+  <inceptionYear>2006</inceptionYear>
+
+  <organization>
+    <name>Google, Inc.</name>
+    <url>http://www.google.com</url>
+  </organization>
+
+  <mailingLists>
+    <mailingList>
+      <name>Guice Users List</name>
+      <archive>http://groups.google.com/group/google-guice/topics</archive>
+      <subscribe>http://groups.google.com/group/google-guice/subscribe</subscribe>
+      <unsubscribe>http://groups.google.com/group/google-guice/subscribe</unsubscribe>
+      <post>http://groups.google.com/group/google-guice/post</post>
+    </mailingList>
+    <mailingList>
+      <name>Guice Developers List</name>
+      <archive>http://groups.google.com/group/google-guice-dev/topics</archive>
+      <subscribe>http://groups.google.com/group/google-guice-dev/subscribe</subscribe>
+      <unsubscribe>http://groups.google.com/group/google-guice-dev/subscribe</unsubscribe>
+      <post>http://groups.google.com/group/google-guice-dev/post</post>
+    </mailingList>
+  </mailingLists>
+
+  <scm>
+    <connection>scm:svn:http://google-guice.googlecode.com/svn/trunk</connection>
+    <developerConnection>scm:svn:https://google-guice.googlecode.com/svn/trunk</developerConnection>
+    <url>http://code.google.com/p/google-guice/source/browse</url>
+  </scm>
+
+  <issueManagement>
+    <system>Google Code</system>
+    <url>http://code.google.com/p/google-guice/issues/</url>
+  </issueManagement>
+
+  <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>
+
+  <modules>
+    <module>core</module>
+    <module>extensions</module>
+  </modules>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <guice.api.version>1.3</guice.api.version>
+  </properties>
+
+  <dependencies>
     <dependency>
-      <groupId>javax.inject</groupId>
-      <artifactId>javax.inject</artifactId>
-      <version>1</version>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
     </dependency>
   </dependencies>
+
+  <dependencyManagement>
+    <dependencies>
+
+      <dependency>
+        <groupId>biz.aQute</groupId>
+        <artifactId>bnd</artifactId>
+        <version>0.0.384</version>
+      </dependency>
+
+      <dependency>
+        <groupId>javax.inject</groupId>
+        <artifactId>javax.inject</artifactId>
+        <version>1</version>
+      </dependency>
+      <dependency>
+        <groupId>javax.inject</groupId>
+        <artifactId>javax.inject-tck</artifactId>
+        <version>1</version>
+      </dependency>
+      <dependency>
+        <groupId>aopalliance</groupId>
+        <artifactId>aopalliance</artifactId>
+        <version>1.0</version>
+      </dependency>
+
+      <dependency>
+        <groupId>asm</groupId>
+        <artifactId>asm</artifactId>
+        <version>3.1</version>
+      </dependency>
+
+      <dependency>
+        <groupId>org.osgi</groupId>
+        <artifactId>org.osgi.core</artifactId>
+        <version>4.2.0</version>
+      </dependency>
+      <dependency>
+        <groupId>org.osgi</groupId>
+        <artifactId>org.osgi.compendium</artifactId>
+        <version>4.2.0</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>org.apache.felix.framework</artifactId>
+        <version>3.0.2</version>
+      </dependency>
+
+      <dependency>
+        <groupId>org.springframework</groupId>
+        <artifactId>spring-beans</artifactId>
+        <version>2.5.6</version>
+      </dependency>
+
+      <dependency>
+        <groupId>junit</groupId>
+        <artifactId>junit</artifactId>
+        <version>3.8.2</version>
+      </dependency>
+
+    </dependencies>
+  </dependencyManagement>
+
+  <build>
+    <sourceDirectory>${project.basedir}/src</sourceDirectory>
+    <resources>
+      <resource>
+        <filtering>false</filtering>
+        <directory>${project.basedir}/src</directory>
+        <excludes>
+          <exclude>**/*.java</exclude>
+        </excludes>
+      </resource>
+    </resources>
+    <testSourceDirectory>${project.basedir}/test</testSourceDirectory>
+    <testResources>
+      <testResource>
+        <filtering>false</filtering>
+        <directory>${project.basedir}/test</directory>
+        <excludes>
+          <exclude>**/*.java</exclude>
+        </excludes>
+      </testResource>
+    </testResources>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>2.3.2</version>
+        </plugin>
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>animal-sniffer-maven-plugin</artifactId>
+          <version>1.6</version>
+          <configuration>
+            <signature>
+              <groupId>org.codehaus.mojo.signature</groupId>
+              <artifactId>java15</artifactId>
+              <version>1.0</version>
+            </signature>
+          </configuration>
+          <executions>
+            <execution>
+              <id>check-java-1.5-compat</id>
+              <phase>process-classes</phase>
+              <goals>
+                <goal>check</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+        <plugin>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <version>2.6</version>
+          <configuration>
+            <redirectTestOutputToFile>true</redirectTestOutputToFile>
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.felix</groupId>
+          <artifactId>maven-bundle-plugin</artifactId>
+          <version>2.1.0</version>
+          <configuration>
+            <instructions>
+              <Bundle-Copyright>Copyright (C) 2006 Google Inc.</Bundle-Copyright>
+              <Bundle-DocURL>http://code.google.com/p/google-guice/</Bundle-DocURL>
+              <Bundle-RequiredExecutionEnvironment>
+                J2SE-1.5,JavaSE-1.6
+              </Bundle-RequiredExecutionEnvironment>
+              <Import-Package>!com.google.inject.*,*</Import-Package>
+              <_exportcontents>!*.internal.*,com.google.inject.*;version=${guice.api.version}</_exportcontents>
+              <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
+              <_nouses>true</_nouses>
+              <_removeheaders>
+                Embed-Dependency,Embed-Transitive,
+                Built-By,Tool,Created-By,Build-Jdk,
+                Originally-Created-By,Archiver-Version,
+                Include-Resource,Private-Package,
+                Ignore-Package,Bnd-LastModified
+              </_removeheaders>
+            </instructions>
+          </configuration>
+          <executions>
+            <execution>
+              <phase>prepare-package</phase>
+              <goals>
+                <goal>manifest</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+        <plugin>
+          <artifactId>maven-jar-plugin</artifactId>
+          <version>2.3.1</version>
+          <configuration>
+            <archive>
+              <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+            </archive>
+          </configuration>
+          <executions>
+            <execution>
+              <phase>package</phase>
+              <goals>
+                <goal>test-jar</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+        <plugin>
+          <artifactId>maven-javadoc-plugin</artifactId>
+          <version>2.7</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-source-plugin</artifactId>
+          <version>2.1.2</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-gpg-plugin</artifactId>
+          <version>1.1</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-release-plugin</artifactId>
+          <version>2.1</version>
+          <configuration>
+            <autoVersionSubmodules>true</autoVersionSubmodules>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>animal-sniffer-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+
 </project>