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

Maven Failsafe插件中显式定义默认目标是否必要?

Maven Failsafe插件:是否需要显式配置integration-test和verify目标?

结论先给:如果只是用Failsafe的默认功能,显式配置这两个目标确实是冗余操作。

原因很简单:Maven的Failsafe插件本身已经预设了生命周期绑定——它的integration-test目标会自动绑定到Maven生命周期的integration-test阶段,verify目标会自动绑定到verify阶段。只要你在pom.xml里声明了这个插件(哪怕只写基础的插件坐标,不加任何executions配置),运行mvn verify时,这两个目标就会自动触发执行,和你显式写executions的效果完全一样。

那什么时候需要显式配置?只有当你需要修改目标的默认行为时才有必要:

  • 自定义集成测试类的匹配规则(默认是**/*IT.java,你想额外匹配**/*IntegrationTest.java)
  • 给测试目标添加额外的系统属性、JVM参数
  • 跳过某个阶段的执行,或者调整目标的执行顺序
  • 配置多环境下的不同测试规则

举个例子,默认的插件声明就足够满足基础需求:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>3.2.5</version>
</plugin>

运行mvn verify,integration-test和verify目标会自动执行。

但如果要自定义测试规则,这时候显式配置executions就很有必要:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>3.2.5</version>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
            <configuration>
                <includes>
                    <include>**/*IT.java</include>
                    <include>**/*IntegrationTest.java</include>
                </includes>
                <systemPropertyVariables>
                    <env>test</env>
                </systemPropertyVariables>
            </configuration>
        </execution>
    </executions>
</plugin>

回到你的问题:网上的示例代码显式配置这两个目标,要么是为了演示自定义配置的写法,要么是作者习惯把默认行为显性化(虽然没必要)。如果你不需要修改默认逻辑,完全可以删掉这段executions配置,执行效果不会有任何变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:40:40