カスタムセレクタセレクタはAnt1.5で新しく追加された機能です。これまでに説明したデータ構造は、どれもファイル名を基準にしてファイルの集合を定めるものでしたが、セレクタはファイル名以外の様々な条件によってファイルの集合を扱うことができます。セレクタは通常ファイルセットの子要素として定義しますが、プロジェクトやターゲットの子要素しても定義することができます。そのときは<selector>要素として定義し、id属性とrefid属性を用いて利用したいところから参照します。セレクタは、大きく分けて3つに分類されます。セレクタコンテナカスタムセレクタコアセレクタは単体として機能するセレクタで、あらかじめ用意されているものです。セレクタコンテナは、単体としては機能しないもので、他のセレクタの内包することによって利用します。カスタムセレクタは、ユーザが独自に実装するセレクタです。コアセレクタコアセレクタは単体として機能するセレクタで、あらかじめAntに組み込まれてるものです。コアセレクタには次のものがあります。説明containsテキストファイル内に含まれている文字列により条件を指定します。dateファイルの更新時間によって条件を指定します。depend他のファイルと比較して、更新時間が新しい場合に選択されます。depthベースディレクトリからの階層の深さにより条件を指定します。filenameファイル名により条件を指定します。present比較対象の他のファイルが存在する場合に選択されます。sizeファイルのサイズにより条件を指定します。Contains指定した文字列がファイルの内容に含まれているものを選択します。ファイル名ではなくファイルの中身を参照します。必須textファイルの内容に含まれているべき文字列を指定します。●casesensitive検索の際に大文字小文字を区別するかどうかを指定します。truerefid事前定義したContainsセレクタを参照しますDateファイルの更新時間が指定された条件に合うものを選択します。必須datetime比較基準となる日時を指定します。AMまたはPM」です。どちらか一つmillis比較基準となる時間を1970年からのミリ秒で指定します。guranularity基準時間との比較において許容する誤差をミリ秒で指定します。0when基準となる時間に対して、更新時間がどのようなファイルを選択するかを指定します。基準時間より更新時間が古いものを選択します。基準時間より更新時間が新しいものを選択します。基準時間と更新時間が等しいものを選択します。equalrefid事前定義したDateセレクタを参照します。Depend別の場所に存在するファイルより更新時間が新しければ選択されます。必須targetdir比較対象ファイルのベースディレクトリを指定します。●guranularity更新時間0(Windowsでは2000)refid事前定義したDependセレクタを参照します。更新時間の比較は、それぞれのファイルで異なるファイルが対象となります。デフォルトでは同じ名前のファイルが比較対象となります。/></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>Filenameファイル名パターンによってファイルを選択します。name属性で指定したパターンにマッチしたファイルが選択されます。nagate属性をtrueにした場合は、逆にパターンにマッチしないファイルが選択されます。必須name選択するファイル名のパターンを指定します。●casesensitive検索の際に大文字小文字を区別するかどうかを指定します。truenegate検索条件を反転させます。「true」のときはパターンにマッチしないファイルが選択されます。falserefid事前定義したFilenemeセレクタを参照します。Present別の場所に比較対象のファイルが存在するものを選択します。比較対象のファイルはDepthセレクタを同じ規則で選択されます。デフォルトは同名のファイルで、子要素としてMapperを定義することによって別の規則を適用することができます。/></fileset>この例では{$src2}ディレクトリ以下に存在するJavaソースファイルで、{$src1}以下の同じ相対位置に同名のファイルが存在するものを選択します。${src2}/Test.javaが存在するとき、もし{$src1}/Test.javaが存在すれば${src2}/Test.javaは選択され、{$src2}/Test.javaが存在しないときは選択されません。Sizeファイルのサイズによってファイルを選択します。必須value比較の基準となるサイズを指定します。デフォルトの単位はバイトですが、units属性により単位を変えることができます。●unitsvalue属性に記したファイルサイズの単位を指定します。when比較の方法を指定します。指定したサイズより小さいものを選択します。指定したサイズより大きいものを選択します。指定したサイズと等しいものを選択します。equalrefid事前定義したSizeセレクタを参照します。基準となるファイルサイズはバイトです。unitsを指定しなければvalue属性に指定した値はバイトとみなされます。unitsで指定することのできる単位には以下のものがあります。Textを触ってみた。