maven - 如何使用 Maven Reactor 构建模块及其子模块?

标签 maven

我有一个包含三个级别模块的项目。假设它具有以下组织...

+-- maven-root
   +-- maven-module-1
   |   +-- maven-submodule-1-1
   |   +-- maven-submodule-1-2
   +-- maven-module-2
   |   +-- maven-submodule-2-1
   |   +-- maven-submodule-2-2
   +-- maven-module-3
       +-- maven-submodule-3-1
       +-- maven-submodule-3-2

此外,我们还有以下一组依赖项

  • maven-module-2 依赖于 maven-module-1
  • maven-module-3 依赖于 maven-module-3

在此结构中,假设 maven-module-1 及其子模块的 Artifact 已在本地存储库中可用,是否有使用 Maven Reactor(作为示例)仅构建 的解决方案>maven-module-2 及其子模块?

我已经知道,使用 Maven Reactor,如果我这样做

mvn clean install -pl :maven-module-2 --also-make-dependant

它将构建

  1. maven-module-2
  2. maven-submodule-2-1
  3. maven-submodule-2-2
  4. maven-module-3
  5. maven-submodule-3-1
  6. maven-submodule-3-2

as maven-module-3 依赖于 maven-module-2

显然,正在运行

mvn clean install -pl :maven-module-2 --also-make

只会构建 maven-module-1maven-module-2

那么,如何使用该项目组织,仅构建 maven-module-2

最佳答案

使用

mvn clean install -f maven-module-2 -N

将仅构建 maven-module-2 和

mvn clean install -f maven-module-2

将构建 maven-module-2 及其子模块

请注意,-f 用于告诉 Maven 使用另一个 POM(或模块目录,它包含其中的 pom.xml)而不是当前目录中的 POM。因此,与 -pl 不同,在 -pl 中,maven 会考虑项目中的所有模块,然后仅构建其中的子部分,而 -f 仅构建此项目/模块/pom 引用的内容。待办事项

mvn clean install -f maven-module-2

完全一样

cd maven-module-2; mvn clean install

关于maven - 如何使用 Maven Reactor 构建模块及其子模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14212920/

相关文章:

java - 如何说 eclipse-maven-plugin 从 eclipse 执行与来自 cmd 的 mvn 相同的操作

java - 依赖项目中的 ClassNotFoundException

java - 使用自定义存储库中的依赖项构建 JAR

maven - Gradle/Maven 循环依赖的行为

maven - 如何找出父级的pom版本?

java - 在多模块 Maven 项目中构建阶段之前运行单元测试

java - Eclipse:将 Maven 配置添加到快速链接

java - Maven导入eclipse时不给项目添加依赖jar文件

java.lang.NoClassDefFoundError : org/apache/commons/codec/binary/Base64: from a library jar imported with Maven

java - 错误: Not supported: indent-number when using jaxb2-maven-plugin with jdk8