You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pom.xml中配置Maven的--fail-never及失败测试重跑?

解决Maven Profile配置测试重跑+全局不停止构建的问题

首先明确两个核心点:

  • --fail-never(简写-fn)是Maven核心的命令行全局参数,不属于测试插件的JVM参数,因此不能放到<argLine>中。
  • 测试自动重跑的配置可以直接通过maven-failsafe-plugin的参数完成,不需要通过argLine传递系统属性。

1. 在Profile中配置测试自动重跑

将重跑失败测试的逻辑直接配置到maven-failsafe-plugin里,这是更规范的做法:

<profile>
  <id>test-continue-rerun</id>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <!-- 选用与Maven 3.6兼容的版本,比如3.0.0-M5及以上 -->
        <version>3.0.0-M5</version>
        <configuration>
          <!-- 设置失败测试的重跑次数 -->
          <rerunFailingTestsCount>2</rerunFailingTestsCount>
          <!-- 可选:如果希望测试失败时插件不立即终止执行,打开下面的配置 -->
          <!-- <failOnError>false</failOnError> -->
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</profile>

2. 实现-fn(全局不停止+最终构建成功)的效果

因为-fn是Maven核心参数,无法直接写到pom.xml中,有两种可行方案:

方案一:激活Profile时携带命令行参数

执行构建时,在命令行激活Profile并加上-fn,既用Profile配置了重跑,又保留了全局不停止的特性:

mvn clean verify -Ptest-continue-rerun -fn

方案二:仅针对测试插件控制失败行为

如果你只需要测试环节失败不影响构建,而不关心其他插件的失败情况,可以在插件配置中添加以下参数:

<configuration>
  <!-- ... 已有重跑配置 ... -->
  <!-- 测试失败时,插件不抛出错误终止构建 -->
  <failOnError>false</failOnError>
  <!-- 即使没有测试用例执行,也不标记构建失败 -->
  <failIfNoTests>false</failIfNoTests>
</configuration>

注意:这种方式只能控制测试插件的行为,无法覆盖编译、打包等其他环节的失败,而-fn是全局生效的。


内容的提问来源于stack exchange,提问作者matandked

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:01:16