1つのフォルダを他のいくつかの場所にコピーするAntスクリプトが必要です。良い従順なプログラマーとして、私は自分自身を繰り返したくありません。このようなファイルセットを取得する方法はありますか?
<copy todir="${target}/path/to/target/1">
<fileset dir="${src}">
<exclude name='**/*svn' />
</fileset>
</copy>
そして、fileset
を変数に格納して、再利用できるようにしますか?
ファイルセットでid属性を宣言し、各コピータスクでそれを参照します。
例えば:
<project name="foo">
<fileset id="myFileSet" dir="${src}">
<exclude name='**/*svn' />
</fileset>
...
<target name="copy1">
<copy todir="${target}/path/to/target/1">
<fileset refid="myFileSet"/>
</copy>
</target>
<target name="copy2">
<copy todir="${target}/path/to/target/2">
<fileset refid="myFileSet"/>
</copy>
</target>
</project>
リッチの答え おそらく特定の問題には適していますが、Antでコードを再利用する一般的な方法は <macrodef>
。
<macrodef name="copythings">
<attribute name="todir"/>
<sequential>
<copy todir="@{todir}">
<fileset dir="${src}">
<exclude name='**/*svn' />
</fileset>
</copy>
</sequential>
</macrodef>
<copythings todir="/path/to/target1"/>
<copythings todir="/path/to/target2"/>
すでに最初の回答に賛成していますが、マッパーを使用して複数の宛先にコピーすることもできます。