使用mvn插件执行工程单元测试OOM的解决办法

在执行mvn test时,maven会启动一个fork进程来运行所有的单元测试类,所以我需要设置的是这个fork进程的jvm参数。

不过最终还是让我找到了http://maven.apache.org/plugins/maven-surefire-plugin/examples/system-properties.html这个地址,在这篇文章的最末尾,看到了<argLine>….</argLine>的配置,于是在单元测试的工程中加了插件的配置,如下所示:

这里的配置还有一个provider配置的问题,默认情况下surefire会根据工程中junit的版本来选择provider等,具体的解释可以看:http://maven.apache.org/plugins/maven-surefire-plugin

问题解决了之后倒是冒出关于这个插件更丰富的配置的文章:http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html,在这里甚至发现了一个forkMode的参数,原来运行mvn test也不是一定要启动另外一个fork进程的,通过forkMode可以修改这个配置,forkMode默认值是once,这个配置会启动一个新的jvm fork进程用来跑单元测试,把forkMode参数设置成never,单元测试跑的时候就会由maven的主进程来跑了,也就是说这时候再通过MAVEN_OPTS来进行设置jvm参数也是可以行得通的了

原文地址:https://www.cnblogs.com/lgm1999/p/5479630.html