如何知道在SCM中更改了哪些Maven模块?

时间:2019-10-21 11:21:17

标签: java 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标签)。这是因为我在每个模块的管道中有不同的行为,并且当只更改一个模块时,我不想不必要地运行所有这些行为。我期望的行为如下:

  • 如果更改了客户端,请安装客户端模块并部署到远程Nexus。 (客户的着色过程已经包含“通用”模块,因此无需同时部署该模块。)
  • 如果更改了Server,请安装Server模块并将其部署到生产环境中,Server的着色过程也已经包含Common模块)
  • 如果更改了“通用”,则安装客户端和服务器的模块并进行部署。

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

1 个答案:

答案 0 :(得分:0)

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

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

相关问题