如果多模块Maven项目中存在测试失败,则Jenkins构建失败
现在我有一个项目,我们把它叫做如果多模块Maven项目中存在测试失败,则Jenkins构建失败,maven,jenkins,multi-module,Maven,Jenkins,Multi Module,现在我有一个项目,我们把它叫做mightymouse。Mightymouse POM是一个多模块项目,用于Mightymouse web和MighMouse后端 两个子模块都进行了测试。在我的情况下,可能会使用web项目首先编译、测试、打包、安装和部署。然后,-后端项目通过,但在集成测试阶段失败。(然而,它仍然要经过deploy阶段) Jenkins作业设置为执行mvn clean deploy 问题:是否有任何方法可以防止Maven在测试失败的模块上执行部署步骤?默认情况下,Maven多模块构
mightymouse
。Mightymouse POM是一个多模块项目,用于Mightymouse web
和MighMouse后端
两个子模块都进行了测试。在我的情况下,可能会使用web
项目首先编译、测试、打包、安装和部署。然后,-后端
项目通过,但在集成测试
阶段失败。(然而,它仍然要经过deploy
阶段)
Jenkins作业设置为执行mvn clean deploy
问题:是否有任何方法可以防止Maven在测试失败的模块上执行部署步骤?默认情况下,Maven多模块构建也使用
——快速失败
——默认行为——每当模块构建失败时,立即停止整个构建
此外,默认情况下,只要集成测试通过该选项失败,就已经失败了
将其设置为true
以忽略测试期间的故障。不推荐使用,但有时使用非常方便。用户属性:
maven.test.failure.ignore
默认值:
错误
注意,对于单元测试,该方法是有效的
因此,默认情况下,一旦测试失败(单元测试或集成测试),多模块构建就应该停止,不再构建更多的模块,也不再调用更多的maven阶段
但是,默认情况下,Maven-Jenkins作业(而不是调用Maven的freestyle-Jenkins作业)设置为true
,因此构建不会失败,它将继续并部署,而作业将设置为不稳定
,而不成功
(但仍在部署)
因此,您可以将Jenkins作业中的maven调用更改为:
mvn clean deploy -Dmaven.test.failure.ignore=false
覆盖默认设置并满足您的要求。您在聚合器上运行
mvn clean deploy
,对吗?如果是这样,我想知道为什么web
是首先构建的?web
是否使用来自后端的依赖项?我们可以看到POM和构建输出的一些相关部分吗?这只是一个例子,比如说后端依赖于web。这是否意味着这不是一个真正的问题?一个以防万一的问题。。。?