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