Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant任务复制一个文件,如果它没有';不存在于目标位置_Ant_Build_Build Automation - Fatal编程技术网

Ant任务复制一个文件,如果它没有';不存在于目标位置

Ant任务复制一个文件,如果它没有';不存在于目标位置,ant,build,build-automation,Ant,Build,Build Automation,是否有任何Ant任务仅在目标位置不存在文件时才将文件复制到目标位置?具有覆盖属性,该属性默认设置为false。 覆盖=覆盖现有文件,即使目标文件是 更新的。必需=否;默认为false 因此,当overwrite=“false”(这是默认值)表示: <copy todir="../dest/dir"> <fileset dir="src_dir"> <exclude name="**/*.java"/> </fileset&

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

具有覆盖属性,该属性默认设置为false。

覆盖=覆盖现有文件,即使目标文件是 更新的。必需=否;默认为false

因此,当overwrite=“false”(这是默认值)表示:

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

或对于单个文件:

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

完全符合您的要求。

有三种情况:

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

    <copy todir="dest">
      <fileset dir="src">
        <present present="srconly" targetdir="dest" />
      </fileset>
    </copy>
    
    
    
    仅当源文件不比目标文件新时才起作用。如果目标文件较新,则目标文件将被覆盖。@Subby您说得对,这是一个错误。从复制任务的源:if(forceOverwrite | |!destFile.exists()| | |(file.lastModified()-粒度>destFile.lastModified()){fileCopyMap.put(file.getAbsolutePath(),新字符串[]{destFile.getAbsolutePath()})}else{log(文件+”省略为“+destFile+”是最新的。”,Project.MSG_VERBOSE);=>很明显,如果目标文件夹不存在,会发生什么?它会创建一个目标文件夹吗?@vogash是的,它的行为类似于带有-P参数的shell mkdir命令。@老实说,我认为这不是一个bug。它在文档中。