从单个Maven项目创建多个可运行的JAR(包含依赖项)

我有一个有多个主要类的maven项目。 我想从这些项目中生成可运行的Jars(包括alle dependices)。 我目前有以下构建配置(使用maven.assembly):

   maven-assembly-plugin    classpath.to.my.mainClass    jar-with-dependencies      

他们是通过maven-assembly来实现这一目标的吗? 如果没有,实现目标的最简单方法是什么?

我无法以令人满意的方式使用maven-assembly-plugin解决这个问题,所以我选择了另一种解决方案。 我使用了onejar-maven-plugin :

    org.dstovall onejar-maven-plugin 1.4.4   build-first  classpath.to.first.Main true onejar first-runnable.jar   one-jar    build-second  classpath.to.second.Main true onejar second-runnable.jar   one-jar         onejar-maven-plugin.googlecode.com http://onejar-maven-plugin.googlecode.com/svn/mavenrepo   

你能行的。 您需要为正在构建的每个工件单独执行(即,为每个工件提供自己的ID,但您可以将阶段保留为默认值),并且您需要为每个工件指定finalName和archive / manifest / mainClass 。

    maven-assembly-plugin   build-a    foobar.Aclass    jar-with-dependencies  foobar_a.jar    build-b    foobar.Bclass    jar-with-dependencies  foobar_b.jar       

如果您没有使用捆绑到jar文件中的任何配置(或任何资源)(例如,Spring Framework自动绑定的配置), 那么 最佳答案是有效的。

幸运的是,这个解决方案也适用于maven-shade-plugin ,你没有上述问题与onejar-maven-plugin

此外, maven-shade-plugin正在积极维护,而不是onejar-maven-plugin ,它是炼狱中的googlecode。

  org.apache.maven.plugins maven-shade-plugin 2.4.1   build-first package  shade     classpath.to.first.Main   first-runnable    build-second package  shade     classpath.to.second.Main   second-runnable     

要指定一个对我来说非常有帮助的前一个答案,你需要添加阶段包和目标程序集并运行mvn run clean package,pom如下:

  maven-assembly-plugin   build-a    firstMainClass    jar-with-dependencies  a.jar  package  assembly    build-b    SecondMainClass    jar-with-dependencies  b.jar  package  assembly