1

我有一个非常复杂的多模块 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有项目 BC作为模块。而在Project B的 pom 中,我只有Project D。因为项目 E是一个非常大的项目,我们不需要每天编译,所以它被排除在日常构建之外。

我现在想执行一个 Maven 命令,例如versions:update-parent。我希望更新我的所有项目和子项目。如果我使用 pom.xml,项目 E将不会被更新,因为它没有被声明为项目 B的子模块。

我想创建一个可以使用的自定义 pomBis.xml。但是如果我在每个子项目上创建一个 pomBis.xml 并运行命令,则只使用项目 A的 pomBis.xml 。当 Maven 更深入时,它会回到正常的 pom.xml。

我看到的唯一解决方案是在项目 A中创建一个 pomBis.xml,它将列出所有子模块并真正列出所有叶子项目。

我有什么问题吗?

4

1 回答 1

1

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 clean compile -P includebeast

于 2017-04-25T16:24:30.227 回答