## Available

### Description

Sets a property if a resource is available at runtime. This resource can be a file, a directory, a class in the classpath, or a JVM system resource.

If the resource is present, the property value is set to true by default; otherwise, the property is not set. You can set the value to something other than the default by specifying the `value` attribute.

Normally, this task is used to set properties that are useful to avoid target execution depending on system parameters.

### Parameters

Attribute | Description | Required
property | The name of the property to set. | Yes
value | The value to set the property to. Defaults to "true". | No
classname | The class to look for in the classpath. | Yes
file | The file to look for.
resource | The resource to look for in the JVM.
classpath | The classpath to use when looking up `classname` or `resource`. | No
filepath | The path to use when looking up `file`. | No
classpathref | The classpath to use, given as a reference to a path defined elsewhere. | No
type | The type of `file` to look for, either a directory (`type="dir"`) or a file (`type="file"`). If not set, the property will be set if the name specified in the `file` attribute exists as either a file or a directory. | No
ignoresystemclasses | Ignore Ant's runtime classes, using only the specified classpath. Only affects the "classname" attribute. Defaults to "false" | No
searchparents | This contains the behaviour of the "file" type. If true, the available task will, when searching for a file, search not only the directories specified but will also search the parent directories of those specified. If false, only the directories specified will be searched. Defaults to "false". Since Ant 1.7 | No

### Parameters specified as nested elements

#### classpath

`Available`'s `classpath` attribute is a path-like structure and can also be set via a nested `<classpath>` element.

#### filepath

`Available`'s `filepath` attribute is a path-like structure and can also be set via a nested `<filepath>` element.

### Examples

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

sets the `Myclass.present` property to the value "true" if the class `org.whatever.Myclass` is found in Ant's classpath.

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

sets the `jaxp.jar.present` property to the value "true" if the file `./lib/jaxp11/jaxp.jar` is found.

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

sets the `local.lib.present` property to the value "true" if the directory `/usr/local/lib` is found.

>     ...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"/>

sets the `jaxp11.present` property to the value "true" if the class `javax.xml.transform.Transformer` is found in the classpath referenced by `jaxp` (in this case, `./lib/jaxp11/jaxp.jar`).

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

sets the `have.extras` property to the value "true" if the resource-file `extratasks.properties` is found.