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

mvn clean verify仅运行surefire插件未执行MyIT集成测试问题排查

问题根因

你的maven-failsafe-plugin未被Maven构建生命周期实际绑定执行,核心问题是插件配置位置错误:你把maven-failsafe-plugin的配置全部写在了<pluginManagement>标签下,没有在<build><plugins>节点下显式声明该插件。

  • <pluginManagement>的作用仅为统一管理插件版本、预置通用配置,相当于给插件定义公共模板,不会自动将插件加入项目构建执行流程,只有当插件被当前POM的<plugins>节点显式声明、或是被父POM引入时,这里的配置才会生效。
  • maven-compiler-plugin、maven-surefire-plugin、maven-jar-plugin这类属于Maven打jar包时默认绑定生命周期的内置插件,即使只在pluginManagement中配置也会自动执行;但maven-failsafe-plugin不属于默认绑定的内置插件,仅在pluginManagement中配置执行目标不会触发它挂载到生命周期中,因此执行mvn verify时根本不会启动failsafe插件。

补充现象解释

为什么执行mvn clean test-compile failsafe:integration-test可以成功运行测试?
命令行直接指定插件目标时,Maven会直接调用对应插件,自动读取pluginManagement中预置的配置,因此可以正常执行用例。而failsafe:verify目标的作用仅为校验集成测试的执行结果,不会主动触发测试运行,单独执行该命令时没有前置的测试执行步骤,自然不会跑用例。

日志中出现的JAR will be empty警告和测试不执行问题无关,是因为你的src/main/java目录下没有任何业务源码,所有类都存放在src/test/java测试目录下,Maven打主jar包时找不到可打包的业务代码,属于正常提示。

修复方法

保留<pluginManagement>中对failsafe插件的版本、配置、执行目标定义,同时在<build>下的<plugins>节点中显式声明failsafe插件即可,调整后的build配置结构参考:

<build>
    <!-- 保留pluginManagement做统一配置管理 -->
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M4</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>3.0.0-M4</version>
                <configuration>
                    <skipTests>false</skipTests>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>

    <!-- 显式声明需要实际执行的插件,failsafe才会绑定到构建生命周期 -->
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
        </plugin>
    </plugins>
</build>

调整完成后再执行mvn clean verify,即可看到failsafe插件正常启动,自动识别并执行MyIT.java中的集成测试用例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:21:29