代码之家  ›  专栏  ›  技术社区  ›  Denys Kniazhev-Support Ukraine

Ant:将compilerg传递到javac

  •  27
  • Denys Kniazhev-Support Ukraine  · 技术社区  · 15 年前

    我有一个ant脚本可以编译:

                <javac srcdir="${test.src.dir}" destdir="${test.dist.dir}">
                   ...  
                   <compilerarg value="-Xlint:unchecked" />
                </javac>
    

    我需要增加编译器的堆内存,所以我将以下参数放入 compileargs :

    <compilerarg value="-Xlint:unchecked -Xms128m -Xmx512m" />
    

    但控制台有个错误:

    [javac] javac: invalid flag: -Xms128m
    [javac] Usage: javac <options> <source files>
    

    javac ?

    3 回复  |  直到 12 年前
        1
  •  54
  •   Mike Clark    14 年前

    默认情况下, <javac> 与Ant一起运行。Java的一个普遍限制是不能调整JVM进程' Xms Xmx 一旦JVM进程启动。因此,您看到的错误消息是软件拒绝您违反此原则的尝试(使用一个无用的、不友好的错误消息)

    fork="true" <javac> 能够指定新的 圣诞节 fork 指示Ant启动要在其中运行的新JVM子进程 javac . 因为JVM进程是新的,所以它为Ant提供了一个可接受的机会来指定 圣诞节 为了它。


    你可以试试这样的方法:

    <project name="project" default="all" basedir="[yourvalue]">
        <target name="all">
            <javac srcdir="[yourvalue]" destdir="[yourvalue]" fork="true">
                <!-- javac requires that -Xmx and -Xms be prefixed with -J -->
                <compilerarg line="-J-Xms128m -J-Xmx512m" />
            </javac>
        </target>
    </project>
    

    compilerarg line="" 而不是 compilerarg value="" . 这个 line value 属性用于传递单个参数。)


    蚂蚁会等叉子 <javac> 退出,之后发生 爪哇语 爪哇语 失败或成功,并根据此信息采取常规操作。


    性能

    通常情况下 爪哇语 ,只需为初始Ant JVM整体优化相关的内存设置。这通常是(但并不总是)最好的选择,因为启动单独的JVM通常比简单地允许 爪哇语

    如果你用的是蚂蚁 ant.bat ant.sh 启动蚂蚁,一个简单的方法来调整蚂蚁的 圣诞节 定义环境变量ANT OPTS以包含所需的参数。有很多方法可以设置环境变量,但是您可以只编辑 :

    set ANT_OPTS=-Xms128m -Xmx512m
    
        2
  •  6
  •   CoolBeans Jake    15 年前

    你试过了吗 <jvmarg value="-Xmx512m" /> example ,不是很有用,但有build.xml。

    为了增加Javac堆空间,我在google时找到了这个。

    <javac fork="true"
           srcdir="${basedir}/src"
           destdir="${basedir}/build/classes"
           classpath="${project.classpath}"
           memoryinitialsize="256m"
           memorymaximumsize="256m">
    </javac>
    

    是从这里抄来的 link . 把叉子设置为真很重要。

        3
  •  2
  •   mikej heading_to_tahiti    15 年前

    javac -Xms128m -Xmx512m 直接的。

    你需要使用 -J

    -J-Xms128m -J-Xmx512m 而不是仅仅 -Xms128m -Xmx512m compilerarg .

    javac -X 用于向编译器传递非标准选项。如果运行命令 javac-X语言 它将显示一个合法选项列表,其中包括 -Xlint -J型 .

    替代方案

    memoryInitialSize (相当于 -Xms )以及 memoryMaximumSiz -Xmx )的选项 javac 任务,所以尝试这些而不是使用 compilerargs

    <javac srcdir="${test.src.dir}" destdir="${test.dist.dir}"
      memoryInitialSize="128m"
      memoryMaximumSize="512m">
    
    推荐文章