使用ANT时,如果我有一些特定的java版本,我怎么才能定义任务?

时间:2008-09-29 07:52:36

标签: java ant conditional

我遇到的问题是,只有在构建计算机中安装了Java 1.5时,才能执行Ant中的特定步骤。任务定义使用使用1.5编译的jar文件,因此使用1.4虚拟机运行将抛出IncompatibleClassVersion异常。

我必须找到一个解决方案,同时让这个任务适用于需要1.4的特定项目,但是我遇到了一个问题。如果我没有特定的Java版本,如何避免定义此任务并执行此可选步骤?

我可以在目标标签上使用“if”或“unless”标签,但这些标签只检查是否设置了属性。我也希望有一个不需要额外库的解决方案,但我不知道标准中的内置功能是否足以执行这样的任务。

2 个答案:

答案 0 :(得分:10)

通过 ant.java.version 属性公开Java版本。使用条件设置属性并仅在其为真时执行任务。

<?xml version="1.0" encoding="UTF-8"?>

<project name="project" default="default">

    <target name="default" depends="javaCheck" if="isJava6">
        <echo message="Hello, World!" />
    </target>

    <target name="javaCheck">
        <echo message="ant.java.version=${ant.java.version}" />
        <condition property="isJava6">
            <equals arg1="${ant.java.version}" arg2="1.6" />
        </condition>
    </target>

</project>

答案 1 :(得分:2)

要检查构建文件的属性是${ant.java.version}

当属性等于某个值时,您可以使用<condition>元素使任务成为条件:

<condition property="legal-java">
  <matches pattern="1.[56].*" string="${ant.java.version}"/>
</condition>