【问题标题】:How do I trigger a Jenkins build of a single module in a multi-module Maven build from Subversion?如何在 Subversion 的多模块 Maven 构建中触发单个模块的 Jenkins 构建?
【发布时间】:2026-01-30 20:35:01
【问题描述】:

我在我的 Jenkins 中设置了一个大型 Maven 多模块构建。它是为增量构建而设置的。

当被触发时,它会解析所有的 POM 并找出它需要构建的内容。

当前设置为在 SCM 更改时触发。

我想进行此构建,以便我可以执行以下操作:

  • 仍然手动启动它。当我这样做时,它的增量构建行为将像现在一样发挥作用。
  • 从 Subversion 提交挂钩触发构建。我想知道,如果我通过excellent instructions 设置提交挂钩的麻烦,它不会导致构建进入不必要的长度来轮询 SCM 或执行其他不必要的工作事实上,提交钩子告诉它发生了什么变化。

我提到第二点是因为从我查看文档来看,这似乎只是简单地戳了一般构建并让它做它的事情。 (我可能错了。)我宁愿让它告诉 Jenkins 到底发生了什么变化,让 Jenkins 只“知道”那些更改的存储库路径映射到哪些模块,这样 Jenkins 就不必进行轮询或额外的 pom.xml解析一下。

我已经准备好让经历过这场战争的人告诉我,看,设置 Subversion 提交钩子,这和你会得到的一样好,但我在问这个问题如果有更好的食谱。

【问题讨论】:

    标签: jenkins


    【解决方案1】:

    这个设施does not yet apparently exist in Jenkins 使用 Maven 3 构建时。

    【讨论】:

    • 您可以尝试打开项目并从左侧菜单中选择模块,但它不会构建该模块的整个树。所以没用。
    • 从 2021 年开始,它看起来将在 Jenkins 2.7 中实现,并向前推进。其他任何人都可以验证该修复程序是否存在并且是否按预期工作?
    【解决方案2】:

    您是否尝试过项目配置中构建部分中的增量构建-仅构建更改的模块选项?在这种情况下,存储库将通知 Jenkins 提交的更改,SCM 插件将签出文件,Maven 插件将尝试猜测哪些模块需要重建。它在我的环境中的大多数情况下都有效,尽管它不是 100% 的证明。

    【讨论】:

    • 谢谢;是的;我广泛使用它。不幸的是,这并不完全相同。
    • 嗯,这是目前唯一的东西。在多模块项目中,您始终可以转到右侧导航菜单中名为 Modules 的部分,然后尝试重新运行任何模块。但就我而言——即使这样也不是每次都奏效......