我有一个非常复杂的多模块 Maven 项目,其中包含嵌套项目。 基本上,问题可以简化为这样的配置:
Project A
| pom.xml
| pomBis.xml
|
|---- Project B
pom.xml
pomBis.xml
---- Project D
pom.xml
---- Project E
pom.xml
|---- Project C
pom.xml
项目 A 的 pom 有 项目 B 和 C 作为模块。在项目B的pom中,我只有项目D。因为Project E是一个非常大的项目,我们不需要每天编译,所以它被排除在日常构建之外。
我现在想要执行 Maven 命令,例如 versions:update-parent。我希望更新我的所有项目和子项目。如果我使用 pom.xml,项目 E 将不会更新,因为它没有声明为项目 B 的子模块。
我想创建一个将使用的自定义 pomBis.xml。但是,如果我在每个子项目上创建一个 pomBis.xml,并运行该命令,则仅使用项目 A 的 pomBis.xml。当 Maven 深入时,它会回落到正常的 pom.xml。
我看到的唯一解决方案是在项目 A 中创建一个 pomBis.xml,它将列出所有子模块并真正列出所有叶项目。
我是不是搞错了什么?
最佳答案
Maven 配置文件就是答案。
项目 POM:
<pom>
.
.
.
<modules>
<module>B</module>
<module>C</module>
<modules>
</pom>
项目 B POM:
<pom>
.
.
.
<profiles>
<profile>
<id>includebeast</id>
<modules>
<module>E</module>
<modules>
</profile>
</profiles>
<modules>
<module>D</module>
<modules>
</pom>
现在,当您希望 Maven 命令影响所有项目时,请激活配置文件“includebeast”,如下例所示:
编译全部的示例:mvn cleancompile -P includebeast
关于java - 对文件递归执行 Maven 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43611728/