如果在surefire(或故障安全)JUnit测试运行期间堆空间不足,则更改MAVEN_OPTS可能无济于事。我一直在尝试MAVEN_OPTS中的其他配置,但没有运气,直到找到解决此问题的帖子。
基本上,JUnits分叉到自己的环境中,而忽略MAVEN_OPTS中的设置。您需要在pom中配置surefire以为JUnits添加更多内存。
希望这可以节省别人一些时间!
编辑:从Keith Chapman的博客中复制解决方案,以防万一链接中断一天:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>pertest</forkMode>
<argLine>-Xms256m -Xmx512m</argLine>
<testFailureIgnore>false</testFailureIgnore>
<skip>false</skip>
<includes>
<include>**/*IntegrationTestSuite.java</include>
</includes>
</configuration>
</plugin>
更新(5/31/2017):感谢@johnstosh指出这一点-自从我把这个答案放在那里以来,surefire有所发展。这是其文档和更新的代码示例的链接(arg行仍然是此问题的重要部分):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<forkCount>3</forkCount>
<reuseForks>true</reuseForks>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
<systemPropertyVariables>
<databaseSchema>MY_TEST_SCHEMA_${surefire.forkNumber}</databaseSchema>
</systemPropertyVariables>
<workingDirectory>FORK_DIRECTORY_${surefire.forkNumber}</workingDirectory>
</configuration>
</plugin>