FileSet

FileSetはファイルのグループです。これらのファイルは、ベースディレクトリから始まるディレクトリツリー内にあり、複数のPatternSetSelectorから取得されたパターンによってマッチングされます。

PatternSetは、ネストされた<patternset>要素として指定できます。さらに、FileSetは暗黙的なPatternSetを保持し、ネストされた<include><includesfile><exclude><excludesfile>要素をPatternSetの属性と同様に直接サポートします。

Selectorは、FileSet内のネストされた要素として使用できます。FileSet内のいずれかのSelectorがファイルを選択しない場合、そのファイルはFileSetの一部とは見なされません。これにより、FileSetは<and>セレクタコンテナと同等になります。

属性 説明 必須
dir このFileSetのディレクトリツリーのルート。 dirまたはfileのいずれか1つを必ず指定する必要があります。
file 単一ファイルのfilesetを指定するためのショートカット。
defaultexcludes デフォルトの除外を使用するかどうかを示します (yes|no)。 いいえ。デフォルトはyes
includes 含める必要があるファイルのパターンのカンマまたはスペース区切りのリスト。 いいえ。デフォルトはすべてのファイル。
includesfile ファイル名。このファイルの各行は、includeパターンとして扱われます。
注記: ファイルが空で、filesetに対して他のパターンが定義されていない場合、すべてのファイルが含まれます。
いいえ
excludes 除外する必要があるファイルのパターンのカンマまたはスペース区切りのリスト。 いいえ。デフォルトは、defaultexcludesnoの場合、デフォルトの除外またはなし。
excludesfile ファイル名。このファイルの各行は、excludeパターンとして扱われます。 いいえ
casesensitive includeとexcludeのパターンを大文字と小文字を区別して扱う必要がありますか? いいえ。デフォルトはtrue
followsymlinks シンボリックリンクをたどる必要がありますか?下記の注記参照 いいえ。デフォルトはtrue
erroronmissingdir ベースディレクトリが存在しない場合の動作を指定します。trueの場合、ビルドエラーが発生し、falseの場合、filesetは無視/空になります。 Apache Ant 1.7.1以降 いいえ。デフォルトはtrue(下位互換性のため)
refid このfilesetを、別の場所で定義されたfilesetへの参照にします。指定された場合、他の属性やネストされた要素は許可されません。 いいえ

AntはJREが移植可能と見なす機能に制限されており、シンボリックリンクはそのような機能の1つであり、長い間移植不可能と見なされてきました。Java 7およびNIO.2でこれは変更されましたが、シンボリックリンクの完全なサポートはまだ不足しています(特にZipファイルでは)。Antでのシンボリックリンクの完全なサポートには、FileSetの実装の変更と、それから派生するすべてのタスクや/またはタイプの見直しが必要です。現在、FileSetのfollowsymlinksのセマンティクスは、falseがシンボリックリンクを完全に除外し、trueがセレクタによってシンボリックリンクを考慮することを許可するようなものです。セレクタには、適切なセマンティクスを持つ独自のfollowsymlinks属性を持つことができます。つまり、falseはセレクタがシンボリックリンク自体のプロパティを検査することを許可し、trueはそのターゲットのプロパティを検査することを許可します。

<fileset dir="${server.src}" casesensitive="yes">
  <include name="**/*.java"/>
  <exclude name="**/*Test*"/>
</fileset>

Javaソースファイルであり、名前にTestというテキストが含まれていない${server.src}ディレクトリ内のすべてのファイルをグループ化します。

<fileset dir="${server.src}" casesensitive="yes">
  <patternset id="non.test.sources">
    <include name="**/*.java"/>
    <exclude name="**/*Test*"/>
  </patternset>
</fileset>

上記の例と同じファイルをグループ化しますが、他の<fileset>要素で参照できるPatternSetも、異なるディレクトリにルートを置きます。

<fileset dir="${client.src}" >
  <patternset refid="non.test.sources"/>
</fileset>

上記の例と同じパターンを使用して、${client.src}ディレクトリ内のすべてのファイルをグループ化します。

<fileset dir="${server.src}" casesensitive="yes">
  <filename name="**/*.java"/>
  <filename name="**/*Test*" negate="true"/>
</fileset>

上記の最初の例と同じファイルをグループ化しますが、<filename>セレクタを使用します。

<fileset dir="${server.src}" casesensitive="yes">
  <filename name="**/*.java"/>
  <not>
    <filename name="**/*Test*"/>
  </not>
</fileset>

<filename>セレクタと<not>セレクタコンテナの組み合わせを使用して、前の例と同じファイルをグループ化します。

<fileset dir="src" includes="main/"/>

src/main内のすべてのファイル(例:src/main/Foo.javaまたはsrc/main/application/Bar.java)を選択します。