使用Maven,我如何构建一个包含我的项目jar和所有依赖jar的distributable?
我有一个项目(类型’jar’)(显然)构建一个jar。 但该项目有很多依赖性。 我希望Maven构建一个包含我的jar,所有依赖jar和一些脚本(启动应用程序等)的“包”或“程序集”
最好的方法是什么? 具体来说,让家属进入大会的最佳方法是什么?
对于单个模块,我将使用类似下面的程序集( src/assembly/bin.xml
):
bin tar.gz tar.bz2 zip false runtime lib src/main/command bin *.sh *.bat
要使用此程序集,请将以下配置添加到pom.xml:
org.apache.maven.plugins maven-assembly-plugin src/assembly/bin.xml package single
在此示例中,位于src/main/command
下的启动/停止脚本捆绑到bin
,依赖项捆绑到lib
。 根据您的需求定制它。
这是我创建一个可分发的.zip
(或.tar.gz
/ .tar.bz2
)的解决方案,包括lib
文件夹中的所有依赖项。 它会:
- 使用Manifest创建一个
jar
,包括lib
目录的依赖关系作为类路径和执行jar
时要运行的主类。 - 将所有相关jar复制到
target/lib
目录。 - 使用主jar和lib目录的所有相关jar创建可分发的`zip。
摘自pom.xml
:
org.apache.maven.plugins maven-jar-plugin true lib/ full.path.to.MainClass maven-dependency-plugin package copy-dependencies ${project.build.directory}/lib org.apache.maven.plugins maven-assembly-plugin package attached src/main/resources/dist.xml
dist.xml
:
bin zip tar.gz ${project.basedir} / README* LICENSE* NOTICE* ${project.build.directory} / *.jar ${project.build.directory}/lib lib *.jar ${project.build.directory}/site docs
dist.xml
是从bin
描述符格式派生的: http : dist.xml
我使用maven程序集插件将所有内容打包在一个jar中。 你可以在这里找到信息http://maven.apache.org/plugins/maven-assembly-plugin/ http://maven.apache.org/plugins/maven-assembly-plugin/usage.html
HTH。