当前位置: 首页 > 知识库问答 >
问题:

如何使 jenkins 在生成依赖项时触发依赖项目的生成

颜嘉福
2023-03-14

我有什么似乎是一个简单的问题,关于如何设置Jenkins和maven 3。

为了简单起见,假设我们有四个项目:

没有依赖关系的模型
Commons依赖于模型
服务器依赖于Common和模型
前端依赖于模型

我想要实现的是,一个成功的基于模型的构建触发所有项目的新构建,这些项目在其pom中依赖于模型(这里是公共的,服务器和前端)

如果Common失败,则无需构建服务器。

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

Jenkins是否可以通过解析Jenkins中定义的每个项目的pom来推断依赖关系树,并自动html" target="_blank">执行某种优化的构建顺序/依赖关系处理,或者我是否必须如上所述设置“当上游项目正在构建时阻止构建”和“在其他项目构建后构建[依赖项目列表]”?

我用的是Jenkins 1.473版和Maven 3。< br >我们的maven项目pom不使用parent或module标记。

/本杰明

共有3个答案

傅穆冉
2023-03-14

两种解决方案。

> < li>

在仅声明构建顺序(模型、公共、服务器和前端)的其他项目之上创建一个模块pom。把这个项目安装到詹金斯

在每个作业中,都有一个复选框以“是什么触发了构建”的形式激活-

从智志
2023-03-14

对于这种情况,最好的解决方案是创建一个多模块构建,从而产生以下结构:

root (pom.xml)
  +--- model (pom.xml)
  +--- commons (pom.xml)
  +--- server (pom.xml)
  +--- frontend (pom.xml)

在每个模块中,例如在commons中,你定义了一个对模型模块的依赖。构建顺序将由maven自动完成。

有了这样的项目,你可以简单地去根并做:

mvn clean package

您也可以使用:

mvn --pl --am server

它将自动构建服务器以及所有相关模块。

申屠昌胤
2023-03-14

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

“生成快照依赖项时生成”

然后你签入模型,jenkins基于SVN轮询启动该项目的构建,当构建完成时,它会看到公共对模型有依赖关系,因此它会触发公共的构建,以查看它是否仍然针对更新的模型构建。

jenkins作业必须创建为maven作业,此选项才会出现。它不适用于自由风格的项目,即使它们运行一个恰好调用maven的脚本。

 类似资料:
  • 所以我有一个大型Java项目,我称之为ProjectA。我还有另一个项目,ProjectB,这是一个Maven项目,它包括ProjectA作为依赖项(通过将ProjectA编译为jar文件)。我还有许多其他Maven项目:ProjectC1、ProjectC2等。其中每一个都包括ProjectB作为Maven依赖项。 ProjectB包含所有ProjectC项目通用/可访问的代码,以及从Proje

  • 正如spark文档所述,我运行来构建spark 1.6.2,但出现如下错误: [信息]正在更新{file:/home/charlielin/workspace/spark-1.6.2/}网络-洗牌...[info]解决org.fusesource.jansi#jansi;1.4...[警告]::::::::::::::::::::::: 未解决的依赖关系:::[警告]:::::::::::::::

  • 我正在尝试生成。jar,但是当它是使用Maven publishing生成的时候,它也生成了一个. pom文件。 问题是,我有另一个项目,当它实现这个依赖关系时,它以前只查找.jar,而现在它在所有其他项目中查找.pom,我想做的是,该项目停止使用“发布”任务生成.pom或在实现时停止寻找.pom文件以供其他项目使用。 下面是在 Artifactory 项目 A 中生成.jar的代码,其中项目 B

  • 我正在为Eclipse使用m2e Maven插件。我有5个eclipse项目。一个web应用程序项目,然后4个项目作为我的web应用程序的jars依赖项。

  • 我用Spring Boot创建了一个多模块项目,用于部署我的应用程序,并使用gradle作为我的构建工具。 现在,我正在为项目中的一些模块创建独立的部署。有些项目需要嵌入式tomcat,有些则不需要。所有的公共依赖都放在一个公共项目上,所有其他模块都依赖于这个公共项目。 我在建筑中这样做。Gradle其他项目 但是在构建它时抛出了这个错误: 启动失败:生成文件'/users/user1/docum

  • 我想知道下面是否可行以及如何实现。 我正在学习Spring boot的教程,其中提到我们可以有一个父依赖项。 然后定义没有版本号的依赖项。 这将在项目依赖项中添加依赖项版本1.5.6。释放sping-boot-starter和sping-boot-starter-web。 就像那样,我想找到什么是<代码> Spring-上下文 spring-jdbc Spring测试 谢谢!