Delete Task

## Delete

### Description

Deletes a single file, a specified directory and all its files and subdirectories, or a set of files specified by one or more resource collections. The literal implication of `<fileset>` is that directories are not included; however the removal of empty directories can be triggered when using nested filesets by setting the includeEmptyDirs attribute to true. Note that this attribute is meaningless in the context of any of the various resource collection types that do include directories, but that no attempt will be made to delete non-empty directories in any case. Whether a directory is empty or not is decided by looking into the filesystem—include or exclude patterns don't apply here.

If you use this task to delete temporary files created by editors and it doesn't seem to work, read up on the default exclusion set in Directory-based Tasks, and see the `defaultexcludes` attribute below.

For historical reasons `<delete dir="x"/>` is different from `<delete><fileset dir="x"/></delete>`; it will try to remove everything inside x including x itself, not taking default excludes into account, blindly following all symbolic links. If you need more control, use a nested `<fileset>`.

### Parameters

Attribute | Description | Required
--- | --- | ---
file | The file to delete, specified as either the simple filename (if the file exists in the current base directory), a relative-path filename, or a full-path filename. | At least one of the two, unless nested resource collections are specified
dir | The directory to delete, including all its files and subdirectories. Note: dir is not used to specify a directory name for file; file and dir are independent of each other. Warning: Do not set dir to ., ${basedir}, or the full-pathname equivalent unless you truly intend to recursively remove the entire contents of the current base directory (and the base directory itself, if different from the current working directory).
verbose | Whether to show the name of each deleted file. | No; default false
quiet | If the specified file or directory does not exist, do not display a diagnostic message (unless Apache Ant has been invoked with the `-verbose` or `-debug` switches) or modify the exit status to reflect an error. When set to true, if a file or directory cannot be deleted, no error is reported. This setting emulates the `-f` option to the Unix rm command. Setting this to true implies setting failonerror to false. | No; default false
failonerror | Controls whether an error (such as a failure to delete a file) stops the build or is merely reported to the screen. Only relevant if `quiet` is false. | No; default true
includeemptydirs | Whether to delete empty directories when using filesets. | No; default false
includes | Deprecated. Use resource collections. Comma- or space-separated list of patterns of files that must be deleted. All files are relative to the directory specified in dir. | No
includesfile | Deprecated. Use resource collections. Name of a file; each line of this file is taken to be an include pattern. | No
excludes | Deprecated. Use resource collections. Comma- or space-separated list of patterns of files that must be excluded from the deletion list. All files are relative to the directory specified in dir. | No; defaults to default excludes or none if defaultexcludes is no
excludesfile | Deprecated. Use resource collections. Name of a file; each line of this file is taken to be an exclude pattern | No
defaultexcludes | Deprecated. Use resource collections. Whether to use default excludes. | No; default true
deleteonexit | Indicates whether to use `File#deleteOnExit()` if there is a failure to delete a file. This causes the JVM to attempt to delete the file when the JVM process is terminating. Since Ant 1.6.2 | No; default false
removeNotFollowedSymlinks | Whether symbolic links (not the files/directories they link to) should be removed if they haven't been followed because followSymlinks was false or the maximum number of symbolic links was too big. Since Ant 1.8.0 | No; default false
performGCOnFailedDelete | If Ant fails to delete a file or directory it will retry the operation once. If this flag is set to true it will perform a garbage collection before retrying the delete. Setting this flag to true is known to resolve some problems on Windows (where it defaults to true) but also for directory trees residing on an NFS share. Since Ant 1.8.3 | No; default true on Windows and true on any other OS

### Examples

Delete the file `/lib/ant.jar`.

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

Delete the `lib` directory, including all files and subdirectories of `lib`.

    <delete dir="lib"/>

Delete all files with the extension `.bak` from the current directory and any subdirectories.

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

Delete all files and subdirectories of `build`, including `build` itself.

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

Delete all files and subdirectories of `build`, without `build` itself.

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

Delete the Subversion metadata directories under `src`. Because `.svn` is on of the default excludes you have to use the defaultexcludes flag, otherwise Ant won't delete these directories and the files in it.

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