|
|
定義したプロパティーを使用したい箇所では、「${プロパティー名}」とする。
(「${」があって「}」が無いとエラーになる)
「$」の文字そのものを(プロパティーの開始でなく)使いたい場合は、「$」の直後に「{」が無ければ問題ない。または「$$」とすれば常に「$」になる。[2009-02-06]
既にセットされているプロパティー名でさらにセット(上書き)しようとしても、上書きできず、以前の値がそのまま残る。[2009-03-17]
(デバッグモードで実行すると、「Override ignored for property "プロパティー名"」というメッセージが出力される)
一度セットされたプロパティーを削除(消去)することは出来ない。[2009-03-17]
プロパティーを定義するコアタスク。
(org.apache.tools.ant.taskdefs.Property extends Task)
属性 | 説明 | 更新日 |
---|---|---|
name="プロパティ名" | プロパティの名前。 | |
value="値" | 値。 | |
location="パス名" | ディレクトリ名やファイル名。 projectタグのbasedir属性で指定された位置からの相対パスになる。 |
|
file="ファイル名" | ファイルの中に書かれたプロパティー群を読み込む。 ファイルの中には「プロパティー名=値」を何行も書ける。 ただし日本語はnative2asciiで変換しておく必要がある。 →テキストファイルを読み込んでプロパティーとする |
2007-02-21 |
refid="ID" | idが付けられたパス(クラスパス)の内容。 →パスの内容を表示する例 |
2008-11-08 |
environment="接頭辞" | 環境変数を読み込む為の、プロパティ名の接頭辞。 |
このタグを使わず、ant実行時にプロパティを定義することも出来る。
$ ant -Dプロパティ名=値
プロパティー名に、値を直接指定する。
<property name="test" value="テスト"/>
<echo message="${test}"/> <echo>${test}</echo>
プロパティー名に、ディレクトリやファイルの場所を指定する。
<property name="src_dir" location="src/java/sample"/> <property name="src_file" location="${src_dir}/File.java"/>
プロパティーをファイルに書いておき、そのファイルを読み込むことが出来る。[2007-02-21]
ファイルの中に日本語を書く場合、native2asciiで変換しておかないと文字化けする。
<property file="data.properties"/>
test=test-value
環境変数を読み込んでプロパティーとして扱う。
<property environment="env"/>
<echo message="${env.CLASSPATH}"/> ←環境変数CLASSPATHの内容を画面に出力
日付や時刻をプロパティーにセットするコアタスク。[2007-09-07]
(org.apache.tools.ant.taskdefs.Tstamp extends Task)
propertyタスクと同じように、projectタスクの直下やtargetタスクの中に書く。
フォーマット(書式)を指定したり日数/時間の加減算を行ったりしたプロパティーを作れるが、tstampタスクを実行すると少なくとも以下のプロパティーが定義される。
プロパティ名 | 値 | フォーマット |
---|---|---|
TODAY | 今日の日付 | MMMM dd yyyy |
DSTAMP | 今日の日付 | yyyyMMdd |
TSTAMP | 現在時刻 | HHmm |
使用例 | 概要 | 定義例 | 使用例 | 例の結果 |
---|---|---|---|---|
デフォルト | ボディー部を何も指定しないと、デフォルトのプロパティーだけが定義される。 |
<tstamp /> |
<echo>today :${TODAY}</echo> <echo>dstamp:${DSTAMP}</echo> <echo>tstamp:${TSTAMP}</echo> |
[echo] today :September 7 2007 [echo] dstamp:20070907 [echo] tstamp:2243 |
書式指定 | フォーマットを指定すると、その書式で値がセットされる。 |
<tstamp> <format property="DATE" pattern="yyyy/MM/dd" /> <format property="TIME" pattern="HH:mm:ss" /> <format property="NOW" pattern="yyyy/MM/dd HH:mm:ss" /> </tstamp> |
<echo>date-${DATE}</echo> <echo>time-${TIME}</echo> <echo>now- ${NOW}</echo> |
[echo] date-2007/09/07 [echo] time-22:43:33 [echo] now- 2007/09/07 22:43:33 |
加算・減算 | 現在日時に対する加算・減算が出来る。 加算でoffsetに「+」を付けるとNumberFormatException |
<tstamp> <format property="YES" offset="-1" unit="day" pattern="yyyy/MM/dd" /> <format property="TOM" offset="1" unit="day" pattern="yyyy/MM/dd" /> </tstamp> |
<echo>Yesterday ${YES}</echo> <echo>Tomorrow ${TOM}</echo> |
[echo] Yesterday 2007/09/06 [echo] Tomorrow 2007/09/08 |
パス(pathやfileset等)を(プラットフォーム(OS)用に)変換してプロパティーにセットするコアタスク。[2010-01-09]
(org.apache.tools.ant.taskdefs.PathConvert extends Task)
<property name="from1" location="WebContent/WEB-INF/lib" /> <path id="lib.path"> <fileset dir="${from1}" includes="**/*.jar" /> </path> <pathconvert property="lib" refid="lib.path" dirsep="/" pathsep=" "> <map from="${from1}${file.separator}" to="" /> </pathconvert> <echo message="${lib}" />
dirsep属性で変換後のディレクトリー区切り文字(通常、Windowsなら「\」、UNIXなら「/」)を指定する。
pathsep属性で変換後のパス区切り文字(通常、Windowsなら「;
」、UNIXなら「:
」)を指定する。
map要素は、パスの前部分(前方一致した文字列)を別の文字列に置換する指定。
上記の例では、WindowsでC:\sample\WebContent\WEB-INF\libの下に「a.jar」「b.jar」があるとすると、以下のような出力になる。
(from1は「C:\sample\WebContent\WEB-INF\lib
」になる)
build.xml | プロパティーの内容 |
---|---|
<pathconvert property="lib" refid="lib.path" /> |
C:\sample\WebContent\WEB-INF\lib\a.jar;C:\sample\WebContent\WEB-INF\lib\b.jar |
<pathconvert property="lib" refid="lib.path" targetos="unix" /> |
C:/sample/WebContent/WEB-INF/lib/a.jar:C:/sample/WebContent/WEB-INF/lib/b.jar |
<pathconvert property="lib" refid="lib.path" targetos="unix"> <map from="${from1}" to="/home1" /> </pathconvert> |
/home1/WebContent/WEB-INF/lib/a.jar:/home1/WebContent/WEB-INF/lib/b.jar |
<pathconvert property="lib" refid="lib.path" dirsep="/" pathsep=" " /> |
C:/sample/WebContent/WEB-INF/lib/a.jar
C:/sample/WebContent/WEB-INF/lib/b.jar |
<pathconvert property="lib" refid="lib.path" dirsep="/" pathsep=" "> <map from="${from1}" to="" /> </pathconvert> |
/a.jar /b.jar |
<pathconvert property="lib" refid="lib.path" dirsep="/" pathsep=" "> <map from="${from1}${file.separator}" to="" /> </pathconvert> |
a.jar b.jar |
長さをプロパティーに設定するコアタスク(Ant1.6.3以降)。[2009-02-06]
(org.apache.tools.ant.taskdefs.Length extends Task)
property属性で指定したプロパティー名に、長さがセットされる。
属性 | 概要 | 例 | 例の結果 |
---|---|---|---|
string="文字列" | 文字列の長さ。 |
<length string="あいうえお" property="str.len" /> |
<echo message="${str.len}" /> 5 |
trim="true" | trueの場合、トリムして文字列の長さを測る。 |
<length string=" あいう " trim="true" property="trim.len" /> |
<echo message="${trim.len}" /> 3 |
file="ファイル名" | ファイルサイズ。 |
<length file="C:\temp\a.txt" property="file.len" /> |
<echo message="${file.len}" /> 114 |
mode="all" | ファイルサイズの合計。(デフォルト) |
<length property="files.len"> <fileset dir="C:\temp"> <include name="*.txt" /> </fileset> </length> |
<echo message="${files.len}" /> 146 |
mode="each" | ファイル毎のファイルサイズ。 |
<length property="files.len" mode="each"> <fileset dir="C:\temp"> <include name="*.txt" /> </fileset> </length> |
<echo message="${files.len}" /> C:\temp\a.txt : 114 |
リソース(ファイル等)の個数をプロパティーに設定するコアタスク(Ant1.7以降)。[2009-02-06]
(org.apache.tools.ant.taskdefs.ResourceCount extends Task)
property属性で指定したプロパティー名に、長さがセットされる。
概要 | 例 | 例の結果 |
---|---|---|
ファイルの個数。 |
<resourcecount property="files.count"> <fileset dir="C:\temp"> <include name="*.txt" /> </fileset> </resourcecount> |
<echo message="${files.count}" /> 2 |
テキストファイルを読み込み、その内容をプロパティーに設定するコアタスク。[2008-10-25]
(org.apache.tools.ant.taskdefs.LoadFile extends LoadResource)
<target name="loadfile"> <loadfile property="zzz" srcfile="file.txt" /> <echo message="${zzz}" /> </target>
プロパティーファイルを作成するオプションタスク。[2007-09-07]
(org.apache.tools.ant.taskdefs.optional.PropertyFile extends Task)
作ったプロパティーファイルは、property file=で当然読める。
指定したプロパティーファイルが既に存在していた場合、その中で設定されていたプロパティーはそのまま残る。
もちろん値を上書きすることも出来るし、元の値に対して演算することも出来る。
ただ、値が書き込まれる順番は不定っぽい。
<target name="make property-file"> <propertyfile file="create.properties"> <entry key="prop_name" 〜 /> </propertyfile> </target>
使用例 | 概要 | 定義例 |
---|---|---|
設定 | 値を設定する。 プロパティーファイル内に値が設定されていた場合は上書きされる。 |
<entry key="key1" value="value1" /> <entry key="key2" value="value2" operation="=" /> |
デフォルト値 | プロパティーファイル内にプロパティー定義が無い場合だけ設定する。 プロパティー値が無いだけの場合は設定されない。 |
<entry key="def1" default="def" /> |
数値 | 数値として扱うことも出来る。 プロパティーファイル内の既存の値に対して演算することが出来る。 |
<entry key="exp1" type="int" operation="+" value="10" /> <entry key="exp2" type="int" operation="-" value="10" /> |
桁数指定 | 数値として扱う場合、桁数を指定することが出来る。 ただし値がその桁数を超えた場合、桁数は無視して値が出力される。 |
<entry key="exp3" type="int" operation="+" value="1" pattern="000" />値が2のとき、出力結果は「002」となる。値が1000なら「1000」 |
現在日時 | 現在日付(時刻)を出力することが出来る。 |
<entry key="now1" type="date" value="now" pattern="yyyyMMddHHmmss" /> |
日付演算 | プロパティーファイル内の既存の値を日付時刻として演算することが出来る。 |
<entry key="day1" type="date" operation="+" value="1" unit="day" pattern="yyyyMMdd" /> |
条件を満たしたときにプロパティーに文字列が設定されるタスク群。[2009-03-17]
デフォルトでは「true」という文字列がセットされる。
条件が満たされなかったときは無処理。
すなわち、falseになるわけではなく、空文字列になるわけでもなく、プロパティーが削除されるわけでもない。
設定されたかどうかに応じて後続の処理を変えることが出来る。→プロパティーの存在チェック
タスク | 説明 | クラス・使用例 | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
condition |
ボディー部に書かれている条件が満たされる場合にプロパティーを設定する。 例えば以下のようなものがある。(→最新conditions) (どれもConditionインターフェースを実装している)
|
org.apache.tools.ant.taskdefs.ConditionTask extends ConditionBase | |||||||||||||||||||||||||||||||||||||||
<condition property="プロパティー名"> |
|||||||||||||||||||||||||||||||||||||||||
available | ファイルやクラスが存在している場合にプロパティーを設定する。 | org.apache.tools.ant.taskdefs.Available extends Task implements Condition | |||||||||||||||||||||||||||||||||||||||
<available file="ファイル名" property="プロパティー名" /> |
プロパティーが設定されているかどうかの判定を行うことが出来る。[2009-03-17]
(プロパティーが存在しているかどうかであって、内容が空文字列であっても存在している事になる)
タスク | 属性 | 内容 | 例 | |
---|---|---|---|---|
target | if unless |
プロパティーの有無に応じてターゲットの実行有無を制御する。 | <target if="プロパティー名"> |
プロパティーが存在している場合にターゲットを実行する。 |
fail | if unless |
プロパティーの有無に応じて実行を終了(失敗)させる。 | <fail unless="プロパティー名" /> |
プロパティーが存在しない場合に失敗終了させる。 |