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

标签 java maven

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

是否有任何解决方案可以仅使用 Maven 来完成此操作,而无需使用 shell 脚本或 Ant 等其他工具?

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

最佳答案

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

  • 创建一个“聚合器构建”:一个 POM 项目,其中将各个项目 A1...A5 和 B1...B3 列为 <modules>它被 checkin 到一个单独的 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

关于java - 如何使用 Maven 自动化多个构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52743956/

相关文章:

Maven 存储库托管非公共(public) Artifact ?

java - 保存结果集以便将来按下按钮推送到 UI?

Java SE 7 : Order of execution

java - Spring Boot - SOAP WebService 不显示 WSDL

java - RDD 不可序列化 Cassandra/Spark 连接器 java API

maven - 如何在 Gradle 中使用 Spring 的 Maven BOM?

maven - Spring Boot 2.2.0和Maven插件出现问题

android - 在 Android 应用程序存储库中管理依赖项的最简单方法是什么?

java - 如何将 JFrame 放入全屏并自动重新缩放内容

maven-site-plugin 未使用 javadocs 生成 apidocs 文件夹