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

时间:2011-06-09 01:03:34

标签: java ant javac

我几乎可以肯定,如果不编写我自己的Task类,我就无法真正做到这一点,但我想我还是会问。是否有一些魔法属性或ant任务与<javac>一样,但运行我的$JAVA_HOME/bin/javac可执行文件,而不是运行$JAVA_HOME/lib/tools.jar中javac类的代码?我想这样做的原因是因为我可以将javac二进制文件更改为始终使用Xlint进行编译,所以在没有编辑它们的情况下让所有build.xml文件也可以这样做是很好的。 (有些人通过其他任务进行了隐式javac调用...)<javac>的编译器属性适用于类代码,它不允许您只指定要运行的文件。

2 个答案:

答案 0 :(得分: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"
  />

答案 1 :(得分:0)

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