8

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

+-- 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及其子模块已经在本地存储库中可用,是否有使用 maven reactor(例如)仅构建maven-module-2及其子模块的解决方案?

我已经知道,如果我这样做,使用 Maven 反应器

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

因为maven-module-3有依赖maven-module-2

显然,跑步

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

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

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

4

1 回答 1

19

使用

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)而不是当前目录中的。因此,与 -pl 不同,maven 会考虑项目中的所有模块,然后仅构建它们的子部分,-f 仅构建此项目/模块/pom 引用的内容。去做

mvn clean install -f maven-module-2

就像

cd maven-module-2; mvn clean install
于 2013-01-09T17:55:54.593 回答