surefire(またはフェイルセーフ)JUnitテストの実行中にヒープ領域が不足している場合、MAVEN_OPTSを変更しても役に立たない場合があります。問題を修正したこの投稿が見つかるまで、MAVEN_OPTSでさまざまな構成を試しましたが、うまくいきませんでした。
基本的に、JUnitsは独自の環境に分岐し、MAVEN_OPTSの設定を無視します。JUnitにメモリを追加するには、pomでsurefireを設定する必要があります。
うまくいけば、これは誰か他の人の時間を節約できるでしょう!
編集:いつかリンクが切れた場合に備えて、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>
更新(2017年5月31日):これを指摘してくれた@johnstoshに感謝します。私がこの答えを出して以来、確実に少し進化しました。ここに彼らのドキュメントへのリンクと更新されたコードサンプルがあります(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>