Echoes a message to the current loggers and listeners which means System.out unless overridden. A level can be specified, which controls at what logging level the message is filtered at.

The task can also echo to a file, in which case the option to append rather than overwrite the file is available, and the level option is ignored


Attribute Description Required
message the message to echo. No; defaults to a blank line unless text is included in a character section within this element
file the file to write the message to. No; only one of these may be used
output the Resource to write the message to (see note). Since Apache Ant 1.8
append Append to an existing file (or open a new file / overwrite an existing file)? No; ignored unless output indicates a filesystem destination, default is false
level Control the level at which this message is reported. One of error, warning, info, verbose, debug (decreasing order) No; default is warning
encoding encoding to use. since Ant 1.7 No; defaults to default JVM character encoding
force Overwrite read-only destination files. since Ant 1.8.2 No; defaults to false


Basic use:

<echo message="Hello, world"/>
<echo message="Embed a line break:${line.separator}"/>
<echo>Embed another:${line.separator}</echo>
<echo>This is a longer message stretching over
two lines.

The newline immediately following the <echo> tag is part of the output. Newlines in character data within the content of an element are not discarded by XML parsers.
See W3C Recommendation 26 November 2008 / End of Line handling for more details.

This is a longer message stretching over
three lines; the first line is a blank

A message which only appears in -debug mode.

<echo message="Deleting drive C:" level="debug"/>

A message which appears even in -quiet mode.

<echo level="error">
Imminent failure in the antimatter containment facility.
Please withdraw to safe location at least 50km away.

Generate a shell script by echoing to a file. Note the use of a double $ symbol to stop Ant filtering out the single $ during variable expansion.

<echo file="runner.csh" append="false">#\!/bin/tcsh
java-1.3.1 -mx1024m ${project.entrypoint} $$*

Depending on the log level Ant runs at, messages are print out or silently ignored:

Ant command line -quiet, -q no switch -verbose, -v -debug, -d
<echo message="This is error message." level="error"/>
ok ok ok ok
<echo message="This is warning message."/>
ok ok ok ok
<echo message="This is warning message." level="warning"/>
ok ok ok ok
<echo message="This is info message." level="info"/>
not logged ok ok ok
<echo message="This is verbose message." level="verbose"/>
not logged not logged ok ok
<echo message="This is debug message." level="debug"/>
not logged not logged not logged ok