递归地对文件执行Maven命令

时间:2017-04-25 13:13:20

标签: java maven multi-module maven-versions-plugin

我有一个非常复杂的多模块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命令,例如版本:update-parent 。我想要更新所有项目和子项目。如果我使用pom.xml,项目E 将不会更新,因为它未被声明为项目B 的子模块。

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

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

我出错了吗?

1 个答案:

答案 0 :(得分:1)

Maven简介就是答案。

项目A 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