Maven 没有在多模型项目中构建同级依赖项

Maven is not building sibling dependencies in multi-model project

我有一个多模块项目,在根 POM 中我有:

<modules>
    <module>shared-lib1</module>
    <module>shared-lib2</module>
    <module>main-app</module>
</modules>

main-app 模块中,我列出了我的库:

    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>lib1</artifactId>
        <version>${project.version}</version>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>lib2</artifactId>
        <version>${project.version}</version>
    </dependency>

一般的构建命令是mvn deploy -pl <changedList> -am -amd

当我的 Jenkins 自动化检测到推送到分支的变化时,它会分析哪些文件从哪个模块发生了变化。因此,例如只有 shared-lib1 被更改。

在那种情况下,命令将是 mvn deploy -pl shared-lib1 -am -amd,由于 -amd 选项,这将把 main-app 放入要构建的反应堆项目列表中。

但是,它不会拾取 shared-lib2 并且 main-app 将无法构建。

是否有任何选项可以正确构建树,所以基本上为 -amd 发现的所有模块启用 -am 选项?

UPD:${project.version} 每次都会更新,因为包含提交的 SHA

因为没有人回答这个问题:这是 Maven 的预期行为以及它如何构建模块图。我尝试创建自己的图形构建器,它应该已经转换为 Maven 构建器,但我很久以前就从这个 activity 移走了:

https://gist.github.com/vladfau/eb34e4f3892d0207e399a0f1f84f83ff

这是为 Jenkins Pipeline 编写的,因此有一些 CPS 增强。最值得注意的方法是 generateFullDependencyList