available是Ant的内置任务。如果在运行期间一个资源可用,就会设置一个属性,资源可能是文件、目录、classpath中的class或者JVM系统资源。如果资源存在,属性值默认设为true,否则不会设置属性。也可以通过设置value属性将这个值设置为其他值。通常使用这个任务有助于避免target的执行依赖于系统参数。
property:要设置的属性名称,是必需的。
value:要设置的属性值,默认为true。
classname:要在classpath中查找的类。
file:要查找的文件。
resource:要在JVM中查找的资源。
classpath:在查找类或资源时使用的类路径。
filepath:查找文件时使用的路径。
classpathref:使用的类路径,指向一个path的引用。
type:查找的file类型,dir或者file,如果不设置,且file属性中设置的名称存在,此属性会被设置为对应的类型。
ignoresystemclasses:或略ant的运行时类,只使用指定的类路径。只对classname属性生效,默认为false。
searchparents:从Ant1.7开始,如果为true,在查找一个文件时,不止会查找指定的目录,指定目录的父目录也会被查找。如果设置为false,只查找指定目录,默认为false。
file、resource和classpath三者必须设置一个。
<project>
<available classname="java.lang.Integer" property="class.present"/>
<echo>${class.present}</echo>
<available file="conf" type="dir" property="filepath" value="conf/conf.properties"/>
<echo>${filepath}</echo>
<available file="${filepath}" property="conf.properties.present"/>
<echo>${conf.properties.present}</echo>
</project>