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

替换maven-surefire-plugin后,如何配置maven-failsafe-plugin环境变量?

解决maven-failsafe-plugin配置环境变量的问题

首先明确两个核心要点:

  1. maven-failsafe-plugin的集成测试生命周期目标与surefire不同,不能沿用<goal>test</goal>,必须替换为integration-test和verify。
  2. 环境变量配置的支持取决于插件版本,同时要区分你需要的是操作系统级环境变量还是JVM系统属性。

场景1:保持原配置行为(设置操作系统级环境变量)

maven-failsafe-plugin从2.19版本开始支持<environmentVariables>标签,配置逻辑和surefire一致,但需修正执行目标:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <!-- 必须使用≥2.19的版本,推荐用最新稳定版如3.2.5 -->
    <version>3.2.5</version>
    <executions>
        <execution>
            <id>integration-tests</id>
            <phase>integration-test</phase>
            <goals>
                <!-- 替换原surefire的test目标为failsafe专属的integration-test -->
                <goal>integration-test</goal>
            </goals>
            <configuration>
                <useSystemClassLoader>true</useSystemClassLoader>
                <includes>
                    <include>**/*IT.java</include>
                </includes>
                <!-- 直接沿用原environmentVariables配置 -->
                <environmentVariables>
                    <mavenRun>true</mavenRun>
                </environmentVariables>
            </configuration>
        </execution>
        <!-- 必须添加verify阶段执行,否则测试失败不会阻断构建 -->
        <execution>
            <id>verify-integration-tests</id>
            <phase>verify</phase>
            <goals>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

场景2:简化方案(传递JVM系统属性)

如果你的测试代码实际通过System.getProperty()获取值,而非System.getenv(),可以改用failsafe原生支持的<systemPropertyVariables>,无需依赖特定插件版本:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>3.2.5</version>
    <executions>
        <execution>
            <id>integration-tests</id>
            <phase>integration-test</phase>
            <goals>
                <goal>integration-test</goal>
            </goals>
            <configuration>
                <useSystemClassLoader>true</useSystemClassLoader>
                <includes>
                    <include>**/*IT.java</include>
                </includes>
                <!-- 替换environmentVariables为systemPropertyVariables -->
                <systemPropertyVariables>
                    <mavenRun>true</mavenRun>
                </systemPropertyVariables>
            </configuration>
        </execution>
        <execution>
            <id>verify-integration-tests</id>
            <phase>verify</phase>
            <goals>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

关键注意事项

  • 插件版本要求:使用<environmentVariables>时,版本必须≥2.19;建议始终使用最新稳定版,避免兼容性问题。
  • 不可省略verify阶段:缺少该阶段的话,即使集成测试失败,maven构建仍会标记为成功,失去测试校验的意义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:52:54