2012-07-23 153 views
1

我正在制作一个由多个项目组成的Web应用程序,其中包括23个项目,其中一些是Java项目,另外一些是动态Web项目。当我从RAD制作EAR时,它会成功生成,但是当我尝试从MAVEN制作EAR时,它会引发堆大小问题。当我减少POM.xm中的项目数(即从23到12)时,成功生成了EAR,但增加项目数会带来堆大小相同的错误。从maven构建jvm堆大小错误

如果我设置环境变量MAVEN_OPTS = -Xmx1024M,它不起作用。我的电脑内存为2 GB,当我尝试设置MAVEN_OPTS = -Xmx2048M时,由于它无法为JVM保留这么多空间,因此会引发错误。

我有jdk 1.7和maven 3.

请确认。

+1

您正在使用maven从CMD或任何IDE? – 2012-07-23 11:35:51

+0

这两个尝试都是在同一个操作系统上进行的,对吧?没有改变的环境? – tartar 2012-07-23 11:40:18

+0

从cmd使用命令mvn -e install – ankit3533 2012-07-24 07:01:33

回答

3

建议:

  • 获得一台具有更多的内存。
  • 在运行构建之前关闭IDE。
  • 尝试将堆大小增加到之间 1Gb和2Gb。
  • 尝试使用install目标以正确的顺序逐个构建组件项目。 (有机会,这个问题是由于Maven的保持太多的东西,在内存中建立个别项目之间。)

这也是值得探讨为什么不能分配的堆2GB空间。这可能是交换空间的一个问题,或者它可能是可以解决的32位Windows 2Gb限制。

而罗兰的想法也不错。

+0

我试过给它1536,但仍然有相同的堆大小问题错误。 – ankit3533 2012-07-23 15:13:29

4

我们与我们的多模块项目有同样的问题。编译器或编译器插件似乎存在内存泄漏。所以当Maven开始构建EAR时,它也消耗太多的内存来构建EAR项目。然而,你可以建议编译器在一个单独的进程中运行,因此不会出现这个问题(见Maven docs):

<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <fork>true</fork> 
    </configuration> 
    </plugin> 
</plugins> 
+0

嗨,你能告诉我应该在哪里包括这个代码.....我在settings.xml中添加它,但它没有在那里工作。 – ankit3533 2012-07-23 13:10:26

+0

必须将其添加到pom.xml的部分。如果你按照Maven文档的链接,你可以看到完整的结构。 – 2012-07-23 13:12:34

+0

我试过使用这个,但它不工作,然后也......抛出同样的错误。有什么建议么? – ankit3533 2012-07-23 15:11:28