可用

說明

如果資源在執行時可用,則設定屬性。此資源可以是檔案、目錄、類別路徑中的類別或 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 參考的類別路徑中找到類別 javax.xml.transform.Transformer (在本例中為 ./lib/jaxp11/jaxp.jar),則將 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>