1<?xml version="1.0" encoding="UTF-8"?>
2<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">
3
4  <modelVersion>4.0.0</modelVersion>
5
6  <parent>
7    <groupId>com.google.inject</groupId>
8    <artifactId>guice-parent</artifactId>
9    <version>4.0</version>
10  </parent>
11
12  <artifactId>guice</artifactId>
13
14  <name>Google Guice - Core Library</name>
15
16  <dependencies>
17    <dependency>
18      <groupId>javax.inject</groupId>
19      <artifactId>javax.inject</artifactId>
20    </dependency>
21    <dependency>
22      <groupId>aopalliance</groupId>
23      <artifactId>aopalliance</artifactId>
24    </dependency>
25    <dependency>
26      <groupId>com.google.guava</groupId>
27      <artifactId>guava</artifactId>
28    </dependency>
29    <!--
30     | CGLIB is embedded by default by the JarJar build profile
31    -->
32    <dependency>
33      <groupId>org.ow2.asm</groupId>
34      <artifactId>asm</artifactId>
35      <optional>true</optional>
36    </dependency>
37    <dependency>
38      <groupId>cglib</groupId>
39      <artifactId>cglib</artifactId>
40      <optional>true</optional>
41    </dependency>
42    <!--
43     | Test dependencies
44    -->
45    <dependency>
46      <groupId>javax.inject</groupId>
47      <artifactId>javax.inject-tck</artifactId>
48      <scope>test</scope>
49    </dependency>
50    <dependency>
51      <groupId>com.google.guava</groupId>
52      <artifactId>guava-testlib</artifactId>
53      <scope>test</scope>
54    </dependency>
55    <dependency>
56      <groupId>org.springframework</groupId>
57      <artifactId>spring-beans</artifactId>
58      <version>3.0.5.RELEASE</version>
59      <scope>test</scope>
60    </dependency>
61    <dependency>
62      <groupId>biz.aQute</groupId>
63      <artifactId>bnd</artifactId>
64      <version>0.0.384</version>
65      <scope>test</scope>
66    </dependency>
67    <dependency>
68      <groupId>org.apache.felix</groupId>
69      <artifactId>org.apache.felix.framework</artifactId>
70      <version>3.0.5</version>
71      <scope>test</scope>
72    </dependency>
73  </dependencies>
74
75  <build>
76    <plugins>
77      <!--
78       | Add standard LICENSE and NOTICE files
79      -->
80      <plugin>
81        <artifactId>maven-remote-resources-plugin</artifactId>
82      </plugin>
83      <!--
84       | Enable Java6 conformance checks
85      -->
86      <plugin>
87        <groupId>org.codehaus.mojo</groupId>
88        <artifactId>animal-sniffer-maven-plugin</artifactId>
89      </plugin>
90      <plugin>
91        <artifactId>maven-surefire-plugin</artifactId>
92        <configuration>
93          <!--
94           | Temporarily excluded tests
95          -->
96          <excludes>
97            <exclude>**/*$*</exclude>
98            <exclude>**/ErrorHandlingTest*</exclude>
99            <exclude>**/OSGiContainerTest*</exclude>
100            <exclude>**/ScopesTest*</exclude>
101            <exclude>**/TypeConversionTest*</exclude>
102          </excludes>
103        </configuration>
104      </plugin>
105      <!--
106       | Add OSGi manifest
107      -->
108      <plugin>
109        <groupId>org.apache.felix</groupId>
110        <artifactId>maven-bundle-plugin</artifactId>
111        <configuration>
112          <instructions>
113            <Bundle-Name>${project.artifactId}$(if;$(classes;NAMED;*.MethodAspect);; (no_aop))</Bundle-Name>
114            <Import-Package>!net.sf.cglib.*,!org.objectweb.asm.*,!com.google.inject.*,*</Import-Package>
115            <Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
116          </instructions>
117        </configuration>
118      </plugin>
119      <!--
120       | Remove duplicate jarjar'd LICENSE and NOTICE
121      -->
122      <plugin>
123        <artifactId>maven-jar-plugin</artifactId>
124        <configuration>
125          <excludes>
126            <exclude>LICENSE</exclude>
127            <exclude>NOTICE</exclude>
128          </excludes>
129        </configuration>
130      </plugin>
131      <!--
132       | Generate sources jar
133      -->
134      <plugin>
135        <artifactId>maven-source-plugin</artifactId>
136      </plugin>
137      <!--
138       | Generate javadoc jar
139      -->
140      <plugin>
141        <artifactId>maven-javadoc-plugin</artifactId>
142      </plugin>
143    </plugins>
144  </build>
145
146  <profiles>
147    <profile>
148      <!--
149       | No-AOP profile: repeat the build lifecycle with munged no-AOP source
150      -->
151      <id>guice.with.no_aop</id>
152      <activation>
153        <property>
154          <name>guice.with.no_aop</name>
155          <value>!false</value>
156        </property>
157      </activation>
158      <build>
159        <plugins>
160          <plugin>
161            <groupId>org.sonatype.plugins</groupId>
162            <artifactId>munge-maven-plugin</artifactId>
163            <version>1.0</version>
164            <executions>
165              <execution>
166                <phase>prepare-package</phase>
167                <goals>
168                  <goal>munge-fork</goal>
169                </goals>
170                <configuration>
171                  <symbols>NO_AOP</symbols>
172                  <excludes>
173                    **/InterceptorBinding.java,
174                    **/InterceptorBindingProcessor.java,
175                    **/InterceptorStackCallback.java,
176                    **/LineNumbers.java,
177                    **/MethodAspect.java,
178                    **/ProxyFactory.java,
179                    **/BytecodeGenTest.java,
180                    **/IntegrationTest.java,
181                    **/MethodInterceptionTest.java,
182                    **/ProxyFactoryTest.java
183                  </excludes>
184                </configuration>
185              </execution>
186            </executions>
187          </plugin>
188          <!--
189           | Package the no-AOP build with its own OSGi manifest and attach using "no_aop" classifier
190          -->
191          <plugin>
192            <artifactId>maven-jar-plugin</artifactId>
193            <executions>
194              <execution>
195                <id>no_aop</id>
196                <phase>package</phase>
197                <goals>
198                  <goal>jar</goal>
199                </goals>
200                <configuration>
201                  <classesDirectory>${project.build.directory}/munged/classes</classesDirectory>
202                  <classifier>no_aop</classifier>
203                  <archive>
204                    <manifestFile>${project.build.directory}/munged/classes/META-INF/MANIFEST.MF</manifestFile>
205                  </archive>
206                </configuration>
207              </execution>
208            </executions>
209          </plugin>
210        </plugins>
211      </build>
212    </profile>
213    <profile>
214      <!--
215       | JarJar build profile: Embed CGLIB (and ASM) classes under a Guice namespace
216      -->
217      <id>guice.with.jarjar</id>
218      <activation>
219        <property>
220          <name>guice.with.jarjar</name>
221          <value>!false</value>
222        </property>
223      </activation>
224      <build>
225        <plugins>
226          <plugin>
227            <groupId>org.sonatype.plugins</groupId>
228            <artifactId>jarjar-maven-plugin</artifactId>
229            <version>1.9</version>
230            <executions>
231              <execution>
232                <id>jarjar</id>
233                <goals><goal>jarjar</goal></goals>
234              </execution>
235            </executions>
236            <configuration>
237              <overwrite>true</overwrite>
238              <includes>
239                <include>*:asm*</include>
240                <include>*:cglib</include>
241              </includes>
242              <rules>
243                <rule>
244                  <pattern>net.sf.cglib.*</pattern>
245                  <result>com.google.inject.internal.cglib.$@1</result>
246                </rule>
247                <rule>
248                  <pattern>net.sf.cglib.**.*</pattern>
249                  <result>com.google.inject.internal.cglib.@1.$@2</result>
250                </rule>
251                <rule>
252                  <pattern>org.objectweb.asm.*</pattern>
253                  <result>com.google.inject.internal.asm.$@1</result>
254                </rule>
255                <rule>
256                  <pattern>org.objectweb.asm.**.*</pattern>
257                  <result>com.google.inject.internal.asm.@1.$@2</result>
258                </rule>
259                <keep>
260                  <pattern>com.google.inject.**</pattern>
261                </keep>
262                <keep>
263                  <pattern>com.googlecode.**</pattern>
264                </keep>
265              </rules>
266            </configuration>
267          </plugin>
268          <plugin>
269            <!--
270             | Attach the original non-JarJar'd classes so extensions can compile against them
271            -->
272            <groupId>org.codehaus.mojo</groupId>
273            <artifactId>build-helper-maven-plugin</artifactId>
274            <version>1.8</version>
275            <executions>
276              <execution>
277                <id>classes</id>
278                <phase>package</phase>
279                <goals>
280                  <goal>attach-artifact</goal>
281                </goals>
282                <configuration>
283                  <artifacts>
284                    <artifact>
285                      <file>${project.build.directory}/original-${project.build.finalName}.jar</file>
286                      <classifier>classes</classifier>
287                    </artifact>
288                  </artifacts>
289                </configuration>
290              </execution>
291            </executions>
292          </plugin>
293        </plugins>
294      </build>
295    </profile>
296    <profile>
297      <!--
298       | m2e profile - enable use of JarJar inside Eclipse
299      -->
300      <id>m2e</id>
301      <activation>
302        <property>
303          <name>m2e.version</name>
304        </property>
305      </activation>
306      <build>
307        <pluginManagement>
308          <plugins>
309            <plugin>
310              <groupId>org.eclipse.m2e</groupId>
311              <artifactId>lifecycle-mapping</artifactId>
312              <version>1.0.0</version>
313              <configuration>
314                <lifecycleMappingMetadata>
315                  <pluginExecutions>
316                    <pluginExecution>
317                      <pluginExecutionFilter>
318                        <groupId>org.sonatype.plugins</groupId>
319                        <artifactId>jarjar-maven-plugin</artifactId>
320                        <versionRange>[1.4,)</versionRange>
321                        <goals><goal>jarjar</goal></goals>
322                      </pluginExecutionFilter>
323                      <action><execute /></action>
324                    </pluginExecution>
325                  </pluginExecutions>
326                </lifecycleMappingMetadata>
327              </configuration>
328            </plugin>
329          </plugins>
330        </pluginManagement>
331      </build>
332    </profile>
333  </profiles>
334</project>
335