删除

描述

删除单个文件、指定目录及其所有文件和子目录,或由一个或多个 资源集合 指定的一组文件。<fileset> 的字面含义是不包含目录;但是,当使用嵌套文件集时,通过将 includeEmptyDirs 属性设置为 true 可以触发删除空目录。请注意,此属性在包含目录的各种资源集合类型的上下文中没有意义,但在任何情况下都不会尝试删除非空目录。目录是否为空是通过查看文件系统来决定的——包含或排除模式不适用于此。

如果您使用此任务删除编辑器创建的临时文件,但它似乎不起作用,请阅读基于目录的任务中的 默认排除集,并查看下面的 defaultexcludes 属性。

出于历史原因,<delete dir="x"/><delete><fileset dir="x"/></delete> 不同;它将尝试删除 x 内的所有内容,包括 x 本身,不考虑默认排除,盲目地遵循所有符号链接。如果您需要更多控制,请使用嵌套的 <fileset>

参数

属性 描述 必需
文件 要删除的文件,指定为简单文件名(如果文件存在于当前基本目录中)、相对路径文件名或完整路径文件名。 至少两个中的一个,除非指定了嵌套资源集合
目录 要删除的目录,包括其所有文件和子目录。
注意dir 用于指定 file 的目录名;filedir 是相互独立的。
警告:除非您确实打算递归地删除当前基本目录的整个内容(以及基本目录本身,如果与当前工作目录不同),否则不要dir 设置为 .${basedir} 或完整路径名等效项。
详细 是否显示每个已删除文件的名称。 否;默认 false
安静 如果指定的文件或目录不存在,则不显示诊断消息(除非 Apache Ant 已使用 -verbose-debug 开关调用)或修改退出状态以反映错误。当设置为 true 时,如果无法删除文件或目录,则不会报告错误。此设置模拟了 Unix rm 命令的 -f 选项。将其设置为 true 意味着将 failonerror 设置为 false 否;默认 false
出错停止 控制错误(例如无法删除文件)是否停止构建或仅报告到屏幕。仅当 quietfalse 时才相关。 否;默认 true
包含空目录 使用文件集时是否删除空目录。 否;默认 false
包含 已弃用。使用资源集合。必须删除的文件模式的逗号或空格分隔列表。所有文件相对于 dir 中指定的目录。
包含文件 已弃用。使用资源集合。文件名;此文件的每一行都被视为包含模式。
排除 已弃用。使用资源集合。必须从删除列表中排除的文件模式的逗号或空格分隔列表。所有文件相对于 dir 中指定的目录。 否;默认为默认排除或无,如果 defaultexcludesno
排除文件 已弃用。使用资源集合。文件名;此文件的每一行都被视为排除模式
默认排除 已弃用。使用资源集合。是否使用 默认排除。 否;默认 true
退出时删除 指示如果无法删除文件,是否使用 File#deleteOnExit()。这会导致 JVM 在 JVM 进程终止时尝试删除文件。自 Ant 1.6.2 起 否;默认 false
删除未跟随的符号链接 如果符号链接(而不是它们链接到的文件/目录)由于 followSymlinksfalse 或符号链接的最大数量太大而未被跟随,是否应删除它们。自 Ant 1.8.0 起 否;默认 false
在删除失败时执行 GC 如果 Ant 无法删除文件或目录,它将重试该操作一次。如果此标志设置为 true,它将在重试删除之前执行垃圾回收。
将此标志设置为 true 已知可以解决 Windows 上的一些问题(在 Windows 上默认为 true),但也适用于位于 NFS 共享上的目录树。自 Ant 1.8.3 起
否;在 Windows 上默认为 true,在任何其他操作系统上默认为 true

示例

删除文件 /lib/ant.jar

<delete file="/lib/ant.jar"/>

删除 lib 目录,包括 lib 的所有文件和子目录。

<delete dir="lib"/>

从当前目录及其任何子目录中删除所有扩展名为 .bak 的文件。

<delete>
  <fileset dir="." includes="**/*.bak"/>
</delete>

删除 build 的所有文件和子目录,包括 build 本身。

<delete includeEmptyDirs="true">
  <fileset dir="build"/>
</delete>

删除 build 的所有文件和子目录,但不包括 build 本身。

<delete includeemptydirs="true">
  <fileset dir="build" includes="**/*"/>
</delete>

删除 src 下的 Subversion 元数据目录。因为 .svn默认排除 之一,所以您必须使用 defaultexcludes 标志,否则 Ant 不会删除这些目录及其中的文件。

<delete includeemptydirs="true">
  <fileset dir="src" includes="**/.svn/" defaultexcludes="false"/>
</delete>