Maven:在多模块项目中组装子项目(模块)

时间:2016-01-28 17:02:23

标签: java maven

以下设置:

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将应用于所有项目。

所以问题是如何编译多个项目(依赖项)并且只组装一个项目(最后一个)?

1 个答案:

答案 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。