从build xml中运行<ANT>任务时更改JDK

4

我有一个build.xml文件,它调用swfbuild.xml。我希望父级build.xml使用IBM JDK 1.5,而swfbuild.xml使用Sun JDK 1.6。

<ant>任务是否有选项可以指定不同的JDK?

我尝试设置JAVACMD如下,但这也不起作用:

如何为swfbuild.xml使用不同的JDK?

    <target name="Compile_SWF">
        <exec executable="cmd">
            <env key="JAVACMD" value="C:/Program Files/Java/jdk1.6.0_18" />
        </exec>
        <echo message="Start to Compile SWF content" />
        <ant antfile="swfbuild.xml" target="swf-masterbuild" />
        <exec executable="cmd">
            <env key="JAVACMD" value="C:/IBM/SDP/runtimes/base_v61/java" />
        </exec>
    </target>

为什么需要在swfbuild.xml中使用不同的JDK?是为了javac编译器,还是需要运行需要1.6支持的自定义任务? - Tap
swfbuild.xml 中有一个 mxmlc 任务,我想使用Sun JDK 1.6来运行该任务,因为与mxmlc(flex编译器)存在兼容性问题。 - Vineet Bhatia
1个回答

6
在每个xml文件中,您可以在javac任务内指定要使用的可执行文件。除了executable=参数外,您还必须包括fork=yes。
<javac fork="yes" executable="C:/Program Files/Java/jdk1.7.0_17/bin/javac">

在 swfbuild.xml 文件中,我有 mxmlc 任务而不是 javac。 - Vineet Bhatia
好的。您是否尝试使用您在问题中指定的<env key=>方法设置JAVA_HOME而不是JAVACMD?据我所知,mxmlc编译器会查找该环境变量以确定要使用哪个JDK。请参阅http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7fd9.html。 - Dave Bartlett
“<ant>”任务没有使用JAVACMD或JAVA_HOME。我应该如何设置JAVA_HOME环境变量? - Vineet Bhatia
2
看起来这似乎是不可能的。尽管似乎有办法从Ant设置环境变量(在Windows上使用exec和cmd),但它们中没有一个似乎适用于当前正在执行的ant任务。我想一个解决方案是,不要使用“ant”任务启动swfbuild.xml,而是通过执行一个脚本来设置JAVA_HOME,然后调用该XML文件上的Ant。 - Dave Bartlett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接