将文件移动到新的文件或目录,或将文件集合移动到新的目录。默认情况下,如果目标文件已存在,则会覆盖它。当 overwrite 关闭时,只有当源文件比目标文件更新,或者目标文件不存在时才会移动文件 - 请参阅 granularity 属性以了解 Ant 对“更新”的理解。
资源集合 用于选择要移动的一组文件。只支持基于文件系统的资源集合,包括 fileset、filelist 和 path。在 Apache Ant 1.7 之前,只支持 <fileset>
作为嵌套元素。要使用资源集合,必须设置 todir 属性。
从 Ant 1.6.3 开始,可以使用 file 属性移动(重命名)整个目录。如果 tofile 表示一个现有文件,或者在 todir 中存在同名目录,则操作将失败。
属性 | 描述 | 必需 |
---|---|---|
file | 要移动的文件或目录 | file 或至少一个嵌套资源集合元素之一 |
preservelastmodified | 使移动后的文件具有与原始源文件相同的最后修改时间。(注意:在 Java 1.1 上被忽略) | 否;默认为 false |
tofile | 要移动到的文件 | 使用 file 属性时,可以使用 tofile 或 todir。使用嵌套 fileset 时,如果 fileset 的大小大于 1,或者 fileset 中的唯一条目是目录,或者已经指定了 file 属性,则只允许使用 todir |
todir | 要移动到的目录 | |
overwrite | 即使目标文件更新,也覆盖现有文件 | 否;默认为 true |
force | 覆盖只读目标文件。从 Ant 1.8.2 开始 | 否;默认为 false |
filtering | 指示在移动期间是否应该进行标记过滤。有关过滤器工作原理的描述,请参见 filter 任务。 | 否 |
flatten | 忽略源目录的目录结构,将所有文件复制到单个目录中,该目录由 todir 属性指定。请注意,您可以使用 flatten mapper 达到相同的效果 | 否;默认为 false |
includeEmptyDirs | 复制嵌套 FileSet(s) 中包含的空目录。 | 否;默认为 yes |
failonerror | 如果为 false,则记录警告消息,但不停止构建,当要复制的文件不存在,或者其中一个嵌套 fileset 指向不存在的目录,或者在移动过程中发生错误。 | 否;默认为 true |
quiet | 如果为 true且 failonerror 为 false,则当要复制的文件不存在,或者其中一个嵌套 fileset 指向不存在的目录,或者在复制过程中发生错误时,不记录警告消息。从 Ant 1.8.3 开始。 |
否;默认为 false |
verbose | 记录正在移动的文件。 | 否;默认为 false |
encoding | 在过滤复制文件时要假设的编码。从 Ant 1.5 开始。 | 否;默认为默认 JVM 字符编码 |
outputencoding | 写入文件时要使用的编码。从 Ant 1.6 开始。 | 否;如果设置了 encoding,则默认为 encoding,否则默认为默认 JVM 字符编码 |
enablemultiplemappings | 如果为 true,则任务将处理给定源路径的所有映射。如果为 false,则任务将只处理第一个文件或目录。此属性仅在存在 mapper 子元素时才相关。从 Ant 1.6 开始。 |
否;默认为 false |
granularity | 在决定文件已过期之前要给出的毫秒级宽限期。这是必需的,因为并非所有文件系统都支持跟踪最后修改时间到毫秒级。如果源文件和目标文件位于具有不同时钟的独立机器上,这也可能有用。从 Ant 1.6 开始。 | 否;默认值为 0 毫秒,或在 DOS 系统上为 2 秒 |
performGCOnFailedDelete | 如果 Ant 无法删除文件或目录,它将重试操作一次。如果将此标志设置为 true,它将在重试删除之前执行垃圾回收。 将此标志设置为 true已知可以解决 Windows 上的一些问题(在 Windows 上默认为 true),以及位于 NFS 共享上的目录树。从 Ant 1.8.3 开始 |
否;在 Windows 上默认为 true,在任何其他操作系统上默认为 false |
您可以使用嵌套的 mapper 元素来定义文件名转换。<move>
使用的默认映射器是 identity。
请注意,传递给映射器的源名称取决于您使用的资源集合。如果您使用 <fileset>
或任何其他提供基本目录的集合,则传递给映射器的名称将是相对于基本目录的相对文件名。在任何其他情况下,将使用源的绝对文件名。
Move 任务支持嵌套的 FilterChain。
如果在同一个 <move>
任务中使用 <filterset>
和 <filterchain>
元素,则首先处理所有 <filterchain>
元素,然后处理 <filterset>
元素。
移动单个文件(重命名文件)
<move file="file.orig" tofile="file.moved"/>
将单个文件移动到目录
<move file="file.orig" todir="dir/to/move/to"/>
将目录移动到新目录
<move todir="new/dir/to/move/to"> <fileset dir="src/dir"/> </move>
或者,从 Ant 1.6.3 开始
<move file="src/dir" tofile="new/dir/to/move/to"/>
将一组文件移动到新目录
<move todir="some/new/dir"> <fileset dir="my/src/dir"> <include name="**/*.jar"/> <exclude name="**/ant.jar"/> </fileset> </move>
将文件列表移动到新目录
<move todir="some/new/dir"> <filelist dir="my/src/dir"> <file name="file1.txt"/> <file name="file2.txt"/> </filelist> </move>
将 ".bak"
附加到目录中所有文件的名称。
<move todir="my/src/dir" includeemptydirs="false"> <fileset dir="my/src/dir"> <exclude name="**/*.bak"/> </fileset> <mapper type="glob" from="*" to="*.bak"/> </move>