Ant:将同一文件集复制到多个位置
我需要一个蚂蚁脚本,将一个文件夹复制到其他几个地方。作为一个好的顺从的程序员,我不想重复我自己。有没有任何方法可以获取这样的文件集:Ant:将同一文件集复制到多个位置,ant,Ant,我需要一个蚂蚁脚本,将一个文件夹复制到其他几个地方。作为一个好的顺从的程序员,我不想重复我自己。有没有任何方法可以获取这样的文件集: <copy todir="${target}/path/to/target/1"> <fileset dir="${src}"> <exclude name='**/*svn' /> </fileset> </copy> 并将文件集存储在变量中,以便可以重复使用?在文
<copy todir="${target}/path/to/target/1">
<fileset dir="${src}">
<exclude name='**/*svn' />
</fileset>
</copy>
并将
文件集
存储在变量中,以便可以重复使用?在文件集上声明一个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中重用代码的通用方法是一种简单的方法
已经对第一个答案进行了投票,但您也可以使用映射器复制到多个目的地。正确。这是在这里定义的:在“定义过滤器集并稍后引用它”一节中。请注意,某些文件集选择器可能有副作用,这意味着两次引用同一文件集将不会得到相同的结果。例如:
将在第一次运行后更新其缓存,并在假定基础文件没有更改的情况下,稍后重新引用文件集,将返回一个空集。这应该是可接受的答案。实际接受的答案是重复代码,这正是OP所说的他试图避免的。
<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"/>