我需要一個Ant腳本,將一個文件夾複製到其他幾個地方。作爲一個很好的順從程序員,我不想重複自己。有沒有采取這樣的文件集的任何方式:螞蟻:同樣的文件集複製到多個地方
<copy todir="${target}/path/to/target/1">
<fileset dir="${src}">
<exclude name='**/*svn' />
</fileset>
</copy>
,並存儲在一個變量中fileset
因此它可以重複使用?
我需要一個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>
Rich's answer可能是您的特定問題的更好,但在螞蟻重用代碼的一般方式是<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"/>
已投票的第一個回答已經存在,但您也可以使用映射器複製到多個目的地。
正確的。這被定義如下:https://ant.apache.org/manual/Types/filterset.html在部分「定義FilterSet後來引用它。」 – 2014-10-15 13:24:07
注意某些文件集選擇可能有副作用,意爲指的是同一文件集兩次不會得到相同的結果。例如:`` 會後第一次運行更新其高速緩存,並重新提及的文件集後,假設基礎文件沒有變化,會返回一個空集。 –
2016-09-30 12:51:38