测试失败后如何强制 Maven 执行下一个目标

Boh*_*anN 5 java testing pom.xml maven

我正在使用surefire插件对项目进行测试,然后需要使用“站点”目标生成报告,即使测试失败。

问题是,默认情况下,surefire 会在测试失败的情况下强制构建失败,并且不会执行进一步的目标。所以我将以下配置设置为surefire:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire.version}</version>
        <configuration>
            <testFailureIgnore>true</testFailureIgnore>
        </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

这很有效,并且“站点”目标始终被执行,但在这种情况下,构建状态始终为“成功”,因此我无法设置电子邮件通知。

在“测试”目标之后是否有正确的方法来执行下一个目标而不忽略surefire插件中的失败?

gly*_*ing 7

你可以使用:

  • -DskipTests=true 完全跳过测试执行
  • -Dmaven.test.failure.ignore=true 忽略测试失败
  • --fail-at-end让构建测试阶段之后继续并且只有在整个构建周期完成时才会失败(如果有测试失败)

鉴于此声明...

这很有效,并且“站点”目标始终被执行,但在这种情况下,构建状态始终为“成功”,因此我无法设置电子邮件通知。

...我想你想用--fail-at-end. 根据文档,它的行为是:

--fail-at-end - 如果特定模块构建失败,则继续反应器的其余部分并在最后报告所有失败的模块