同步

自 Apache Ant 1.6 起

描述

将目标目录与一个或多个 资源集合 中定义的文件同步。

目标目录中任何未与至少一个嵌套资源集合匹配的文件将被删除。例如,如果您在源文件中排除了一个文件,并且目标目录中存在该名称的文件,它将从目标中删除。

参数

属性 描述 必需
todir 要与资源集合同步的目标目录
overwrite 即使目标文件较新,也覆盖现有文件。 否;默认为 false
includeEmptyDirs 复制资源集合中包含的任何空目录。
注意:此属性还控制任何嵌套的 <preserveintarget> 元素的行为。如果此属性为 false(默认值),则即使目标目录中仅存在的空目录与 <preserveintarget> 的模式匹配,也会被删除。这可以通过 <preserveintarget>preserveEmptyDirs 属性来覆盖。
否;默认为 false
failonerror 如果设置为 false,则记录警告消息,但当其中一个嵌套文件集指向不存在的目录时,不要停止构建。 否;默认为 true
verbose 记录正在复制的文件。 否;默认为 false
granularity 在决定文件已过期之前要给出的毫秒级宽限期。这是因为并非所有文件系统都支持以毫秒级跟踪最后修改时间。如果源文件和目标文件位于时钟不同步的独立机器上,这也可能很有用。自 Ant 1.6.2 起 否;默认值为 0 毫秒,或 DOS 系统上的 2 秒。

作为嵌套元素指定的参数

任何资源集合

资源集合 用于选择要复制的文件组。

在 Ant 1.7 之前,仅支持 <fileset> 作为嵌套元素。

preserveInTarget

自 Ant 1.7.0 起

指定即使目标目录中不存在,也应保留在目标目录中的文件或目录。

此嵌套元素类似于 FileSet,但它不支持 dir 属性,并且 usedefaultexcludes 属性默认为 false

其他参数
属性 描述 必需
preserveEmptyDirs 覆盖此元素匹配的目录的 includeEmptydirs 设置。如果您想保留源目录中不存在的空目录,您可以设置任务的 includeemptydirs 属性或此属性。如果两个属性值冲突,则此属性“获胜”。 否;默认为任务的 includeemptydirs 属性的值

示例

generated-site 中较新的文件覆盖 site 中的所有文件,删除 site 中不存在于 generated-site 中的文件。

<sync todir="site">
  <fileset dir="generated-site"/>
</sync>

generated-site 中较新的文件覆盖 site 中的所有文件,删除 site 中不存在于 generated-site 中的文件,但保留任何 CVS 子目录中的所有文件。

<sync todir="site">
  <fileset dir="generated-site"/>
  <preserveintarget>
    <include name="**/CVS/**"/>
  </preserveintarget>
</sync>