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
Java2 Extensions Tasks
Logging Tasks
Mail Tasks
Miscellaneous Tasks
Pre-process Tasks
Property Tasks
Remote Tasks
SCM Tasks
Testing Tasks

Archive Tasks [Back to top]
Task Name Description
BUnzip2

Expands a file packed using GZip or BZip2.

BZip2

Packs a file using the GZip or BZip2 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.

GUnzip

Expands a GZip file.

GZip

GZips a set of files.

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 [Back to top]
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 [Back to top]
Task Name Description
Depend

Determines which classfiles are out-of-date with respect to their source, removing the classfiles of any other classes that depend on the out-of-date classes, forcing the re-compile of the removed classfiles. Typically used in conjunction with the Javac task.

Javac

Compiles the specified source file(s) within the running (Ant) VM, or in another VM if the fork attribute is specified.

Apt

Runs the annotation processor tool (apt), and then optionally compiles the original code, and any generated source code.

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 compiles, see the Wljspc task.)

NetRexxC

Compiles a NetRexx source tree within the running (Ant) VM.

Rmic

Runs the rmic compiler on the specified file(s).

Wljspc

Compiles JSP pages using Weblogic's JSP compiler, weblogic.jspc. (For non-Weblogic JSP compiles, see the JspC task.

Deployment Tasks [Back to top]
Task Name Description
ServerDeploy

Task to run a "hot" deployment tool for vendor-specific J2EE server.

Documentation Tasks [Back to top]
Task Name Description
Javadoc/Javadoc2

Generates code documentation using the javadoc tool. The Javadoc2 task is deprecated; use the Javadoc task instead.

EJB Tasks [Back to top]
Task Name Description
EJB Tasks

(See the documentation describing the EJB tasks.)

Execution Tasks [Back to top]
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

This task 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) VM, or in another VM 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

A task for suspending 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 [Back to top]
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

Replace is a directory-based task for replacing the occurrence of a given string with another string in selected file.

ReplaceRegExp

Directory-based task for replacing the occurrence of a given regular expression with a substitution pattern in a file or set of files.

Sync

Synchronize 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.

Java2 Extensions Tasks [Back to top]
Task Name Description
Jarlib-available

Check whether an extension is present in a FileSet or an ExtensionSet. If the extension is present, the specified property is set.

Jarlib-display

Display the "Optional Package" and "Package Specification" information contained within the specified jars.

Jarlib-manifest

Task to generate 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

Try to locate a jar to satisfy an extension, and place the location of the jar into the specified property.

Logging Tasks [Back to top]
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 [Back to top]
Task Name Description
Mail

A task to send SMTP email.

MimeMail

Deprecated. Use the Mail task instead.

Miscellaneous Tasks [Back to top]
Task Name Description
Defaultexcludes

Modify 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 [Back to top]
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

Import another build file and potentially override targets in it with targets of your own.

Include

Include 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

Define 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

Define 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 [Back to top]
Task Name Description
Available

Sets a property if a specified file, directory, class in the classpath, or JVM system resource is available at runtime.

Basename

Sets a property to the last element of a specified path.

BuildNumber

Task that can be used to track 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

Load 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

Find a class or resource.

XmlProperty

Loads property values from a well-formed XML file.

Remote Tasks [Back to top]
Task Name Description
FTP

Implements a basic FTP client that can send, receive, list, and delete files, and create directories.

Rexec

Task to automate a remote rexec session.

Scp

Copy files to or from a remote server using SSH.

setproxy

Sets Java's web proxy properties, so that tasks and code run in the same JVM can have through-the-firewall access to remote web sites.

Sshexec

Execute a command on a remote server using SSH.

Telnet

Task to automate a remote telnet session. This task uses nested <read> and <write> tags to indicate strings to wait for and specify text to send.

SCM Tasks [Back to top]
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 ccmcheckin, ccmcheckout, ccmcheckintask, ccmreconfigure, and ccmcreateTask commands.

Microsoft Visual SourceSafe

Tasks to perform the Visual SourceSafe vssget, vsslabel, vsshistory, vsscheckin, vsscheckout, vssadd, vsscp, and vsscreate commands.

Pvcs

Allows the user extract the latest edition of the source code from a PVCS repository.

SourceOffSite

Tasks to perform the SourceOffSite sosget, soslabel, soscheckin, and soscheckout commands.

Testing Tasks [Back to top]
Task Name Description
Junit

Runs tests from the Junit testing framework. This task has been tested with JUnit 3.0 up to JUnit 3.7; 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.