增加m2e Eclipse插件中的堆大小

17

如何增加m2e Eclipse插件的堆大小?基本上,我正在尝试在STS(SpringSource的Eclipse版本)下使用预安装的m2e(Eclipse中流行的Maven插件)运行使用Cargo和Selenium的自动化集成测试。

每当我运行时

mvn verify

我遇到了臭名昭著的java.lang.OutOfMemoryError: Java堆空间...,错误信息显示63M/63M。我首先做了一些研究,尝试通过MAVEN_OPTS、Eclipse.ini / STS.ini、运行配置和甚至是通过pom.xml中的Maven插件来增加内存。但都没有改变什么,错误依旧,内存大小也是63M/63M。

我知道我的项目是有效的,POM文件也是正确的。为什么呢?因为当我使用一个独立的Maven命令来运行时,集成测试与Selenium和Cargo正常运作。实际上这是最新输出(3分钟前):

[INFO] [beddedLocalContainer] Jetty 8.x Embedded is stopped
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4 minutes 24 seconds
[INFO] Finished at: Wed Oct 26 14:08:16 CST 2011
[INFO] Final Memory: 70M/149M
[INFO] ------------------------------------------------------------------------
我并不是在问如何增加独立的Maven命令中的内存,而是特别询问如何增加m2e的堆大小。
注意:默认情况下,m2e Eclipse插件没有指向"verify"目标的快捷方式。您必须通过运行配置创建一个新的目标(需要说明的是,它没有Args选项卡)。
5个回答

36

当使用 Maven 2 插件时,在 eclipse.ini 或 MAVEN_OPTS 环境变量中设置 Java 选项将不会影响您的构建。您需要通过 Eclipse 的“编辑配置和启动”对话框添加一些命令行参数。

"运行为" > "Maven 构建",点击 "JRE" 选项卡,输入 VM 参数,例如:

-Xms128M -Xmx512M


1
有没有办法我们可以将这个配置永久地添加到m2e中?这样我们就不必在每次运行/构建时都输入了吗? - KyelJmD
4
是的,您可以通过Eclipse > Preferences > Maven > Installations > "Global settings for embedded installation"来添加它们。在那里,您可以指向Eclipse之外的maven设置。 - crasp
1
在 JBoss Developer Studio 8.1.0.GA 中,Preferences > Maven > Installations 显示两个 Maven 安装:EMBEDDED 和 WORKSPACE。它们都是灰色的,Edit... 按钮也是如此。 - nclark

11
作为对已经接受的答案的补充,当你在命令行上调用"mvn"时,实际上调用的是mvn.bat(或mvn.sh)包装脚本。正是这个包装脚本在启动实际的maven jvm时使用了MAVEN_OPTS环境变量。
另一方面,m2e希望更多地控制如何启动maven jvm,因此直接执行此操作而不使用包装器。这就是为什么您需要将内存设置直接添加到m2e运行/调试配置的VM参数中,而不是使用MAVEN_OPTS的原因。
如果您想让m2e将MAVEN_OPTS中已有的内容传递给maven jvm,请在Eclipse中的“编辑配置和启动”对话框中:
“Run As”>“Maven Build”,单击“JRE”选项卡,输入VM参数。
${env_var:MAVEN_OPTS}

1
您可以在pom.xml中添加内存设置:

<plugin>
 <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    ...
    <fork>true</fork>
    <meminitial>128m</meminitial>
    <maxmem>512m</maxmem>
    ...
  </configuration>
</plugin>

所有maven-compiler-plugin参数的描述在此处:链接

0
你尝试设置运行配置中的MAVEN_OPTS环境变量了吗?
MAVEN_OPTS="-Xmx768M -XX:MaxPermSize=128m" 

如果在运行配置中设置无效,可能需要编辑系统环境变量。请参见此处此处


是的,我做了。但那并没有影响m2e插件。不过它确实影响了独立的Maven插件。 - krams

0
我曾经遇到过类似的问题。在Windows上创建一个名为mavenrc_pre.bat的文件,在Linux上创建一个名为.mavenrc的文件,放置在你的主目录下,并在其中设置你想要的maven_opts选项。 这个方法适用于与Eclipse Indigo捆绑的m2e。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接