【问题标题】:Ant javac task running executable instead of java classes运行可执行文件而不是 java 类的 Ant javac 任务
【发布时间】:2011-06-09 01:03:33
【问题描述】:

我几乎可以肯定,如果不编写自己的任务类,我真的无法做到这一点,但我想我还是会问。是否有一些魔法属性或 ant 任务可以像 <javac> 一样工作,但运行我的 $JAVA_HOME/bin/javac 可执行文件,而不是运行 $JAVA_HOME/lib/tools.jar 中 javac 类的代码?我想这样做的原因是因为我可以将 javac 二进制文件更改为始终使用 Xlint 编译,最好让周围的所有 build.xml 文件也这样做而无需编辑它们。 (还有一些通过其他任务隐式调用 javac...)<javac> 的编译器属性是针对类代码的,它不允许您简单地指定要运行的文件。

【问题讨论】:

    标签: java ant javac


    【解决方案1】:

    Javac 任务有fork 属性,也有executable 属性。结合这些。

    另外,您可能想设置compiler=extJavac,但我不确定这是否会改变什么。

    这是来自示例部分的引用:

    如果你想运行不同 JDK 的 javac 编译器,你应该告诉 Ant, 在哪里可以找到编译器以及您将使用哪个版本的 JDK,所以它 可以选择正确的命令行开关。下面的例子执行 新进程中的 JDK 1.1 javac 并使用正确的命令行开关 即使 Ant 在不同版本的 Java VM 中运行:

      <javac srcdir="${src}"
             destdir="${build}"
             fork="yes"
             executable="/opt/java/jdk1.1/bin/javac"
             compiler="javac1.1"
      />
    

    【讨论】:

      【解决方案2】:

      Ant 可以使用预设重新定义现有的以具有新的行为。 preset definition 基于当前定义和一些属性或元素预设生成一个新定义。这带有compilerarg 标志可以帮助你。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-22
        • 2012-08-09
        • 1970-01-01
        • 2012-06-02
        • 2011-12-08
        • 2011-12-11
        • 2023-03-22
        相关资源
        最近更新 更多