我一直在 Jenkins 上构建 GWT 战争文件。在特定的"工作"中,我遇到了一个错误,上面写着[ERROR] Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
。作为解决方案,我包含一个值为 -Xms512m -Xmx1024m -XX:MaxPermSize=512m
的环境变量"MAVEN_OPTS"。仅供参考,我还尝试了MAVEN_OPTS的"echo"命令提示符,它显示的值与我在环境变量中给出的值相同。
POM中的MAVEN编译器插件.xml :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<executable>${env.JAVA_HOME}/bin/javac</executable>
<fork>true</fork>
<verbose>true</verbose>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
**完整错误: **
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13:51.518s
[INFO] Finished at: Thu Jan 29 13:06:25 IST 2015
[INFO] Final Memory: 17M/989M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:gwt-maven- plugin:2.4.0:compile
(default) on project dpgwtwebapplication: Command [[
[ERROR] C:Program FilesJavajdk1.7.0_04jrebinjava -Xmx512m -classpath "C:U
同样在 mvn.bat 文件中,MAVEN_OPTS 的值显示为您在最后一个 Full 错误中注意到的-Xmx512m
。
问题不在于 java 编译过程的内存减少,而在于 gwt 编译器的内存减少。在此处显着增加内存: org.codehaus.mojo GWT-maven-plugin ...
请参阅:Codehaus.org gwt 插件用法
问题是您正在按照 maven-compiler-plugin 中的配置分叉编译器。您应该定义内存的参数,如下所示:
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<fork>true</fork>
<meminitial>128m</meminitial>
<maxmem>512m</maxmem>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>