如何使用Maven自动化多个构建?

时间:2018-10-10 15:38:36

标签: java maven

我必须管理多个项目,例如A1..A5和B1..B3。每个B取决于一组特定的As。所以我可以在每个A上然后每个B上手动启动Maven,以创建所有jar。在其中一个B中启动Maven甚至不会预编译所需的As。

是否有任何解决方案可以仅使用Maven而无需其他工具,例如Shell脚本或Ant?

为防止类似“将文件夹A移至文件夹B”这样的回答:所有文件夹都位于同一级别的一个目录中。之所以无法更改,是因为不同的团队正在处理此项目,并且每个项目都有自己的GIT存储库。

2 个答案:

答案 0 :(得分:2)

您也许可以使它像这样工作:

  • 创建“聚合器构建”:一个POM项目,将各个项目A1 ... A5和B1 ... B3列为<modules>,并签入到单独的git存储库中
  • 在该git存储库中,配置指向其他存储库的git子模块

在聚合器项目上开始构建时,Maven将根据所包含项目的依赖关系自动找出正确的构建顺序。

例如,给定以下依赖性:

B1 uses A1 and A2
B2 uses A2 and A3
B3 uses A3, A4 and A5

Maven可能会提出A1,A2,B1,A3,B2,A4,A5,B3的构建顺序。

使用Maven命令行选项,聚合器构建甚至可以以“重建A3及其使用的所有内容”或“重建B1所需的所有内容,然后重建B1本身”的形式启动。

但是,所有这一切都可能要求各个项目都从聚合器POM继承,这取决于您的POM外观,在您的情况下可能可行或不可行。

目录结构可能如下所示: example multi-module project structure

答案 1 :(得分:0)

如果As和B确实是不同的项目,则需要使用其他工具(例如Jenkins)来管理和编排构建。尤其是您将独立发行As和B,因此您将希望保持Maven构建独立。