使用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文件夹中的所有依赖项。 它会:

  1. 使用Manifest创建一个jar ,包括lib目录的依赖关系作为类路径和执行jar时要运行的主类。
  2. 将所有相关jar复制到target/lib目录。
  3. 使用主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。