src
2 つのディレクトリがあります。それらを と と呼びましょうbuild
。私のビルドシステムは、mtime が insrc
よりも新しいすべてのファイルに対して、ファイルをtobuild
にコピーし、いくつかの変換 (縮小、バージョン管理など) を行うように機能します。それ以外の場合、ファイルは最新であると見なされるためスキップします。src
buid
ただし、ソース ファイルが削除されると、ビルドされたバージョンがまだ存在しbuild
、後で生成されるマップ ファイルに含まれるため、問題が発生します。
$ ls src
example1.js
example2.js
$ ant do-the-stuff
...
$ ls build
example1.js
example1-12345.min.js
example2.js
example2-23456.min.js
.map
$ cat .map
example1.js=example1-12345.min.js
example2.js=example2-23456.min.js
$ rm src/example2.js
$ ant do-the-stuff
...
$ cat .map
example1.js=example1-12345.min.js
example2.js=example2-23456.min.js
Antで別のディレクトリに存在しないファイルを削除する方法はありますか? 集合論の観点からは、単純な A\B 操作です。
これは私がすでに試したものですが、うまくいきませんでした:
<delete dir="build">
<exclude name="src/*" />
</delete>
<delete dir="build">
<exclude>
<fileset name="src" />
</exclude>
</delete>
<delete dir="build">
<fileset dir="build/*">
<not>
<present targetdir="src" />
</not>
</fileset>
</delete>