如果多模块Maven项目中存在测试失败,则会失败Jenkins构建

时间:2016-04-26 22:35:04

标签: maven jenkins multi-module

目前我有一个项目,我们称之为mightymouse。 Mightymouse POM是mightymouse-webmightmouse-backend的多模块项目。

两个子模块都有测试。在我的情况下,mightymouse-web项目首先编译,测试,打包,安装和部署。然后-backend项目通过,但在integration-test阶段失败。 (然而,它仍然会进入deploy阶段。)

Jenkins作业设置为执行mvn clean deploy

问题:无论如何都要阻止Maven在任何未通过测试的模块上一直走到deploy步骤?

1 个答案:

答案 0 :(得分:1)

默认情况下,maven多模块版本也使用fail-fast option

  

<?php $validkey = "Test" ?> <script type="text/javascript"> function check_value() { var password = document.getElementById("password").value; if (password == '<?php echo $validkey; ?>') { location.href = "tafels.html"; } } </script> <input type ="text" name="password" id="password" /> <button onclick="check_value();">Login</button> - 默认行为 - 每当模块构建失败时,立即停止整体构建

此外,默认情况下,只要集成测试通过maven-failsafe-plugin选项失败,testFailureIgnore就会失败

  

将此设置为--fail-fast以忽略测试期间的失败。它的使用不推荐,但偶尔也很方便。
  用户属性true
  默认maven.test.failure.ignore

请注意,maven-surefire-pluginthe same单元测试。

因此,默认情况下,一旦测试失败(单元测试或集成测试),多模块构建就应该停止,不会构建更多的模块,也不应该调用进一步的maven阶段。

然而,默认情况下Maven Jenkins的工作(而不是调用Maven的自由式Jenkins工作)set this optionfalse,因此构建不会失败,它将继续并部署,同时工作将设置为true而不是UNSTABLE(但仍在部署中)。

因此,您可以将Jenkins作业中的maven调用更改为:

SUCCESSFUL

覆盖Jenkins默认设置并满足您的要求。