5.2. セレクタコンテナ
セレクタコンテナは、一つ以上のセレクタを組み合わせて複雑な条件でファイルを選択することができます。
セレクタコンテナには以下のものがあります。
セレクタ | 説明 |
And
|
子要素の複数のセレクタすべてに選択されているファイルを選択します。 |
Or
|
子要素の複数のセレクタの内、少なくともどれか一つに選択されているファイルを選択します。 |
None
|
子要素の複数のセレクタすべてに選択されていないファイルを選択します。子要素のセレクタに一つでも選択されていれば、Noneセレクタコンテナには選択されません。 |
Not
|
ただ一つだけの子要素セレクタしか持つことができません。その子要素セレクタに選択されていないファイルを選択します。 |
Majority
|
子要素の複数のセレクタのうち、過半数のセレクタに選択されているファイルを選択します。 |
Selector
|
事前定義した他のセレクタを再利用する場合に用います。 |
これらのセレクタコンテナで定義できる属性は次の通りです。これらは、すべてのセレクタで共通して利用できるものです。
属性 | 説明 | 必須 |
id
|
このセレクタを別の場所から参照するときに利用する識別名を指定します。 |
|
refid
|
事前定義した同種のセレクタコンテナを参照します |
|
description
|
このセレクタに関する説明を記述します。 |
次の例は、ファイルサイズが100KB(=102,400バイト)以上、または更新日時が2002年8月20日午前6時以降のファイルを選択します。
<fileset dir="{$log}" includes="**/*.log"> <or> <date datetime="08/20/2002 6:00 AM" when="after" /> <size value="100" units="Ki" when="more" /> </or> </fileset>
5.3. カスタムセレクタ
カスタムセレクタはユーザが独自に作成するセレクタです。単体のセレクタとセレクタコンテナのどちらも作成することができます。これまでに説明した組み込みのセレクタに無い機能を持ったものが必要なときに作成します。
カスタムセレクタは<custom>属性を用いて定義します。
属性 | 説明 | 必須 |
classname
|
独自に作成したセレクタのJavaクラス名を指定します。 |
●
|
classpath
|
このカスタムセレクタを実行するのに必要なクラスパスを指定します。 |
|
classpathref
|
事前定義したクラスパスを参照します。 |
|
カスタムセレクタはorg.apache.tools.ant.types.selectors.FileSelectorインタフェースを実装したクラスとして作成しますが、ここではカスタムセレクタの作成方法は解説しません。
(実習課題)
カレントディレクトリに存在するlogsディレクトリ以下のファイルを、同じくカレントディレクトリに存在するbackupディレクトリにディレクトリ構造そのままでコピーするためのビルドファイルを作成して下さい。このとき、以下の条件をすべて満たすファイルだけコピーされるようにして下さい。
- ファイル名が「.log」または「.out」で終わるもの。
- 前回コピーしてから更新されているもの。
- ファイルサイズが100Kバイトを超えているもの。
- logsディレクトリ直下より一段以上深いディレクトリ内の存在するもの。