以下设置:
rootpom
|- parentpom
| |- projectApom
| |- projectBpom
| |- other projects poms
|- other projects poms
层次结构中的每个项目都使用< module>进行绑定。在其父pom上标记,以及由< parent>指定的父项标签
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(以及其他一些),因此使用此命令assembly:single
将应用于所有项目。
所以问题是如何编译多个项目(依赖项)并且只组装一个项目(最后一个)?
答案 0 :(得分:0)
简单:不要在命令行上使用assembly:single
,而是将maven-assembly-plugin
的执行绑定到所需项目的特定阶段。
如果您只想在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 --projects parent/projectB clean package
只会打包B。