S-JIS[2003-12-31/2010-01-09] 変更履歴

Antプロパティー系タスク

定義したプロパティーを使用したい箇所では、「${プロパティー名}」とする。 (「${」があって「}」が無いとエラーになる)
「$」の文字そのものを(プロパティーの開始でなく)使いたい場合は、「$」の直後に「{」が無ければ問題ない。または「$$」とすれば常に「$」になる。[2009-02-06]

既にセットされているプロパティー名でさらにセット(上書き)しようとしても、上書きできず、以前の値がそのまま残る。[2009-03-17]
デバッグモードで実行すると、「Override ignored for property "プロパティー名"」というメッセージが出力される)

一度セットされたプロパティーを削除(消去)することは出来ない。[2009-03-17]


Ant:property

プロパティーを定義するコアタスク。
(org.apache.tools.ant.taskdefs.Property extends Task

属性(→最新property

属性 説明 更新日
name="プロパティ名" プロパティの名前。  
value="値" 値。  
location="パス名" ディレクトリ名やファイル名。
projectタグのbasedir属性で指定された位置からの相対パスになる。
 
file="ファイル名" ファイルの中に書かれたプロパティー群を読み込む。
ファイルの中には「プロパティー名=値」を何行も書ける。
ただし日本語はnative2asciiで変換しておく必要がある。
テキストファイルを読み込んでプロパティーとする
2007-02-21
refid="ID" idが付けられたパス(クラスパス)の内容。
パスの内容を表示する例
2008-11-08
environment="接頭辞" 環境変数を読み込む為の、プロパティ名の接頭辞。  

このタグを使わず、ant実行時にプロパティを定義することも出来る。

$ ant -Dプロパティ名=

valueの例

プロパティー名に、値を直接指定する。

        <property name="test" value="テスト"/>

使用例:

        <echo message="${test}"/>
        <echo>${test}</echo>

locationの例

プロパティー名に、ディレクトリやファイルの場所を指定する。

        <property name="src_dir" location="src/java/sample"/>
        <property name="src_file" location="${src_dir}/File.java"/>

fileの例

プロパティーをファイルに書いておき、そのファイルを読み込むことが出来る。[2007-02-21]
ファイルの中に日本語を書く場合、native2asciiで変換しておかないと文字化けする。

	<property file="data.properties"/>

プロパティーファイルの例(内容):

test=test-value

environmentの例

環境変数を読み込んでプロパティーとして扱う。

        <property environment="env"/>

使用例:

        <echo message="${env.CLASSPATH}"/> ←環境変数CLASSPATHの内容を画面に出力

Ant:tstamp

日付や時刻をプロパティーにセットするコアタスク。[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

最新tstamp


Ant:pathconvert

パス(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

Ant:length

長さをプロパティーに設定するコアタスク(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
C:\temp\bbb.txt : 32

Ant:resourceCount

リソース(ファイル等)の個数をプロパティーに設定するコアタスク(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

Ant:loadfile

テキストファイルを読み込み、その内容をプロパティーに設定するコアタスク。[2008-10-25]
(org.apache.tools.ant.taskdefs.LoadFile extends LoadResource)

	<target name="loadfile">
		<loadfile property="zzz" srcfile="file.txt" />
		<echo message="${zzz}" />
	</target>

最新loadfile


Ant:propertyfile

プロパティーファイルを作成するオプションタスク。[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" />

最新propertyfile


Ant:condition

条件を満たしたときにプロパティーに文字列が設定されるタスク群。[2009-03-17]
デフォルトでは「true」という文字列がセットされる。

条件が満たされなかったときは無処理。
すなわち、falseになるわけではなく、空文字列になるわけでもなく、プロパティーが削除されるわけでもない。

設定されたかどうかに応じて後続の処理を変えることが出来る。→プロパティーの存在チェック

タスク 説明 クラス・使用例
condition ボディー部に書かれている条件が満たされる場合にプロパティーを設定する。
例えば以下のようなものがある。(→最新conditions
(どれもConditionインターフェースを実装している)
ボディー部に書けるタスク 説明 バージョン
Available ファイルの存在有無をチェック  
ResourceCount リソース(ファイル)の個数をチェック Ant1.7以降
Length ファイルや文字列の長さをチェック Ant1.6.3以降
Equals 文字列が等しいかどうか  
Contains 文字列が含まれるかどうか(indexOf() Ant1.5以降
Matches 文字列を正規表現でチェック Ant1.7以降
isTrue
isFalse
trueやfalseになる値かどうかチェック Ant1.5以降
isSet プロパティーの存在有無をチェック Ant1.5以降
And
Or
Not
Xor
ボディー部の他の条件を演算  
 
 
Ant1.7以降
AntVersion Antのバージョンをチェック Ant1.7以降
Os OSの種類をチェック  
org.apache.tools.ant.taskdefs.ConditionTask extends ConditionBase
<condition property="プロパティー名">
 <equals arg1="${〜}" arg2="abc" />
</conditoin>
available ファイルやクラスが存在している場合にプロパティーを設定する。 org.apache.tools.ant.taskdefs.Available extends Task implements Condition
<available file="ファイル名" property="プロパティー名" />

プロパティーの存在チェック

プロパティーが設定されているかどうかの判定を行うことが出来る。[2009-03-17]
(プロパティーが存在しているかどうかであって、内容が空文字列であっても存在している事になる)

タスク 属性 内容
target if
unless
プロパティーの有無に応じてターゲットの実行有無を制御する。 <target if="プロパティー名">

</target>
プロパティーが存在している場合にターゲットを実行する。
fail if
unless
プロパティーの有無に応じて実行を終了(失敗)させる。 <fail unless="プロパティー名" />
<fail unless="プロパティー名" message="プロパティーが無いっす" />
プロパティーが存在しない場合に失敗終了させる。

Ant目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま