2014-11-20 3 views
3

Я не смог установить permsize или maxpermsize с помощью maven-compiler-plugin (v3.2).Как установить -XX: PermSize = 64 м в maven-компилятор-плагин?

Я пробовал так:

<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?

+0

Эти флаги скорее аргументы JVM, чем аргументы компилятора, не так ли? – Tome

+0

Вы абсолютно уверены, что ваша JVM поддерживает эти аргументы? Точка доступа или OpenJDK? – Mike

ответ

1

Во-первых есть намек относительно 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> 

что означает, если вы нуждаетесь в них для вас построить вы должны сделать это либо с помощью MAVEN_OPTS или вы можете определить их в .mavenrc (Linux) или mavenrc_pre.bat (Windows).

+0

Возможно ли, что JDK 1.7 не поддерживает эти флаги ?! Не может быть! Я все еще получаю сообщение об ошибке после добавления компилятораArgs. Если я добавлю эти значения в аргументы VM по умолчанию, то он будет работать. – feder

+0

Имейте в виду флаг вилки! – khmarbaise

+0

Да, я до этого догадался. Еще одна ошибка. В любом случае спасибо. – feder

4

javac Из документации:

-Joption Pass option to the java launcher called by javac. For example, -J-Xms48m sets the startup memory to 48 megabytes.

Исходя из изложенного выше:

<compilerArgs> 
    <arg>-J-XX:PermSize=128m</arg> 
    <arg>-J-XX:MaxPermSize=256m</arg> 
</compilerArgs> 
+0

Я сожалею. Это тоже не сработало. Единственное, что возможно, это добавить его в maven_opts или VM Arguments в Eclipse. Только сохранить это в maven-compiler-plugin не помогло. – feder

0

Вы можете просто добавить

export MAVEN_OPTS=-Xmx512m

в файле ~/.bash_profile

Смежные вопросы