我有一个包含三个级别模块的项目。假设它具有以下组织...
+-- 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
它将构建
- maven-module-2
- maven-submodule-2-1
- maven-submodule-2-2
- maven-module-3
- maven-submodule-3-1
- maven-submodule-3-2
as maven-module-3
依赖于 maven-module-2
显然,正在运行
mvn clean install -pl :maven-module-2 --also-make
只会构建 maven-module-1
和 maven-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/