可用

描述

如果资源在运行时可用,则设置属性。此资源可以是文件、目录、类路径中的类或 JVM 系统资源。

注意:当类可以加载时,它在类路径中可用;即,它所依赖的所有类也必须在类路径中。

如果资源存在,则默认情况下属性值将设置为 true;否则,不会设置属性。您可以通过指定 value 属性将值设置为除默认值以外的值。

通常,此任务用于设置属性,这些属性有助于避免目标执行依赖于系统参数。

参数

属性 描述 必需
property 要设置的属性的名称。
value 要设置属性的值。 否;默认为 true
classname 要在类路径中查找的类。 三个中的一个
file 要查找的文件。
resource 要在 JVM 中查找的资源。
classpath 查找 classnameresource 时要使用的类路径。
filepath 查找 file 时要使用的路径。
classpathref 要使用的类路径,以对在其他地方定义的路径的 引用 形式给出。
type 要查找的 file 的类型,可以是目录 (type=dir) 或文件 (type=file)。如果未设置,则如果在 file 属性中指定的名存在作为文件或目录,则将设置属性。
ignoresystemclasses 忽略 Ant 的运行时类,仅使用指定的类路径。仅影响 classname 属性。 否;默认为 false
searchparents 这包含 file type 的行为。如果为 true,则任务在搜索文件时,不仅会搜索指定的目录,还会搜索这些目录的父目录。如果为 false,则只会搜索指定的目录。自 Ant 1.7 起 否;默认为 false

作为嵌套元素指定的参数

classpath

Availableclasspath 属性是 路径状结构,也可以通过嵌套的 <classpath> 元素设置。

filepath

Availablefilepath 属性是 路径状结构,也可以通过嵌套的 <filepath> 元素设置。

示例

如果在 Ant 的类路径中找到类 org.whatever.Myclass,则将 Myclass.present 属性设置为值 true

<available classname="org.whatever.Myclass" property="Myclass.present"/>

如果找到文件 ./lib/jaxp11/jaxp.jar,则将 jaxp.jar.present 属性设置为值 true

<property name="jaxp.jar" value="./lib/jaxp11/jaxp.jar"/>
<available file="${jaxp.jar}" property="jaxp.jar.present"/>

如果找到目录 /usr/local/lib,则将 local.lib.present 属性设置为值 true

<available file="/usr/local/lib" type="dir"
           property="local.lib.present"/>

如果在由 jaxp(在本例中为 ./lib/jaxp11/jaxp.jar)引用的类路径中找到类 javax.xml.transform.Transformer,则将 jaxp11.present 属性设置为值 true

...in project ...
<property name="jaxp.jar" value="./lib/jaxp11/jaxp.jar"/>
<path id="jaxp" location="${jaxp.jar}"/>
...in target ...
<available classname="javax.xml.transform.Transformer"
           classpathref="jaxp" property="jaxp11.present"/>

如果找到资源文件 extratasks.properties,则将 have.extras 属性设置为值 true

<available property="have.extras" resource="extratasks.properties">
  <classpath>
    <pathelement location="/usr/local/ant/extra.jar"/>
  </classpath>
</available>