使用ANT时,仅当我具有某些特定的Java版本时,才能如何定义任务?
时间:2020-03-06 14:51:51 来源:igfitidea点击:
我的问题是,只有在构建计算机中安装了Java 1.5时,才能执行Ant中的特定步骤。任务定义使用的是使用1.5编译的jar文件,因此在1.4虚拟机上运行将引发IncompatibleClassVersion异常。
同时,我必须找到一种解决方案来使此任务适用于需要1.4的特定项目,但是我遇到了一个问题。如果我没有特定的Java版本,如何避免定义此任务并执行此可选步骤?
我可以在目标标签上使用" if"或者"除非"标签,但是那些标签只能检查是否设置了属性。我还希望有一个不需要额外库的解决方案,但是我不知道标准的内置功能是否足以执行此类任务。
解决方案
Java版本通过ant.java.version属性公开。使用条件来设置属性并仅在其为true时才执行任务。
<?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>
要检入构建文件的属性是$ {ant.java.version}
。
当属性等于某个值时,可以使用<condition>元素使任务成为条件:
<condition property="legal-java"> <matches pattern="1.[56].*" string="${ant.java.version}"/> </condition>