Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
643 views
in Technique[技术] by (71.8m points)

java - How to set -XX:PermSize=64m in maven-compiler-plugin?

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...