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

Spring Boot非Web项目如何解决Surefire Fork JVM超时被杀死问题?

解决Surefire插件forked进程超时问题

你的问题核心是Maven Surefire插件默认的forked进程退出超时时间(30秒)不足以等待子进程结束,导致主线程完成后插件强制杀死未退出的forked JVM,抛出超时错误。之前的配置无效是因为没找对正确的配置位置,以下是两种可行的解决方案:

方案一:在pom.xml中显式配置Surefire插件

由于你的项目依赖Spring Boot父工程,Surefire插件是被间接引入的,需要显式添加插件配置来覆盖默认超时:

<build>
    <plugins>
        <!-- 保留原有插件,新增Surefire插件配置 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <!-- 调整超时时间为60秒,可根据子进程实际运行时间修改 -->
                <forkedProcessExitTimeoutInSeconds>60</forkedProcessExitTimeoutInSeconds>
            </configuration>
        </plugin>
    </plugins>
</build>

为什么之前的配置无效?

  • 你把配置放到了spring-boot-maven-plugin里,但这个超时属性属于maven-surefire-plugin,和Spring Boot插件无关;
  • 如果用properties配置,需要加上surefire.前缀,即<surefire.forkedProcessExitTimeoutInSeconds>60</surefire.forkedProcessExitTimeoutInSeconds>,否则插件无法识别。

方案二:GitHub Action命令行指定参数

如果不想修改pom.xml,可以在GitHub Action的命令中添加正确的系统参数(注意要带surefire.前缀):

mvn package -Dsurefire.forkedProcessExitTimeoutInSeconds=60

注意版本兼容性

如果你的Surefire插件版本较旧(比如低于2.22.0),参数名可能是surefire.exitTimeout,此时命令行需要改为:

mvn package -Dsurefire.exitTimeout=60000

(这里单位是毫秒,60000即60秒)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:00:05