Ant build——可选地覆盖java可执行文件的位置

Ant build——可选地覆盖java可执行文件的位置,java,ant,Java,Ant,我在同一台机器上有几个java项目,它们确实需要使用不同的java编译器构建,一个使用java 1.6,一个使用java 1.7。(不,用更高版本的java构建它们并为需要更低版本的项目指定源和目标是不够的——它们之间的差异会导致测试失败) 我的同事们没有这个问题——他们只有一个项目需要1.6。我想加入一些配置,使我能够重写java编译器,而不需要它们添加环境变量。我在想象这样的事情: <javac executable='${java.executable.path}' srcdir='

我在同一台机器上有几个java项目,它们确实需要使用不同的java编译器构建,一个使用java 1.6,一个使用java 1.7。(不,用更高版本的java构建它们并为需要更低版本的项目指定源和目标是不够的——它们之间的差异会导致测试失败)

我的同事们没有这个问题——他们只有一个项目需要1.6。我想加入一些配置,使我能够重写java编译器,而不需要它们添加环境变量。我在想象这样的事情:

<javac executable='${java.executable.path}' srcdir='${src.dir}' destdir='${dest.dir.classes}' source='1.6' target='1.6' fork='true'  />

除了。。。我找不到
${DEFAULT\u JAVAC}
。有没有比这更好的方法让我错过了?或者ant不是为这样的东西而构建的吗?

您可以默认使用路径上的任何javac


这是可能的,所以您需要执行类似
的东西,这是javac

好主意!我没想到。不过,您可能想链接到。@Denise-打开的选项卡太多:-)无论如何,我不知道您是否介意,但这会使您的构建不可移植(绑定到特定的操作系统),除非您添加另一层来检测操作系统,并提出相应的shell命令。。。就我个人而言,我会强迫构建的用户定义JAVAC_HOME,如果没有定义的话,构建就会失败。尽管看起来很奇怪,我还是希望在我们必须处理在不同操作系统上开发的人之前,我们能够标准化到一个java版本。(我们现在都在同一个平台上)。
<condition property="java.executable.path" value="${env.PROJ_JAVA_HOME}" else="${DEFAULT_JAVAC}">
    <isset property="env.PROJ_JAVA_HOME" />
</condition>