我有一个项目,它有多个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)将检查代码的完整性。 我们可以采取其他任何方法吗?
答案 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
显然,您可以调整此方法以满足您的需求,但效果最佳。因此,您可以创建仅构建引擎项目的配置文件。