2つのディレクトリツリーがあります。
source/aaa/bbb/ccc/file01.txt
source/aaa/bbb/file02.txt
source/aaa/bbb/file03.txt
source/aaa/ddd/file03.txt
source/file01.txt
と
template/aaa/bbb/ccc/file01.txt
template/aaa/bbb/DELETE-file03.txt
template/aaa/DELETE-ddd
template/DELETE-file01.txt
Antを使って、3つのことをしたいと思います。まず、「template」から「source」にファイルをコピーして、「DELETE-」で始まらないすべてのファイルを置き換えます。たとえば、「source / aaa / bbb / ccc/file01.txt」は置き換えられます。これは簡単です:
<copy todir="source" verbose="true" overwrite="true">
<fileset dir="template">
<exclude name="**/DELETE-*"/>
</fileset>
</copy>
次に、「テンプレート」ツリーの対応するディレクトリにある「DELETE-」ファイルと名前が一致する「ソース」ツリー内のすべてのファイルを削除します。たとえば、「source / aaa / bbb/file03.txt」と「source/file01.txt」の両方が削除されます。私はこれを次の方法で達成することができました:
<delete verbose="true">
<fileset dir="source">
<present present="both" targetdir="template">
<mapper type="regexp" from="(.*[/\\])?([^/\\]+)" to="\1DELETE-\2"/>
</present>
</fileset>
</delete>
第三に、同じように名前が一致するディレクトリ(空かどうか)を削除したいと思います。たとえば、「template / aaa/DELETE-ddd」とその下のすべてのファイルが削除されます。「テンプレート」ツリーにDELETE-*ファイルがある「ソース」ツリーのディレクトリ(およびその下のすべてのファイル)に一致するファイルセットを作成する方法がわかりません。
この3番目のタスクはAnt(1.7.1)でも可能ですか?できれば、カスタムのantタスク/セレクターを記述せずにこれを実行したいと思います。