我遇到的问题是,只有在构建计算机中安装了Java 1.5时,才能执行Ant中的特定步骤。任务定义使用使用1.5编译的jar文件,因此使用1.4虚拟机运行将抛出IncompatibleClassVersion异常。
我必须找到一个解决方案,同时让这个任务适用于需要1.4的特定项目,但是我遇到了一个问题。如果我没有特定的Java版本,如何避免定义此任务并执行此可选步骤?
我可以在目标标签上使用“if”或“unless”标签,但这些标签只检查是否设置了属性。我也希望有一个不需要额外库的解决方案,但我不知道标准中的内置功能是否足以执行这样的任务。
答案 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>