从单个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