首页 > 解决方案 > 如何知道 SCM 中更改了哪些 Maven 模块?

问题描述

想象一下,我有一个具有以下结构的 Maven 项目:

-- Client (Used as dependency in other projects to communicate with Server)
---- pom.xml
-- Common (Domain module with classes used by both Client and Server)
---- pom.xml
-- Server (Actual application that is deployed and served in production)
---- pom.xml
pom.xml

服务器和客户端都依赖于 Common。

我正在寻找一个解决方案,我的 CI 解决方案 (Jenkins) 能够评估自各自的构建上次成功构建以来我的 SCM 中的任何子模块是否有任何更改(不确定跟踪最后一次成功构建的最佳方法构建,也许使用 git 标签)。这是因为我的管道中每个模块都有不同的行为,并且我不想在只更改一个时不必要地运行所有这些。我期望的行为如下:

我在 pom.xml 中更新服务器模块的版本无关紧要,但我确实需要跟踪客户端模块中的版本(因为它在其他项目中用作依赖项)。

标签: javamaven

解决方案


大多数 SCM 提供程序现在都支持 web 挂钩,只要有合并到您的 master 分支,您就可以触发 jenkins 作业。

现在,作为 jenkins 构建的一部分,您可以使用 SCM 提供者的 rest api 接口(bitbucketgithub提供 rest api),该接口可用于确定哪些模块已更改,一旦您知道已更改的模块,您就可以构建和部署它们选择性地。


推荐阅读