Java Maven构建:在war构建期间对jar文件进行分组
我当前的webapp包含100多个专有的javalibJava Maven构建:在war构建期间对jar文件进行分组,java,maven,ant,build,Java,Maven,Ant,Build,我当前的webapp包含100多个专有的javalib webapp |_WEB-INF |_lib |_ com.company.lib1.jar |_ com.company.lib2.jar 当我用maven构建我的webapp时,我想将它们重新组合在一个jar文件中,我想在webapp构建期间处理它们(而不是在旁边构建这个或其他东西) 我试图运行一个maven ant任务来重新组合lib,我得到了一个包含所有内容的jar,但我的WEB-INF/lib文件夹
webapp
|_WEB-INF
|_lib
|_ com.company.lib1.jar
|_ com.company.lib2.jar
当我用maven构建我的webapp时,我想将它们重新组合在一个jar文件中,我想在webapp构建期间处理它们(而不是在旁边构建这个或其他东西)
我试图运行一个maven ant任务来重新组合lib,我得到了一个包含所有内容的jar,但我的WEB-INF/lib文件夹中仍然有剩余的lib
webapp
|_WEB-INF
|_lib
|_ com.company.lib1.jar
|_ com.company.lib2.jar
|_ com.company.all_libs.jar
带有ant部分的我的pom片段:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>create-full-jar</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<jar destfile="target/webapp/WEB-INF/lib/com.company.all_libs.jar">
<zipgroupfileset dir="target/webapp/WEB-INF/lib" includes="*.jar" />
</jar>
</target>
</configuration>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
maven antrun插件
1.8
创建完整的罐子
包裹
跑
我查看了maven war插件,但没有找到合适的解决方案。我建议您制作一个子项目,使用或可能使用(首先尝试组装;shade功能更强大,但更难使用),将所有依赖项jar复制到一个mega jar中,然后你的战争就可以依靠这一点。你为什么要经历这种痛苦?War文件包含“lib”子目录中的所有JAR?根据经验,不重新打包第三方软件也是一个好主意。想想3年后,当你试图弄清楚罐子是什么以及它来自哪里的时候。更改jar意味着您不能使用sha校验和在第三方repo(如Maven Central)中搜索匹配项。最后,我不会重新打包第三方LIB。我们遇到的问题是生产服务器上打开的文件数量。我们的commons Propitary库仍然不在tomcat shared/lib文件夹中,所以我想将它们全部重新打包到一个jar中,从每个webapp打开的130个文件变成一个文件。这是我们目前运行的10个Web应用程序的两倍,大大减少了打开的文件数。我们将使用@dcsohl的答案,将所有库重新组合到一个company.bundle项目中,并且只使用对他的依赖。顺便说一下,谢谢你的回答:)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>create-full-jar</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<jar destfile="target/webapp/WEB-INF/lib/com.company.all_libs.jar">
<zipgroupfileset dir="target/webapp/WEB-INF/lib" includes="*.jar" />
</jar>
</target>
</configuration>
</execution>
</executions>
</plugin>