available
説明
指定のリソースが存在する場合、プロパティーに値を入れます。
リソースはクラスやファイルなどです。
ここで見つかったかどうかで動作を分岐させるには、
targetにifやunless属性を指定する方法がいいのかな?
属性
classname
[classname/file/resourceのいずれかが必須]
ここで指定したClassを探します。
見つかった場合はproperty属性へ値を入れます。
classpath
classname又はresourceを探す元となる、クラスパスを指定します。classpath要素を含ませる方法もあります。
classpathref
クラスパスを参照(id)で指定します。
file
[classname/file/resourceのいずれかが必須]
ここで指定したファイルを探します。
見つかった場合はproperty属性へ値を入れます。
filepath
fileを探す元となるパスを指定します。
filepath要素を含ませる方法もあります。
ignoresystemclasses
デフォルトはfalse
classnameを探索時、Antの実行Classは無視します。
property
[必須項目]
[文字列]
リソースが見つかったときに、指定したpropertyへ値を入れます。
値はvalue属性で指定します。指定がない場合はデフォルト値のtrueが入ります。
resource
[classname/file/resourceのいずれかが必須]
ここで指定したリソースを探します。
見つかった場合はproperty属性へ値を入れます。
リソースはclassnameと同じよう、package.リソース名で指定します。
[例]
org.jpn.xucker.ant.my.properties
type
[file/folder]
fileを探す時に、fileのみか、folderのみを探すかを指定します。
もし何も指定がなければ、file又はfolderを探します。
value
[文字列] デフォルトはtrue
リソースが見つかったときに、propertyへいれる値
含む
含まれる
サンプル
システム以外に、Antクラスがあるか?(あまり使う例じゃありませんが)
<target name="availabel"> <available classname="org.apache.tools.ant.Main" ignoresystemclasses="true" property="ant"></available> <echo message="${ant}"/> </target>
特定のAPIがない場合にエラーをわかりやすく表示する。この例はXerces
たまに、taskdefがうまくいかないだけでどのクラスがないかわからないから。
<target name="availabel"> <available classname="org.apache.xerces.parsers.DOMParser" property="xerces"> </available> <antcall target="xerces_not_found" inheritall="true"/> <echo message="do something"/> </target> <target name="xerces_not_found" unless="xerces"> <echo message="xerces not found"/> <fail/> </target>
ファイルがない場合に、初期値を入れたファイルを作る。
<target name="availabel"> <available file="tmp.txt" property="myfile"> </available> <antcall target="file_not_found" inheritall="true"/> <loadfile property="file_property" srcfile="tmp.txt" /> <echo message="${file_property}"/> </target> <target name="file_not_found" unless="myfile"> <echo message="default_value" file="tmp.txt"/> </target>