目次へ

5. セレクタ

セレクタはAnt1.5で新しく追加された機能です。これまでに説明したデータ構造は、どれもファイル名を基準にしてファイルの集合を定めるものでしたが、セレクタはファイル名以外の様々な条件によってファイルの集合を扱うことができます。

セレクタは通常ファイルセットの子要素として定義しますが、プロジェクトやターゲットの子要素しても定義することができます。そのときは<selector>要素として定義し、id属性とrefid属性を用いて利用したいところから参照します。

セレクタは、大きく分けて3つに分類されます。

  • コアセレクタ 
  • セレクタコンテナ
  • カスタムセレクタ

コアセレクタは単体として機能するセレクタで、あらかじめ用意されているものです。セレクタコンテナは、単体としては機能しないもので、他のセレクタの内包することによって利用します。カスタムセレクタは、ユーザが独自に実装するセレクタです。

5.1. コアセレクタ

コアセレクタは単体として機能するセレクタで、あらかじめAntに組み込まれてるものです。

コアセレクタには次のものがあります。

セレクタ 説明
contains

テキストファイル内に含まれている文字列により条件を指定します。

date

ファイルの更新時間によって条件を指定します。

depend

他のファイルと比較して、更新時間が新しい場合に選択されます。

depth
ベースディレクトリからの階層の深さにより条件を指定します。
filename
ファイル名により条件を指定します。
present

比較対象の他のファイルが存在する場合に選択されます。

size
ファイルのサイズにより条件を指定します。
Contains

指定した文字列がファイルの内容に含まれているものを選択します。ファイル名ではなくファイルの中身を参照します。

属性 説明 初期値 必須
text

ファイルの内容に含まれているべき文字列を指定します。

 
casesensitive

検索の際に大文字小文字を区別するかどうかを指定します。

true
 
refid

事前定義したContainsセレクタを参照します

   
Date

ファイルの更新時間が指定された条件に合うものを選択します。 

属性 説明 初期値 必須
datetime

比較基準となる日時を指定します。
フォーマットは「MM/DD/YYYY HH:MM AMまたはPM」です。

 
どちらか一つ
millis

比較基準となる時間を1970年からのミリ秒で指定します。

 
guranularity

基準時間との比較において許容する誤差をミリ秒で指定します。

0
 
when
基準となる時間に対して、更新時間がどのようなファイルを選択するかを指定します。
 before - 基準時間より更新時間が古いものを選択します。
 after - 基準時間より更新時間が新しいものを選択します。
 equal - 基準時間と更新時間が等しいものを選択します。
equal
 
refid
事前定義したDateセレクタを参照します。    
Depend

別の場所に存在するファイルより更新時間が新しければ選択されます。

属性 説明 初期値 必須
targetdir

比較対象ファイルのベースディレクトリを指定します。

 
guranularity

更新時間


(Windowsでは2000)
 
refid

事前定義したDependセレクタを参照します。

 
 

更新時間の比較は、それぞれのファイルで異なるファイルが対象となります。デフォルトでは同じ名前のファイルが比較対象となります。

<fileset dir="{$src2}" includes="**/*.java">
  <depend targetdir="{$src1}" />
</fileset>

この例は、${src2}ディレクトリ以下に存在するJavaソースファイルのうち、${src1}ディレクトリ以下の同じ相対位置に存在する同名のファイルより更新時間が新しいものが選択さされます。また${src1}ディレクトリ以下に同名のファイルが存在しないものも選択されます。たとえば{$src2}/Test.javaというファイルが存在したとき、{$src1}/Test.javaというファイルが存在しない、もしくは${src1}/Test.javaが存在しているが更新時間が古い場合に、{$src2}/Test.javaはdependセレクタに選択されます。

比較対象のファイルとして同名のものではなく、別のファイル名変換規則を適用したい場合はmapper子要素を定義します。

Depth

ベースディレクトリから比較したファイルの深さによってファイルを選択します。

属性 説明 初期値 必須
min

選択したいファイルの最小の深さを指定します。

 
少なくとも一つ
max

選択したいファイルの最大の深さを指定します。

 
refid

事前定義したDepthセレクタを参照します。

 
 

ベースディレクトリの深さは0とみなされます。次の例では、ベースディレクトリと同じディレクトリ、もしくは深さ1のディレクトリに存在するすべてのファイルが選択されます。例えば、{$src}/a${src}/b/aは選択されますが、{$src]/c/b/aは深さ2なので選択されません。

<fileset dir="{$src}">
  <depth max="1" />
</fileset>
Filename

ファイル名パターンによってファイルを選択します。name属性で指定したパターンにマッチしたファイルが選択されます。nagate属性をtrueにした場合は、逆にパターンにマッチしないファイルが選択されます。

属性 説明 初期値 必須
name

選択するファイル名のパターンを指定します。

 
casesensitive

検索の際に大文字小文字を区別するかどうかを指定します。

true
 
negate

検索条件を反転させます。「true」のときはパターンにマッチしないファイルが選択されます。

false
 
refid

事前定義したFilenemeセレクタを参照します。

 
 
Present

別の場所に比較対象のファイルが存在するものを選択します。

比較対象のファイルはDepthセレクタを同じ規則で選択されます。デフォルトは同名のファイルで、子要素としてMapperを定義することによって別の規則を適用することができます。

<fileset dir="{$src1}" includes="**/*.java">
  <present targetdir="{$src2}" />
</fileset>

この例では{$src2}ディレクトリ以下に存在するJavaソースファイルで、{$src1}以下の同じ相対位置に同名のファイルが存在するものを選択します。例えば、${src2}/Test.javaが存在するとき、もし{$src1}/Test.javaが存在すれば${src2}/Test.javaは選択され、{$src2}/Test.javaが存在しないときは選択されません。

Size

ファイルのサイズによってファイルを選択します。

属性 説明 初期値 必須
value

比較の基準となるサイズを指定します。デフォルトの単位はバイトですが、units属性により単位を変えることができます。

 
units

value属性に記したファイルサイズの単位を指定します。

 
 
when

比較の方法を指定します。
 less - 指定したサイズより小さいものを選択します。
 more - 指定したサイズより大きいものを選択します。
 equal - 指定したサイズと等しいものを選択します。

equal
 
refid

事前定義したSizeセレクタを参照します。

 
 

基準となるファイルサイズはバイトです。unitsを指定しなければvalue属性に指定した値はバイトとみなされます。unitsで指定することのできる単位には以下のものがあります。

単位 説明
K, k, kilo, KILO

1,000 ( = 10の3乗) バイト

Ki, KI, ki, kibi, KIBI

1,024 ( = 2の10乗) バイト

M, m mega MEGA

1,000,000 ( = 10の6乗) バイト

Mi, MI, mi, mebi, MEBI

1,048,576 ( = 2の20乗) バイト

G, g, giga, GIGA
1,000,000,000 ( = 10の9乗) バイト
Gi, GI, gi, gibi, gibi
1,073,741,824 ( = 2の30乗) バイト
T, t,tera, TERA
1,000,000,000,000 ( = 10の12乗) バイト
Ti, TI, ti, tebi, TEBI
1,099,511,627,776 ( = 2の40乗) バイト

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp
  • シナジーマーケティング研究開発グループブログ
Loading