我用maven编译器插件(v3.2)设置permsize或maxpermsize失败。
我是这样尝试的:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<meminitial>1024m</meminitial>
<maxmem>2024m</maxmem>
<compilerArgument>-XX:PermSize=128m</compilerArgument>
</configuration>
</plugin>这会导致错误
Caused by: org.codehaus.plexus.compiler.CompilerException: invalid flag: -XX:MaxPermSize=256m -XX:PermSize=128m
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:191)
at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:169)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:785)
... 22 more
Caused by: java.lang.IllegalArgumentException: invalid flag: -XX:MaxPermSize=256m -XX:PermSize=128m
at com.sun.tools.javac.api.JavacTool.processOptions(JavacTool.java:231)
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:199)
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:68)
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:115)
... 24 more我的另一个尝试是添加它,如示例http://maven.apache.org/plugins/maven-compiler-plugin/examples/pass-compiler-arguments.html中所示
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<meminitial>1024m</meminitial>
<maxmem>2024m</maxmem>
<compilerArguments>
<Xms>128m</Xms>
<Xmx>1024m</Xmx>
<XX:MaxPermSize>256m</XX:MaxPermSize>
<XX:PermSize>128m</XX:PermSize>
</compilerArguments>
</configuration>
</plugin>导致完全相同的错误:
Caused by: org.codehaus.plexus.compiler.CompilerException: invalid flag: -XX:MaxPermSize
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:191)
at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:169)
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:785)
... 22 more
Caused by: java.lang.IllegalArgumentException: invalid flag: -XX:MaxPermSize
at com.sun.tools.javac.api.JavacTool.processOptions(JavacTool.java:231)
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:199)
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:68)
at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:115)
... 24 more那么,为什么这个标志是无效的?当我将它添加到MVN_OPTS变量时,它是否被优雅地考虑在内?
发布于 2014-11-21 15:23:41
从javac文档中:
-Joption将选项传递给javac调用的java启动器。例如,-J-Xms48m将启动内存设置为48 to。
基于以上几点:
<compilerArgs>
<arg>-J-XX:PermSize=128m</arg>
<arg>-J-XX:MaxPermSize=256m</arg>
</compilerArgs>发布于 2014-11-20 17:13:04
首先,有一个关于the parameters in the docs的提示
如果fork设置为true,则
设置要传递给编译器的参数。示例:
<compilerArgs>
<arg>-Xmaxerrs=1000</arg>
<arg>-XX:PermSize=128m</arg>
</compilerArgs>这意味着如果你在构建时需要它们,你必须通过MAVEN_OPTS来完成,或者你可以在.mavenrc (linux)或mavenrc_pre.bat (Windows)中定义它们。
发布于 2014-12-03 14:26:51
您只需添加
export MAVEN_OPTS=-Xmx512m
在您的~/..bash_profile中
https://stackoverflow.com/questions/27035389
复制相似问题