在本地构建时自动重建依赖项目

Rebuild dependent projects automatically when building locally

我有几个 Maven 项目共享一个共同的父项目如下:

project-parent
    project-1
    project-2: includes project-1
    project-3: includes project-2

这里以project-3的依赖关系为project-2project-2的依赖关系为project-1为例。

当我将项目推送到 git 时,Jenkins 会自动重建为依赖项目。例如,当我按下 project-3 时,project-2 将被重建。因此,project-1 也将被重建。发生这种情况是因为 Jenkins 了解依赖关系图。

然而,当我在我的开发机器上本地构建 project-3 时,我必须记住也要重建 project-2(和 project-1)。

我可以将 <modules>...</modules> 部分添加到父项目并简单地重建父项目。这将重建整个项目,包括所有子项目。但是,我宁愿不这样做,因为有很多项目,其中一些需要很多时间来构建。

所以我想构建一个项目(我正在处理的项目)并以某种方式自动(或方便地)重建所有相关项目,类似于 Jenkins 行为。基本上,我想在我的开发机器上本地实现 Jenkins 行为。这可能吗?

您还可以创建一个完全独立于其他聚合器的聚合器:每个 <module> 指向包含 pom.xml 的文件夹的路径(它也可以直接指向 pom.xml) .

<project> 
  ...
  <modules>
    <module>project-parent</module>
    <module>project-1</module>
    <module>project-2</module>
    <module>project-3</module>
  </modules>
  ...
</project>

在这种情况下,从该聚合器构建将允许 Maven 充分了解您的依赖关系图并按顺序构建。您只需要注意正确更新版本以确保它匹配(如果 project-2 依赖于 project-1 的版本 2 而 project-1 在版本 3 中,那么这将不起作用)。

您不需要放置不需要的模块,但请注意,如果模块有子模块 <module>,它也会构建它们。

您可以从您的父项目执行以下命令(假设您在 <module>...</module> 中有 my-child-module:

mvn clean install -pl my-child-module -am

此命令将构建项目 my-child-module 及其依赖项。

-pl, --projects
Build specified reactor projects instead of all projects

-am, --also-make
If project list is specified, also build projects required by the list

-amd, --also-make-dependents If project list is specified, also build projects that depend on projects on the list

Source