4

これは当然のことのように思えますが、そうではないと思います。与えられた:

  • スペースで区切られたファイルのリスト (またはカンマ区切りなど)
  • ホワイトリストに登録された<patternset>パターンの

<fileset>ホワイトリストに登録されたパターンに一致するリスト内のすべてのファイルを含む を見つけるにはどうすればよいですか?

リストからファイルのリストを取得するのは簡単です:

<patternset id="the-patternset" includes="${list.of.files}" />
<fileset id="the-fileset" dir="${basedir}">
    <patternset refid="パターンセット" />
</ファイルセット>
<pathconvert pathsep="${line.separator}" property="the-filelist" refid="the-fileset"/>
<echo>ファイルセット: ${the-filelist}</echo>

…内のすべてのファイルを含むファイルセットを喜んで生成します${list.of.files}。ただし、次のようなフィルターを追加します。

<patternset id="the-filter">
    <include name="includeme/**/*.java" />
    <exclude name="excludeme/**/*.java" />
</パターンセット>

<patternset id="the-patternset" includes="${list.of.files}" />
<fileset id="the-fileset" dir="${basedir}">
    <patternset refid="パターンセット" />
    <patternset refid="the-filter" />
</ファイルセット>
<pathconvert pathsep="${line.separator}" property="the-filelist" refid="the-fileset"/>
<echo>ファイルセット: ${the-filelist}</echo>

the-filter …パターンセットの結合を一覧表示します。つまり、 または のいずれか に一致するすべてのファイルですthe-patternset

${list.of.files} にあり、一致するファイルを含むファイルセットを作成するにはどうすればよいthe-patternsetですか?

4

1 に答える 1

1

鉢植えの例です。各パターンセットから 1 つずつ、2 つのファイルセット (またはファイルリスト) を作成します。ここでは固定リストを使用します。

<property name="list.1" value="a,b,c" />
<property name="list.2" value="b,c,d" />

<fileset dir="." id="set.1" includes="${list.1}" />
<fileset dir="." id="set.2" includes="${list.2}" />

次に、<intersect>リソース コレクションを使用して、必要な「重複」セットを取得します。

<intersect id="intersect">
    <resources refid="set.1"/>
    <resources refid="set.2"/>
</intersect>

ほとんどの Ant タスクでは、単純なファイルセットの代わりにリソース コレクションを使用できます。

于 2013-02-06T21:55:43.810 に答える