ing*_*ger 6 java ant build javac jdk1.6
我想将JDK 1.6用于项目的一个分支,而其他人则继续使用JDK 1.5.开发人员希望偶尔在这些之间切换.
那么告诉Ant的javac使用哪个JDK 的最佳方法是什么?最好的,我的意思是一个强大,透明,低维护,与源一起版本化(Ant本身和JDK肯定不是,但它们生活在标准的地方).
显而易见的 - 比我想的更好的方法是在Ant之外:继续改变JAVA_HOME env变量.然而,这将需要开发人员手动切换(另一件事要记住:容易出错),更改所有--man-build服务器(现在为我工作更多).
寻找一些简单的javac属性,例如jdk-path,我注意到了几个(感谢在网上阅读和在SO中):
compiler- 公平,但文档说" 现代:.. javac1.5和javac1.6 ..作为别名 "..对我来说这表明它不会有任何区别 - 是吗?source- 似乎只与JLS版本有关(尽管从上面链接的文档中没有明确%100)target - 字节码版本bootclasspath - 一些SO答案提到了这一点,但很不清楚,似乎是hackishexecutable - javac的路径,但不是libs .. - 似乎是最接近的匹配,隐式指定JDK路径?更新:由JB Nizet确认fork - 看来我在这里需要真的(否则它会忽略上面没有错误?).更新:任何性能影响与默认值?(我猜JVM启动时间现在好些了,但仍然)所以,它们本身似乎没有任何帮助..这些等同于在运行Ant之前设置JAVA_HOME的任何组合?
我有一些黑客的想法(例如,在每个平台上包装ant可执行文件只是为了设置env var - 非常难过),但我真的希望我错过了一些东西:)
使用executable属性需要将fork属性设置为true。这意味着javac ant任务将启动一个外部进程来执行javac。
当您手动启动 javac 时,您不必指定任何特定的 JDK lib 目录:它知道在哪里可以找到它所属的 JDK 的库。我想说,如果您通过 ant 的 javac 任务启动它,情况会是一样的(除非您覆盖 bootclasspath)。
| 归档时间: |
|
| 查看次数: |
8420 次 |
| 最近记录: |