maven项目的多个pom文件

Sel*_*sra 5 java eclipse svn maven

我有一个项目,有多个maven项目和1个父pom,所有其他项目作为maven模块.

的pom.xml

<modules>
    <module>abc-codegen</module>
    <module>stellar-codegen</module>
    <module>abc-engine</module>
    <module>stellar-engine</module>
</modules>
Run Code Online (Sandbox Code Playgroud)

在这些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>
Run Code Online (Sandbox Code Playgroud)

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

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

mvn -f pom-codegen.xml clean deploy
Run Code Online (Sandbox Code Playgroud)

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

cow*_*wls 13

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

例如,在父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>
Run Code Online (Sandbox Code Playgroud)

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

mvn clean install -P aggregate-all
Run Code Online (Sandbox Code Playgroud)

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

mvn clean install -P aggregate-codegen
Run Code Online (Sandbox Code Playgroud)

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