是否有任何Ant任务只在目标位置不存在文件的情况下才将文件复制到目标位置?
有三种情况:
- 目标文件不存在
- 目标文件存在,但比源文件旧
- 目标文件存在,并且比源文件更新
这个问题要求复制只在情况1中发生。默认情况是在情况1和情况2中进行复制;将overwrite设置为true会在所有三种情况下都进行复制。答案是使用present
选择器:
<copy todir="dest">
<fileset dir="src">
<present present="srconly" targetdir="dest" />
</fileset>
</copy>
复制任务有一个覆盖属性,默认设置为false
overwrite=覆盖现有文件,即使目标文件更新。必需=否;默认为false。
因此,当overwrite="false"(默认值)时,您可以完成复制任务,这意味着:
<copy todir="../dest/dir">
<fileset dir="src_dir">
<exclude name="**/*.java"/>
</fileset>
</copy>
或者对于单个文件:
<copy file="myfile.txt" todir="../some/other/dir"/>
完全按照你的要求去做。