在不同的JVM上运行Ant任务 [英] Run ant task in different jvm
问题描述
我们的Ant构建是使用Java 1.7.0的JAVA_HOME运行。这样的javac和所有其他的Java相关的目标默认使用正确的Java。
Our ant build is run using Java 1.7.0 for JAVA_HOME. This way javac and all other Java dependent targets use the correct Java by default.
但是,从外部供应商1蚂蚁目标不支持(或者说有一个bug)使用Java 1.7.0。而且不像例如javac的或分叉的JUnit,这个目标不支持参数切换JVM。
But 1 ant target from an external supplier does not support (or rather has a bug) using Java 1.7.0. And unlike e.g. javac or a forked junit, this target does not support parameters to switch jvm.
是否有可能在不同的JVM运行特定Ant目标?
Is it possible to run a specific ant target in a different jvm?
推荐答案
要做出珍妮Boyarsky的使用建议 EXEC
Ant任务具体,下面的例子包装了 EXEC
任务在宏与不同的JVM,以简化您的呼叫目标。请注意,JVM使用Ant的环境变量 JAVACMD
<设置/ A>
To make Jeanne Boyarsky's suggestion of using the exec
Ant task concrete, the following example wraps the exec
task in a macro to simplify calling targets with various JVMs. Notice that the JVM is set using the Ant environment variable JAVACMD
.
<?xml version="1.0" encoding="UTF-8"?>
<project name="run-target-with-specified-java-version" default="test">
<macrodef name="exec-target">
<attribute name="antfile" default="${ant.file}" />
<attribute name="target" />
<attribute name="jvm" default="${java.home}/bin/java" />
<sequential>
<exec executable="ant">
<env key="JAVACMD" value="@{jvm}" />
<arg line='-f "@{antfile}"' />
<arg line="@{target}" />
</exec>
</sequential>
</macrodef>
<target name="echo-java-version">
<echo message="Java version: ${java.version}" />
</target>
<target name="test">
<exec-target target="echo-java-version" />
<property name="java1.6"
location="/usr/lib/jvm/jdk1.6/bin/java" />
<exec-target target="echo-java-version" jvm="${java1.6}" />
</target>
</project>
输出
test:
[exec] Buildfile: /home/your/project/build.xml
[exec]
[exec] echo-java-version:
[exec] [echo] Java version: 1.7.0
[exec]
[exec] BUILD SUCCESSFUL
[exec] Total time: 0 seconds
[exec] Buildfile: /home/your/project/build.xml
[exec]
[exec] echo-java-version:
[exec] [echo] Java version: 1.6.0
[exec]
[exec] BUILD SUCCESSFUL
[exec] Total time: 0 seconds
BUILD SUCCESSFUL
Total time: 2 seconds
这篇关于在不同的JVM上运行Ant任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!