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