一、概述
sync是Ant1.6引入的内置任务,用于将一个或多个资源集合中的文件同步到目标目录。目标目录中的文件如果没有匹配任何嵌套的资源集合将会被删除。
二、属性
todir:同步资源集合的目标目录。
overwrite:即使存在的文件较新也覆盖存在的文件,默认为false。
includeEmptyDirs:复制资源集合中包含的空目录。此属性还控制嵌套元素preserveintarget的行为,如果设置为false,只存在于目标目录的空目录将被删除,即使这些目录与preserveintarget模式匹配。此属性可以被preserveintarget的preserveEmptyDirs属性覆盖。默认为false。
failonerror:当嵌套的文件集指定的目录不存在时,如果设置为false,会记录一条警告信息但不会停止构建。默认为true。
verbose:记录正在复制的文件,默认为false。
granularity:ant1.6.2起,判断文件是否过期时使用的时间差毫秒数,因为不是所有的文件系统都支持最后修改时间到毫秒级别,默认为0毫秒。DOS系统上为2秒。
ant1.7之前只支持嵌套fileset元素。
ant1.7起除了支持嵌套资源集合,还支持嵌套preserveInTarget元素,preserveInTarget用于指定目标目录中要保留的文件或目录,即使它们不包含在任何资源集合中。preserveInTarget与fileset类似,除了不支持dir属性和defaultexcludes属性设置为false。此外还有一个属性:
preserveEmptyDirs:改变匹配preserveInTarget的目录的includeEmptydirs属性设置。如果要保留不在源目录中的空目录,可以设置preserveInTarget的includeEmptyDirs属性或者此属性,如果两个值冲突,则以此属性为准。默认为includeEmptyDirs的值。
三、简单示例
<project>
<sync todir="task" >
<fileset dir="../../task"/>
<preserveintarget preserveEmptyDirs="true">
<include name="**/**"/>
</preserveintarget>
</sync>
</project>