如何在maven-compiler-plugin中设置-XX:PermSize = 64m?

我假装使用maven-compiler-plugin(v3.2)设置permsize或maxpermsize。

我试过这样的:

 org.apache.maven.plugins maven-compiler-plugin  1024m 2024m -XX:PermSize=128m   

这导致错误

 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

  org.apache.maven.plugins maven-compiler-plugin  1024m 2024m  128m 1024m 256m 128m    

导致同样的错误:

 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变量时优雅地考虑它?

从javac文档:

-Joption传递给javac调用的java启动程序的选项。 例如,-J-Xms48m将启动内存设置为48兆字节。

基于以上内容:

  -J-XX:PermSize=128m -J-XX:MaxPermSize=256m  

首先是关于文档中的参数的提示

如果fork设置为true,则设置要传递给编译器的参数。 例:

  -Xmaxerrs=1000 -XX:PermSize=128m  

这意味着如果您需要它们来构建,您必须通过MAVEN_OPTS执行此MAVEN_OPTS或者您可以在.mavenrc (linux)或mavenrc_pre.bat (Windows)中定义它们。

你可以添加

export MAVEN_OPTS=-Xmx512m

在你的〜/ .bash_profile中