我有一个包含三个级别模块的项目。我们假设它有以下组织......
+-- 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 reactor,如果我这样做
mvn clean install -pl :maven-module-2 --also-make-dependant
它将构建
因为maven-module-3
依赖于maven-module-2
显然,正在运行
mvn clean install -pl :maven-module-2 --also-make
只会构建maven-module-1
和maven-module-2
。
那么,如何使用该项目组织,我只能构建maven-module-2
?
答案 0 :(得分:13)
使用
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