如何使用maven reactor构建模块及其子模块?

Rid*_*del 5 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
Run Code Online (Sandbox Code Playgroud)

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

  • maven-module-2 取决于 maven-module-1
  • maven-module-3 取决于 maven-module-3

在这个结构中,并假设工件maven-module-1及其子模块已经在本地存储库中可用,是否有使用maven reactor(作为示例)仅构建maven-module-2及其子模块的解决方案?

我已经知道,如果我这样做,使用maven reactor

mvn clean install -pl :maven-module-2 --also-make-dependant
Run Code Online (Sandbox Code Playgroud)

它会建立

  1. 行家模块-2-
  2. Maven的子模块,2-1
  3. Maven的子模块,2-2
  4. 行家模块-3-
  5. Maven的子模块-3-1
  6. 行家-子模块-3-2

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

显然,跑步

mvn clean install -pl :maven-module-2 --also-make
Run Code Online (Sandbox Code Playgroud)

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

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

小智 13

运用

mvn clean install -f maven-module-2 -N
Run Code Online (Sandbox Code Playgroud)

将仅构建maven-module-2和

mvn clean install -f maven-module-2
Run Code Online (Sandbox Code Playgroud)

将构建maven-module-2及其子代

注意-f用于对Maven说使用另一个POM(或模块目录并且它中包含pom.xml)而不是当前目录中的那个.因此,与-pl不同,maven会考虑项目中的所有模块,然后只构建它们的子部分,-f只构建此项目/模块/ pom引用的内容.去做

mvn clean install -f maven-module-2
Run Code Online (Sandbox Code Playgroud)

就像

cd maven-module-2; mvn clean install
Run Code Online (Sandbox Code Playgroud)