Ant javac任务运行可执行文件,而不是java类



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

Javac任务具有fork属性,也具有executable属性。把这些结合起来。

此外,您可能想要设置compiler=extJavac,尽管我不确定这是否会更改某些内容。

以下是示例部分的一句话:

如果您想运行不同JDK的javac编译器,您应该告诉Ant,在哪里可以找到编译器以及您将使用的JDK版本可以选择正确的命令行开关。以下示例执行JDK 1.1 javac,并使用正确的命令行开关即使Ant运行在不同版本的Java虚拟机中:

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

Ant可以使用预设来重新定义现有的行为。预设定义基于当前定义生成新定义,其中预设了一些属性或元素。这与compilerarg标志可以帮助你。

最新更新