我有几个罐子模块maven2的项目,建立项目将获得的.jar档案目录中的模块,每个模块/ XYZ /目标/ XYZ-xxxjar如何将模块瓶子合并到Maven2中的单个罐子中?
现在,如果我的项目P是版本PP .qr,我想生成一个包含所有子模块的单个jar Pp.qr-all.jar,我应该怎么做?
我有几个罐子模块maven2的项目,建立项目将获得的.jar档案目录中的模块,每个模块/ XYZ /目标/ XYZ-xxxjar如何将模块瓶子合并到Maven2中的单个罐子中?
现在,如果我的项目P是版本PP .qr,我想生成一个包含所有子模块的单个jar Pp.qr-all.jar,我应该怎么做?
你要存档的名称叫做超级罐子。这个模块必须有你想打包成一个jar的所有其他子模块的依赖关系。如果你创建了另一个产生所需工件的子模块,它可以在所有它的依赖关系中构建在reactor中,但是如果它是一个单独的项目,你必须安装所有的uber jar依赖。
| parent
| -- submodule1
...
| -- submoduleN
| -- uberjarSubmodule
尤伯杯罐子可以用做:
maven-shade-plugin - 在你的情况,你一定要记住,从你的模块
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>classworlds:classworlds</exclude>
<exclude>junit:junit</exclude>
<exclude>jmock:jmock</exclude>
<exclude>xml-apis:xml-apis</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
maven-assembly-plugin排除传递依赖条件 - 在this问题你会发现一个详细的答案
如果你的jar是一个你希望其他开发者通过maven下载和使用的库,取决于你如何发布这个。您应该在项目pom中将这些指定为dependencies。
如果您尝试将某些东西发送给只想抓取二进制文件并使用您的项目的最终用户,则可以尝试使用assembly插件打包项目。有了这个插件,你可以在它的依赖包旁边打包一个jar。它不会把它全部放在一个jar文件中,但假设你正确配置了用户类路径,它应该没有关系。
阴影看起来像一个很酷的插件。 – Clinton 2009-12-13 10:42:22