Maven没有在多模型项目中构建兄弟依赖项

时间:2018-03-29 13:55:18

标签: java maven build multi-module

我有一个多模块项目,在根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,由于main-app选项,它会将-amd放入要构建的项目的reactor列表中。

但是,它不会选择shared-lib2main-app将无法构建。

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

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

1 个答案:

答案 0 :(得分:0)

因为没有人回答这个问题:这是Maven的预期行为以及它如何构建模块图。我试图创建自己的图形生成器,应该将其转换为Maven构建器,但很早以前我已从此活动中移走了:

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

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