我可以在Ant build.xml中指定要编译的JDK路径吗?

我想将JDK 1.6用于项目的一个分支,而其他人则继续使用JDK 1.5.开发人员希望偶尔在这些之间切换.

那么告诉Ant’s javac使用哪个JDK的最佳方法是什么?最好的,我的意思是一个强大,透明,低维护,与源一起版本化(Ant本身和JDK肯定不是,但它们生活在标准的地方).

显而易见的 – 比我想的更好的方法是在Ant之外:继续改变JAVA_HOME env变量.然而,这将需要开发人员手动切换(另一件事要记住:容易出错),更改所有–man-build服务器(现在为我工作更多).

寻找一些简单的javac属性,例如jdk-path,我注意到了几个(感谢在网上读取并在SO中):

>编译 – 公平,但文档说“现代:.. javac1.5和javac1.6 ..作为别名”..对我来说,这表明它不会有任何区别 – 是吗?
> source-似乎只与JLS版本有关(虽然没有?从上面链接的文档中清除0)
> target – 字节码版本
> bootclasspath – 一些SO答案提到这一点,但很不清楚,似乎是hackish
>可执行文件 – javac的路径,但不是libs .. – 似乎是最接近的匹配,隐式指定JDK路径?更新:由JB Nizet确认
> fork – 看来我在这里需要true(否则它会忽略上面没有错误?).更新:任何性能影响与默认值? (我猜JVM启动时间现在好些了,但仍然)

所以,它们本身似乎没有任何帮助..这些等同于在运行Ant之前设置JAVA_HOME的任何组合?

我有一些黑客的想法(例如,在每个平台上包装ant可执行文件只是为了设置env var – 非常难过),但我真的希望我错过了一些东西:)

最佳答案
使用executable属性需要将fork属性设置为true.这意味着javac ant任务将启动外部进程来执行javac.

手动启动javac时,您不必指定任何特定的JDK lib目录:它知道在哪里可以找到它所属的JDK库.如果你通过ant的javac任务启动它(除非你覆盖bootclasspath),我会说它会是一样的.

转载注明原文:我可以在Ant build.xml中指定要编译的JDK路径吗? - 代码日志