## Overview of Apache Ant Tasks

Given the large number of tasks available with Ant, it may be difficult to get an overall view of what each task can do. The following tables provide a short description of each task and a link to the complete documentation.

Archive Tasks
Audit/Coverage Tasks
Compile Tasks
Deployment Tasks
Documentation Tasks
EJB Tasks
Execution Tasks
File Tasks
Java Extensions Tasks
Logging Tasks
Mail Tasks
Miscellaneous Tasks
Pre-process Tasks
Property Tasks
Remote Tasks
SCM Tasks
Testing Tasks
Archive Tasks 🔝

Task Name | Description
--- | ---
GUnzip/BUnzip2/UnXZ | Expands a file packed using GZip, BZip2 or XZ.
GZip/BZip2/XZ | Packs a file using the GZip, BZip2 or XZ algorithm. This task does not do any dependency checking; the output file is always generated
Cab | Creates Microsoft CAB archive files. It is invoked similar to the Jar or Zip tasks. This task will work on Windows using the external `cabarc` tool (provided by Microsoft), which must be located in your executable path.
Ear | An extension of the Jar task with special treatment for files that should end up in an Enterprise Application archive.
Jar | Jars a set of files.
Jlink | Deprecated. Use the `zipfileset` and `zipgroupfileset` attributes of the Jar or Zip tasks instead.
Manifest | Creates a manifest file.
Rpm | Invokes the `rpm` executable to build a Linux installation file. This task currently only works on Linux or other Unix platforms with RPM support.
SignJar | Signs a jar or zip file with the `javasign` command-line tool.
Tar | Creates a tar archive.
Unjar | Unzips a jarfile.
Untar | Untars a tarfile.
Unwar | Unzips a warfile.
Unzip | Unzips a zipfile.
War | An extension of the Jar task with special treatment for files that should end up in the `WEB-INF/lib`, `WEB-INF/classes`, or `WEB-INF` directories of the Web Application Archive.
Zip | Creates a zipfile.

Audit/Coverage Tasks 🔝

Task Name | Description
--- | ---
JDepend | Invokes the JDepend parser. This parser "traverses a set of Java source-file directories and generates design-quality metrics for each Java package".

Compile Tasks 🔝

