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

时间:2018-11-29 18:00:57

标签: maven jenkins jenkins-plugins maven-3 multi-module

我正在使用Maven 3.5,Git和Jenkins 2.138.1。我为多模块Maven项目设置了Maven Jenkins职位。通常,如果我只想在Maven中构建一个模块,无论它影响什么,我都可以运行

mvn install -pl myModule -am
从命令行

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

2 个答案:

答案 0 :(得分:1)

如果您使用的是FreeStyle项目:
 您将需要安装 Maven项目插件
然后有一个选项“ 仅增量构建仅构建已更改的模块

enter image description here

状态说明SCM将处理已修改的模块,并将仅构建那些模块。

在使用Pipeline的情况下,可以使用您提到的上述命令。即

 mvn install -pl myModule -am

问题在于,在签到时知道要构建哪些模块

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

上面的命令应该起作用。

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

下面的URL提供了有关如何使用maven实现此目的的详细说明: Jenkins building a product consisting of many Maven projects? (with Jenkins Pipeline plugin?)

希望它会有所帮助:)

答案 1 :(得分:0)

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