maven项目的多个pom文件

时间:2014-03-17 10:39:14

标签: java eclipse maven svn

我有一个项目,它有多个maven项目和1个父pom,其他所有项目都是maven模块。

pom.xml

<modules>
    <module>abc-codegen</module>
    <module>stellar-codegen</module>
    <module>abc-engine</module>
    <module>stellar-engine</module>
</modules>
在这些maven项目中,很少有项目(abc-codegen,stellar-codegen)用于代码生成。 codegen工件被其他maven模块使用,例如abc-engine。

每次构建和发布其他应用程序模块(abc-engine等)时,都可能无法构建codegen模块。

POM-codegen.xml

<modules>
    <module>abc-codegen</module>
    <module>stellar-codegen</module>
</modules>

但是,为了与其他此类应用程序保持一致,codegen项目应保留在父文件夹(svn / my-service / trunk)中。

我的一个想法是在父文件夹下创建另一个名为pom-codegen.xml的pom文件,并在需要时通过明确调用生成代码

mvn -f pom-codegen.xml clean deploy

我唯一需要做的就是告诉我的CI执行上述命令并在需要时触发部署工件。而其他构建(mvn clean install)将检查代码的完整性。 我们可以采取其他任何方法吗?

1 个答案:

答案 0 :(得分:11)

是的,您可以使用Maven配置文件来管理它。

E.g。在父POM中创建一个配置文件部分

<profiles>
    <profile>
        <id>aggregate-all</id>
        <modules>
             <module>abc-codegen</module>
             <module>stellar-codegen</module>
             <module>abc-engine</module>
             <module>stellar-engine</module>
        </modules>
    </profile>
    <profile>
        <id>aggregate-codegen</id>
        <modules>
             <module>abc-codegen</module>
             <module>stellar-codegen</module>
        </modules>
    </profile>
</profiles>

现在构建您运行的所有内容:

mvn clean install -P aggregate-all

仅构建您运行的代码生成项目

mvn clean install -P aggregate-codegen

显然,您可以调整此方法以满足您的需求,但效果最佳。因此,您可以创建仅构建引擎项目的配置文件。