【发布时间】:2011-06-26 12:58:20
【问题描述】:
我想将 JDK 1.6 用于项目的一个分支,而其他人继续使用 JDK 1.5。开发人员希望偶尔在这些之间切换。
那么告诉Ant's javac 使用哪个JDK 的最佳方法 是什么?最好,我的意思是健壮、透明、低维护,与源代码一起进行版本控制(Ant 本身和 JDK 肯定不是,但它们存在于标准位置)。
我猜想在 Ant 之外 是明显的 - 而不是最好的方法:不断更改 JAVA_HOME 环境变量。但是,这需要开发人员手动切换(要记住的另一件事:容易出错),更改所有 -many-build 服务器(现在对我来说还有更多工作)。
寻找一些简单的 javac 属性,例如 jdk-path,我注意到了几个(感谢在网上和 SO 中阅读):
-
compiler- 很公平,但文档说“modern: .. javac1.5 and javac1.6 .. as aliases”.. 对我来说,这表明它不会有任何区别 - 会是吗? -
source- 似乎只与 JLS 版本有关(尽管上面链接的文档中没有 %100 明确) -
target- 字节码版本 -
bootclasspath- 一些 SO 答案提到了这一点,但很不清楚,而且看起来很老套 -
executable- javac 的路径,但不是 libs.. - 似乎最接近的匹配,隐式指定 JDK 路径?更新:由 JB Nizet 确认 -
fork- 看来我在这里需要 true (否则它会忽略上述内容而不会出错?)。更新:任何性能影响与默认值? (我猜现在 JVM 的启动时间更好,但仍然如此)
所以,这些似乎没有任何帮助。这些的任何组合是否等同于在运行 Ant 之前设置 JAVA_HOME?
我想到了一些技巧(例如,在每个平台上包装 ant 可执行文件只是为了设置该环境变量 - 非常可悲),但我真的希望我错过了一些东西 :)
【问题讨论】:
标签: ant build java javac jdk1.6