首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在maven-compiler-plugin中设置-XX:PermSize=64m?

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

Stack Overflow用户
提问于 2014-11-20 16:56:51
回答 3查看 4.1K关注 0票数 4

我用maven编译器插件(v3.2)设置permsize或maxpermsize失败。

我是这样尝试的:

代码语言:javascript
复制
<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>

这会导致错误

代码语言:javascript
复制
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中所示

代码语言:javascript
复制
<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>

导致完全相同的错误:

代码语言:javascript
复制
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变量时,它是否被优雅地考虑在内?

EN

回答 3

Stack Overflow用户

发布于 2014-11-21 15:23:41

javac文档中:

-Joption将选项传递给javac调用的java启动器。例如,-J-Xms48m将启动内存设置为48 to。

基于以上几点:

代码语言:javascript
复制
<compilerArgs>
  <arg>-J-XX:PermSize=128m</arg>
  <arg>-J-XX:MaxPermSize=256m</arg>
</compilerArgs>
票数 6
EN

Stack Overflow用户

发布于 2014-11-20 17:13:04

首先,有一个关于the parameters in the docs的提示

如果fork设置为true,则

设置要传递给编译器的参数。示例:

代码语言:javascript
复制
<compilerArgs>
  <arg>-Xmaxerrs=1000</arg>
  <arg>-XX:PermSize=128m</arg>
</compilerArgs>

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

票数 1
EN

Stack Overflow用户

发布于 2014-12-03 14:26:51

您只需添加

export MAVEN_OPTS=-Xmx512m

在您的~/..bash_profile中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27035389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档