以下设置:
rootpom
|- parentpom
| |- projectApom
| |- projectBpom
| |- other projects poms
|- other projects poms
层次结构中的每个项目都通过在其父 pom 上使用
ProjectA 和 ProjectB 都使用片段指定程序集插件:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<mainClass>ClassToExecute</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
现在我进入rootpom的目录并执行:
mvn --projects parent/projectB compile assembly:single
现在的问题是,projectB 依赖于 A(以及其他一些项目),因此使用此命令 assemble:single
将应用于所有项目。
所以问题是如何编译多个项目(依赖项)并只组装一个项目(最后一个)?
最佳答案
简单:不要在命令行上使用 assemble:single
,而是将 maven-assemble-plugin
的执行绑定(bind)到您想要的项目的特定阶段。
如果您只想在 B 的 POM 中组装项目 B,则可以:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>ClassToExecute</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
这样,运行mvn --projectsparent/projectB clean package
将仅打包B。
关于java - Maven:在多模块项目中组装子项目(模块),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35067532/