执行mvn install时遭遇maven-surefire-plugin测试目标失败错误
解决Maven Surefire插件“分叉VM未正常终止”构建失败问题
以下是几种常见的解决方案,按优先级尝试:
跳过测试快速构建
如果只是想先完成构建,暂时跳过测试阶段,执行Maven命令时添加参数:mvn clean install -DskipTests或者在Eclipse的Maven构建配置中,直接在Goals栏填写
clean install -DskipTests,右键项目→Run As→Maven build...即可配置。调整Surefire插件的fork配置
分叉VM异常通常和插件的fork模式有关,修改pom.xml中的插件配置:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> <configuration> <!-- 禁用分叉模式,测试在当前VM运行 --> <forkCount>0</forkCount> <!-- 若怀疑内存不足,可添加JVM参数 --> <!-- <argLine>-Xmx1024m -XX:MaxMetaspaceSize=512m</argLine> --> </configuration> </plugin> </plugins> </build>排查测试代码中的System.exit()调用
检查所有测试类,确认是否存在System.exit(int)代码——这个方法会直接终止JVM,导致Surefire插件报错。如果是测试需要模拟退出行为,可改用JUnit的ExpectedSystemExit规则(JUnit 4)或对应框架的替代方案。检查JVM崩溃日志与环境一致性
查看项目target/surefire-reports目录下的日志文件,若存在hs_err_pid*.log文件,说明JVM崩溃,可根据日志定位内存溢出或依赖冲突问题;同时确保Eclipse使用的JDK与Maven配置的JDK版本一致(Window→Preferences→Java→Installed JREs)。升级Surefire插件版本
2.19.1版本存在一些已知bug,尝试升级到较新的稳定版本,比如:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M7</version> </plugin>
内容的提问来源于stack exchange,提问作者zzindal
相关产品推荐
相关产品推荐

