我需要一个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