Task Name | Description
--- | ---
Depend | Determines which class files are out-of-date with respect to their source, removing the class files of any other classes that depend on the out-of-date classes, forcing the re-compile of the removed class files. Typically used in conjunction with the Javac task.
Javac | Compiles the specified source file(s) within the running (Ant) JVM, or in another JVM if the fork attribute is specified.
JspC | Runs the JSP compiler. It can be used to precompile JSP pages for fast initial invocation of JSP pages, deployment on a server without the full JDK installed, or simply to syntax-check the pages without deploying them. The Javac task can be used to compile the generated Java source. (For WebLogic JSP compiler, see the Wljspc task.)
NetRexxC | Compiles a NetRexx source tree within the running (Ant) JVM.
Rmic | Runs the `rmic` compiler on the specified file(s).
Wljspc | Compiles JSP pages using WebLogic JSP compiler, `weblogic.jspc`. (For non-WebLogic JSP compiler, see the JspC task.

Deployment Tasks 🔝

Task Name | Description
--- | ---
ServerDeploy | Runs a "hot" deployment tool for vendor-specific J2EE server.

Documentation Tasks 🔝

Task Name | Description
--- | ---
Javadoc | Generates code documentation using the `javadoc` tool. The `Javadoc2` task is deprecated; use the `Javadoc` task instead.

EJB Tasks 🔝

Task Name | Description
--- | ---
EJB Tasks | (See the documentation describing the EJB tasks.)

Execution Tasks 🔝

Task Name | Description
--- | ---
Ant | Runs Ant on a supplied buildfile, optionally passing properties (with possibly new values). This task can be used to build sub-projects.
AntCall | Runs another target within the same buildfile, optionally passing properties (with possibly new values).
Apply/ExecOn | Executes a system command. When the os attribute is specified, the command is only executed when Ant is run on one of the specified operating systems.
Dependset | Compares a set of source files with a set of target files. If any of the source files is newer than any of the target files, all the target files are removed.
Exec | Executes a system command. When the os attribute is specified, the command is only executed when Ant is run on one of the specified operating systems.
Java | Executes a Java class within the running (Ant) JVM, or in another JVM if the fork attribute is specified.
Parallel | A container task that can contain other Ant tasks. Each nested task specified within the `<parallel>` tag will be executed in its own thread.
Sequential | A container task that can contain other Ant tasks. The nested tasks are simply executed in sequence. Its primary use is to support the sequential execution of a subset of tasks within the `<parallel>` tag.
Sleep | Suspends execution for a specified period of time. Useful when a build or deployment process requires an interval between tasks.
Subant | Calls a given target for all defined sub-builds. This is an extension of ant for bulk project execution.
Waitfor | Blocks execution until a set of specified conditions become true. This task is intended to be used with the Parallel task to synchronize a set of processes.

File Tasks 🔝

Task Name | Description
--- | ---
Attrib | Changes the permissions and/or attributes of a file or all files inside the specified directories. Currently, it has effect only under Windows.
Checksum | Generates a checksum for a file or set of files. This task can also be used to perform checksum verifications.
Chgrp | Changes the group ownership of a file or all files inside the specified directories. Currently, it has effect only under Unix.
Chmod | Changes the permissions of a file or all files inside the specified directories. Currently, it has effect only under Unix. The permissions are also UNIX style, like the arguments for the `chmod` command.
Chown | Changes the owner of a file or all files inside the specified directories. Currently, it has effect only under Unix.
Concat | Concatenates multiple files into a single one or to Ant's logging system.
Copy | Copies a file or Fileset to a new file or directory.
Copydir | Deprecated. Use the Copy task instead.
Copyfile | Deprecated. Use the Copy task instead.
Delete | Deletes either a single file, all files and sub-directories in a specified directory, or a set of files specified by one or more FileSets.
Deltree | Deprecated. Use the Delete task instead.
Filter | Sets a token filter for this project, or reads multiple token filters from a specified file and sets these as filters. Token filters are used by all tasks that perform file-copying operations.
FixCRLF | Modifies a file to add or remove tabs, carriage returns, linefeeds, and EOF characters.
Get | Gets a file from a URL.
Mkdir | Creates a directory. Non-existent parent directories are created, when necessary.
Move | Moves a file to a new file or directory, or a set(s) of file(s) to a new directory.
Patch | Applies a diff file to originals.
Rename | Deprecated. Use the Move task instead.
RenameExtensions | Deprecated. Use the Move task with a glob mapper instead.
Replace | Replaces the occurrence of a given string with another string in a file or set of files.
ReplaceRegExp | Replaces the occurrence of a given regular expression with a substitution pattern in a file or set of files.
SetPermissions | Changes the permissions of a collection of resources.
Sync | Synchronizes two directory trees.
Tempfile | Generates a name for a new temporary file and sets the specified property to that name.
Touch | Changes the modification time of a file and possibly creates it at the same time.

Java Extensions Tasks 🔝

Task Name | Description
--- | ---
Jarlib-available | Checks whether an extension is present in a FileSet or an ExtensionSet. If the extension is present, the specified property is set.
Jarlib-display | Displays the Optional Package and Package Specification information contained within the specified jars.
Jarlib-manifest | Generates a manifest that declares all the dependencies in manifest. The dependencies are determined by looking in the specified path and searching for Extension/Optional Package specifications in the manifests of the jars.
Jarlib-resolve | Tries to locate a jar to satisfy an extension, and places the location of the jar into the specified property.

Logging Tasks 🔝

Task Name | Description
--- | ---
Record | Runs a listener that records the logging output of the build process events to a file. Several recorders can exist at the same time. Each recorder is associated with a file.

Mail Tasks 🔝

Task Name | Description
--- | ---
Mail | Sends SMTP email.
MimeMail | Deprecated. Use the Mail task instead.

Miscellaneous Tasks 🔝

Task Name | Description
--- | ---
Defaultexcludes | Modifies the list of default exclude patterns from within your build file.
Echo | Echoes text to `System.out` or to a file.
Fail | Exits the current build by throwing a `BuildException`, optionally printing additional information.
GenKey | Generates a key in keystore.
HostInfo | Sets properties related to the provided host, or to the host the process is run on.
Input | Allows user interaction during the build process by displaying a message and reading a line of input from the console.
Script | Executes a script in a Apache BSF-supported language.
Sound | Plays a sound file at the end of the build, according to whether the build failed or succeeded.
Splash | Displays a splash screen.
Sql | Executes a series of SQL statements via JDBC to a database. Statements can either be read in from a text file using the `src` attribute, or from between the enclosing SQL tags.
Taskdef | Adds a task definition to the current project, such that this new task can be used in the current project.
TStamp | Sets the `DSTAMP`, `TSTAMP`, and `TODAY` properties in the current project, based on the current date and time.
Typedef | Adds a data-type definition to the current project, such that this new type can be used in the current project.
XmlValidate | Checks that XML files are valid (or only well-formed). This task uses the XML parser that is currently used by Ant by default, but any SAX1/2 parser can be specified, if needed.

Pre-process Tasks 🔝

Task Name | Description
--- | ---
ANTLR | Invokes the ANTLR Translator generator on a grammar file.
AntStructure | Generates a DTD for Ant buildfiles that contains information about all tasks currently known to Ant.
Import | Imports another build file and potentially overrides targets in it with targets of your own.
Include | Includes another build file.
JavaCC | Invokes the JavaCC compiler-compiler on a grammar file.
Javah | Generates JNI headers from a Java class.
JJDoc | Invokes the JJDoc documentation generator for the JavaCC compiler-compiler. JJDoc takes a JavaCC parser specification and produces documentation for the BNF grammar. It can operate in three modes, determined by command line options. This task only invokes JJDoc if the grammar file is newer than the generated BNF grammar documentation.
JJTree | Invokes the JJTree preprocessor for the JavaCC compiler-compiler. It inserts parse-tree building actions at various places in the JavaCC source that it generates. The output of JJTree is run through JavaCC to create the parser. This task only invokes JJTree if the grammar file is newer than the generated JavaCC file.
Macrodef | Defines a new task as a macro built-up upon other tasks.
Native2Ascii | Converts files from native encodings to ASCII with escaped Unicode. A common usage is to convert source files maintained in a native operating system encoding to ASCII, prior to compilation.
Presetdef | Defines a new task by instrumenting an existing task with default values for attributes or child elements.
Translate | Identifies keys in files, delimited by special tokens, and translates them with values read from resource bundles.
XSLT | Processes a set of documents via XSLT.

Property Tasks 🔝

Task Name | Description
--- | ---
Available | Sets a property if a specified file, directory, class in the classpath, or JVM system resource is available at run time.
Basename | Sets a property to the last element of a specified path.
BuildNumber | Helps tracking build numbers.
Condition | Sets a property if a certain condition holds true; this is a generalization of Available and Uptodate.
Dirname | Sets a property to the value of the specified file up to, but not including, the last path element.
Echoproperties | Lists the current properties.
LoadFile | Loads a file into a property.
LoadProperties | Loads a file's contents as Ant properties. This task is equivalent to using `<property file="..."/>` except that it supports nested `<filterchain>` elements, and it cannot be specified outside a target.
MakeURL | Creates a URL (list) from a file/fileset or path
PathConvert | Converts a nested path, path reference, filelist reference, or fileset reference to the form usable on a specified platform and/or to a list of items separated by the specified separator and stores the result in the specified property.
Property | Sets a property (by name and value), or set of properties (from a file or resource) in the project.
PropertyFile | Creates or modifies property files. Useful when wanting to make unattended modifications to configuration files for application servers and applications. Typically used for things such as automatically generating a build number and saving it to a build properties file, or doing date manipulation.
Uptodate | Sets a property if a given target file is newer than a set of source files.
Whichresource | Finds a class or resource.
XmlProperty | Loads property values from a well-formed XML file.

Remote Tasks 🔝

Task Name | Description
--- | ---
FTP | Implements a basic FTP client that can send, receive, list, and delete files, and create directories.
Rexec | Automates a `rexec` session.
Scp | Copies files to or from a remote server using SSH.
setproxy | Sets Java's HTTP proxy properties, so that tasks and code run in the same JVM can have access to remote web sites through a firewall.
Sshexec | Executes a command on a remote server using SSH.
Telnet | Automates a `telnet` session. This task uses nested `<read>` and `<write>` tags to indicate strings to wait for and specify text to send.

SCM Tasks 🔝

Task Name | Description
--- | ---
Cvs | Handles packages/modules retrieved from a CVS repository.
CvsChangeLog | Generates an XML report of the changes recorded in a CVS repository.
CVSPass | Adds entries to a `.cvspass` file. Adding entries to this file has the same affect as a `cvs login` command.
CvsTagDiff | Generates an XML-formatted report file of the changes between two tags or dates recorded in a CVS repository.
ClearCase | Tasks to perform the ClearCase `cleartool checkin`, `checkout`, `uncheckout`, `update`, `lock`, `unlock`, `mklbtype`, `rmtype`, `mklabel`, `mkattr`, `mkdir`, `mkelem`, and `mkbl` commands.
Continuus/Synergy | Tasks to perform the Continuus `ccm checkin`, `checkout`, `reconfigure`, ccmcheckintask, and ccmcreatetask commands.
Microsoft Visual SourceSafe | Tasks to perform the Visual SourceSafe `ss get`, `label`, `history`, `checkin`, `checkout`, `add`, `cp`, and `create` commands.
Pvcs | Allows the user extract the latest edition of the source code from a PVCS repository.
SourceOffSite | Tasks to perform the SourceOffSite `sos get`, `label`, `checkin`, and `checkout` commands.

Testing Tasks 🔝

Task Name | Description
--- | ---
Junit | Runs tests from the Junit testing framework. This task has been tested with JUnit 3.0 and later; it won't work with versions prior to JUnit 3.0.
JunitReport | Merges the individual XML files generated by the Junit task and applies a stylesheet on the resulting merged document to provide a browsable report of the testcases results.