如果文件不存在于目标位置,则复制文件的Ant任务

时间:2014-10-07 06:34:13

标签: ant build build-automation

是否有任何Ant任务仅在文件不存在于目标位置时才将文件复制到目标位置?

2 个答案:

答案 0 :(得分:4)

有三种情况:

  1. 目标文件不存在。
  2. 目标文件存在但比源文件旧。
  3. 目标文件存在且比源文件新。
  4. 这个问题是要求副本仅在案例1中发生。默认情况下,副本发生在案例1和2中;将overwrite设置为true会使复制在所有三种情况下都发生。答案是使用present选择器:

    <copy todir="dest">
      <fileset dir="src">
        <present present="srconly" targetdir="dest" />
      </fileset>
    </copy>
    

答案 1 :(得分:0)

copy task有一个覆盖属性,默认设置为false。

  

overwrite =即使目标文件是覆盖也会覆盖现有文件   新。必需=否;默认为false。

因此,当覆盖=&#34; false&#34;时,您可以使用复制任务。 (默认),表示:

  <copy todir="../dest/dir">
    <fileset dir="src_dir">
      <exclude name="**/*.java"/>
    </fileset>
  </copy>

或单个文件:

<copy file="myfile.txt" todir="../some/other/dir"/>

完全符合您的要求。