在Windows上的Maven 2下设置Java堆空间

Gan*_*row 91 maven-2

我在构建项目期间收到此消息

java.lang.OutOfMemoryError:Java堆空间

我如何增加堆空间,我有8Gb或RAM是不可能的,maven消耗了那么多,我发现这个http://vikashazrati.wordpress.com/2007/07/26/quicktip-how-to-increase-the -java-heap-memory-for-maven-2-on-linux /如何在linux上执行它,但我在Windows 7.如何在Windows下更改java堆空间?

Pas*_*ent 117

MAVEN_OPTS例如,要设置的环境变量MAVEN_OPTS=-Xmx1024m.maxmem仅当您将编译器插件设置为fork javac到新JVM 时,pom中的配置才适用 .否则,插件在与Maven相同的VM内运行,因此在通过命令行传递的内存中运行MAVEN_OPTS.

在Windows 7下设置MAVEN_OPTS:

  1. 右键单击我的电脑,然后选择属性(键盘快捷键按Windows+ Pause/Break)
  2. 单击" 系统属性"左侧导航中的" 高级系统设置"链接以显示" 高级系统属性"
  3. 转至高级选项卡,单击环境变量位于底部按钮高级系统属性设置窗口
  4. 创建一个新的用户变量,将变量名称设置为MAVEN_OPTS并将变量值设置为-Xmx1024m(或更多)

打开一个新的命令窗口并运行mvn.


Mar*_*uee 45

如果在确保(或故障安全)JUnit测试运行期间您的堆空间不足,更改MAVEN_OPTS可能对您没有帮助.我一直在MAVEN_OPTS中尝试不同的配置而没有运气,直到我发现这个帖子解决了问题.

基本上JUnits分叉到他们自己的环境中并忽略MAVEN_OPTS中的设置.您需要在pom中配置surefire以为JUnit添加更多内存.

希望这可以节省别人一些时间!


编辑:复制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>
Run Code Online (Sandbox Code Playgroud)

更新(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>
Run Code Online (Sandbox Code Playgroud)


cor*_*iKa 21

它应该是相同的命令,除了SET而不是EXPORT

  • 设置MAVEN_OPTS = -Xmx512m会给它512Mb的堆
  • 设置MAVEN_OPTS = -Xmx2048m会给它2Gb的堆


小智 9

在Mac上:与其JAVA_OPTSMAVEN_OPTS使用_JAVA_OPTIONS代替.这有效!