Move 任务用于移动文件和目录,默认时Move任务会覆盖目标文件或目录(如果目标文件或目录存在)。当关闭overwrite时,Move任务只会移动源文件比目标文件新的文件,或者目标文件不存在时才移动。在Move任务中可以引用FileSet类型。
4.9.1 Move Task的属性及功能
Move 任务具有以下属性:
(1)file:用于指定要移动的文件或目录。
(2)preservelastmodified:用于指定移动后的文件的最后修改时间与源文件相同。
(3)tofile:作用是指定移动后的文件新名称和位置。
(4)todir:作用是指定文件目录的目标位置。
(5)overwrite:用于设定当源文件的最后修改时间大于目标文件的最后修改时间时,是否用源文件覆盖目标文件。默认为true。
(6)filtering:用于定义在移动时是否允许符号过滤。
(7)flatten:作用是忽略目录结构。把各层目录下的文件移动到同一个目录下。默认为false。
(8)includeEmptyDirs:用于指定在移动时是否忽略空目录。默认为false。
(9)failonerror:用于定义当出现错误时是忽略并继续执行,还是当遇到错误时就停止执行命令。
(10)verbose:用于指定当文件移动时是否输出日志信息。
(11)encoding:用于定义在移动文件时使用的过滤器的编码方式。
(12)outputencoding:用于定义在写文件时使用的编码方式。
(13)enablemultiplemapping:用于指定是否可以使用多个映射。默认时只使用一个 映射。
(14)granularity:用于指定一个文件修改时间的毫秒数据的允许误差。因为不是所有的文件系统的修改时间都精确到毫秒数。默认时为0,如果是DOS系统则为2。
4.9.2 使用Move Task实现移动文件和目录功能的实例
(1)移动单个文件的实例:
<move file="file.orig" tofile="file.moved"/>
这个例子的作用是重命名file.org文件为file.moved。把文件移动到目录的例子如下:
<move file="file.orig" todir="dir/to/move/to"/>
这个例子的作用是把文件file.org移动到dir/to/move/to目录下。
(2)移动目录的实例:
<move todir="new/dir/to/move/to">
<fileset dir="src/dir"/>
</move>
这个例子的作用是把src/dir目录移动到new/dir/to/move/to目录。在Ant 1.6.3版本后,可以使用以下file属性来指定目录从而实现上面目录移动的功能:
<move file="src/dir" tofile="new/dir/to/move/to"/>
(3)通过Mapper功能对文件进行备份的例子:
<move todir="my/src/dir" includeemptydirs="false">
<fileset dir="my/src/dir">
<exclude name="**/*.bak"/>
</fileset>
<mapper type="glob" from="*" to="*.bak"/>
</move>
这个实例的作用是把my/src/dir目录下的所有文件重命名为.bak的备份文件(.bak文件除外)。