在构建依赖项时,如何使jenkins触发依赖项目的构建

Ben*_*min 12 build pom.xml maven-3 maven jenkins

我有一个关于如何设置Jenkins和maven 3的简单问题.

为简单起见,我们说有四个项目:

模型不具有依赖性
共享取决于模型的
服务器依赖于公共和型号
前端取决于型号

我想要实现的是,基于Model的成功构建会触发所有项目的新构建,这些项目在其pom中依赖于Model(此处为Common,Server和Frontend)

如果Common失败,则无需构建Server.

在上面的例子中,似乎我可以通过在Model和Commons上手动设置依赖项目来解决这个问题,但是这个信息已经可以在每个项目(服务器和前端)的pom文件中找到,这使我得出结论/希望Jenkins应该是能够自己解决这个问题.

Jenkins可以通过解析Jenkins中定义的每个项目上的pom来推导依赖树,并自动执行某种最佳构建顺序/依赖项处理,或者我必须设置"上游项目构建时构建块"和"其他项目构建后构建"建立[依赖项目清单]"如上所述?

我正在使用Jenkins版本1.473和Maven 3.
我们的maven项目pom不使用父标签或模块标签.

/本杰明

dan*_*ter 7

假设您想要坚持使用4个单独的构建而不是多模块构建,那么在4个项目中的每一个中执行它的方法都会检查构建触发器下的框

"构建SNAPSHOT依赖项时构建"

然后你签入模型,jenkins基于SVN轮询启动该项目的构建,当构建完成时,它看到common对模型有依赖性,因此它触发了common的构建,看它是否仍然构建更新的模型.

必须将jenkins作业创建为maven作业才能存在此选项.它不适用于自由风格的项目,即使它们运行的​​脚本恰好调用了maven.

  • 您不知道如何在jenkins管道中启用此功能?(通过jenkinsfile) (2认同)

khm*_*ise 4

解决这种问题的最佳解决方案是创建一个多模块构建,其结构如下:

root (pom.xml)
  +--- model (pom.xml)
  +--- commons (pom.xml)
  +--- server (pom.xml)
  +--- frontend (pom.xml)
Run Code Online (Sandbox Code Playgroud)

在每个模块中,例如在 commons 中,您定义对模型模块等的依赖关系。构建顺序将由 Maven 自动完成。

对于此类项目,您可以简单地转到根目录并执行以下操作:

mvn clean package
Run Code Online (Sandbox Code Playgroud)

您还可以使用:

mvn --pl --am server
Run Code Online (Sandbox Code Playgroud)

这将自动构建服务器以及所有依赖的模块。

  • 在詹金斯中有一个名为“增量构建”的配置,这将仅构建已更改的内容。 (2认同)