问题
I faild in setting the permsize or maxpermsize with the maven-compiler-plugin (v3.2).
I tried it like this:
<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>
Which results in an error
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
My other attempt was adding it like in the example 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>
Resulting in the very same error:
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
so, why is this flag invalid? If it is gracefully taken into account when I add it to the MVN_OPTS variable?
回答1:
From the javac documentation:
-Joption Pass option to the java launcher called by javac. For example, -J-Xms48m sets the startup memory to 48 megabytes.
Based on the above:
<compilerArgs>
<arg>-J-XX:PermSize=128m</arg>
<arg>-J-XX:MaxPermSize=256m</arg>
</compilerArgs>
回答2:
First there is a hint concerning the parameters in the docs
Sets the arguments to be passed to the compiler if fork is set to true. Example:
<compilerArgs>
<arg>-Xmaxerrs=1000</arg>
<arg>-XX:PermSize=128m</arg>
</compilerArgs>
which means if you need them for you build you have to do this either via MAVEN_OPTS
or you can define them in .mavenrc
(linux) or mavenrc_pre.bat
(Windows).
回答3:
You can just add
export MAVEN_OPTS=-Xmx512m
in your ~/.bash_profile
来源:https://stackoverflow.com/questions/27035389/how-to-set-xxpermsize-64m-in-maven-compiler-plugin