如何将我的 Maven Jenkins 作业配置为仅在我签入代码的地方构建模块?

How do I configure my Maven Jenkins job to only build modules where I've checked in code?

我正在使用 Maven 3.5、Git 和 Jenkins 2.138.1。我为我的多模块 Maven 项目设置了 Maven Jenkins 作业。通常,如果我只想在 Maven 中构建一个模块及其影响,我可以 运行

mvn install -pl myModule -am

从命令行。我想做的是将我的 Jenkins 作业配置为仅在有人签入特定模块的代码时构建受影响的 Maven 模块及其依赖项,从而加快我的构建速度。我如何在 Jenkins 中配置它?

如果您使用的是 FreeStyle 项目:
你需要安装 Maven Project Plugin
然后有一个选项“Incremental build-only Build changed modules

如其所述,SCM 将处理哪些模块已被修改,并且将仅构建那些模块。

如果是管道,则可以使用您提到的上述命令。即

 mvn install -pl myModule -am

问题是在签入发生时知道要构建哪些模块

mvn install -amd -pl $(git status | grep -E "modified:|deleted:|added:" | awk '{print }' | cut -f1 -d"/")

以上命令应该有效。

如果您要修改 pom.xml
您将需要 Maven 增量插件

下面URL详细解释了如何使用maven来实现: Jenkins building a product consisting of many Maven projects? (with Jenkins Pipeline plugin?)

希望对您有所帮助:)

这是旧的,但应该对您的事业有所帮助,https://blog.soebes.de/blog/2016/08/12/maven-incremental-module-build/ 并归功于 Beratung Schulung:)