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

标签 java maven

以下设置:

rootpom
 |- parentpom
 |   |- projectApom
 |   |- projectBpom
 |   |- other projects poms
 |- other projects poms

层次结构中的每个项目都通过在其父 pom 上使用 标签以及由 标签指定的父项目进行绑定(bind)。

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/

相关文章:

maven - 如果Grails BuildConfig范围未指定组织,会发生什么?

java - 有没有办法限制 Android 中的 Google 登录到某个电子邮件域?

java - 这是根据规范进行的 Java 双重解析行为吗?

java - ComperatorFactory 使用静态方法还是每个方法都在自己的类中?

java - 构建应用程序时出错 - 连接到 http ://ws. zone.apache.org 被拒绝

java - 什么是 `spring-boot-starter` jar ?

java - 为什么我会看到 Springboot starter 2.1.2 pom 不可解析问题?

java - Broadleaf Commerce 3.0 缺失的 Artifact

java - 在小程序中序列化对象

c# - 如何避免 json 对象中的逗号?