【问题标题】:How do I configure my Maven Jenkins job to only build modules where I've checked in code?如何将我的 Maven Jenkins 作业配置为仅构建已签入代码的模块?
【发布时间】:2019-05-01 20:53:20
【问题描述】:

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

mvn install -pl myModule -am

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

【问题讨论】:

  • 答案有帮助吗?还是您仍然面临问题??

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    正如它所说,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?)

    希望对你有帮助:)

    【讨论】:

    • 并行构建模块增量构建不兼容 - 如屏幕截图所述。所以它要么是并行的,要么是增量的——异或。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2016-09-05
    • 2021-06-30
    • 2020-01-08
    • 1970-01-01
    • 2012-05-06
    相关资源
    最近更新 更多