我在一个项目上运行测试,使用的是安全插件,然后需要生成一个使用“站点”目标的报告,即使有失败的测试。
问题是,在默认情况下,在测试失败的情况下,强制构建失败,并且不会执行进一步的目标。因此,我将以下配置设置为“尽责”:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>这很好,“站点”的目标总是被执行,但是在这种情况下,构建的状态总是“成功”,所以我不能设置电子邮件通知。
在“测试”目标之后,是否有一种正确的方法来执行下一个目标,而不忽略万无一失插件中的失败?
发布于 2017-09-05 10:36:14
你可以用:
-DskipTests=true完全跳过测试执行-Dmaven.test.failure.ignore=true忽略测试失败--fail-at-end让构建在测试阶段之后继续,并且只在整个构建周期完成时失败(如果有测试失败)鉴于这份声明..。
这很好,“站点”的目标总是被执行,但是在这种情况下,构建的状态总是“成功”,所以我不能设置电子邮件通知。
..。我想你想使用--fail-at-end。根据医生的说法,其行为是:
--fail-at-end -如果某个特定模块的构建失败,请继续反应堆的其余部分,并在最后报告所有失败的模块。
发布于 2017-09-05 14:31:55
我在一个项目上运行测试,使用的是安全插件,然后需要生成一个使用“站点”目标的报告,即使有失败的测试。
如果我正确地理解了您的问题,那么您所做的就相当于简单地运行mvn site (或mvn site:stage)目标!它将在运行测试之后生成站点,并且(如果配置为这样的话)包含一个失败和没有失败的报告。它不会失败,因为您没有要求‘测试项目’,而是‘用测试结果构建项目的站点’,这是成功的。
..。构建的状态总是“成功”,所以我无法设置电子邮件通知。
根据您的描述,我假设发送通知是基于构建状态的,并且通知具有到生成站点的链接。如果是这样的话,我可以想到三个选项,它们可以给你你想要的东西:
${basedir}/target/surefire-reports中)触发,而不是生成状态。然后您可以简单地运行mvn site。mvn test。mvn site test,它将首先生成站点(运行测试并忽略生成报告的失败),然后运行测试(再次)以失败构建。https://stackoverflow.com/questions/46052425
复制相似问题