|
- <html>
-
- <head>
- <meta http-equiv="Content-Language" content="en-us">
- <title>Running Apache Ant</title>
- </head>
-
- <body>
-
- <h1>Running Ant</h1>
- <h2><a name="commandline">Command Line</a></h2>
- <p> If you've installed Ant as described in the
- <a href="install.html"> Installing Ant</a> section,
- running Ant from the command-line is simple: just type
- <code>ant</code>.</p>
- <p>When no arguments are specified, Ant looks for a <code>build.xml</code>
- file in the current directory and, if found, uses that file as the
- build file and runs the target specified in the <code>default</code>
- attribute of the <code><project></code> tag.
- To make Ant use
- a build file other than <code>build.xml</code>, use the command-line
- option <nobr><code>-buildfile <i>file</i></code></nobr>,
- where <i>file</i> is the name of the build file you want to use.</p>
- If you use the <nobr><code>-find [<i>file</i>]</code></nobr> option,
- Ant will search for a build file first in the current directory, then in
- the parent directory, and so on, until either a build file is found or the root
- of the filesystem has been reached. By default, it will look for a build file
- called <code>build.xml</code>. To have it search for a build file other
- than <code>build.xml</code>, specify a file argument.
- <strong>Note:</strong> If you include any other flags or arguments
- on the command line after
- the <nobr><code>-find</code></nobr> flag, you must include the file argument
- for the <nobr><code>-find</code></nobr> flag, even if the name of the
- build file you want to find is <code>build.xml</code>.
-
- <p>You can also set <a href="using.html#properties">properties</a> on the
- command line. This can be done with
- the <nobr><code>-D<i>property</i>=<i>value</i></code></nobr> option,
- where <i>property</i> is the name of the property,
- and <i>value</i> is the value for that property. If you specify a
- property that is also set in the build file
- (see the <a href="CoreTasks/property.html">property</a> task),
- the value specified on the
- command line will override the value specified in the
- build file.
- Defining properties on the command line can also be used to pass in
- the value of environment variables - just pass
- <nobr><code>-DMYVAR=%MYVAR%</code></nobr> (Windows) or
- <nobr><code>-DMYVAR=$MYVAR</code></nobr> (Unix)
- to Ant. You can then access
- these variables inside your build file as <code>${MYVAR}</code>.
- You can also access environment variables using the
- <a href="CoreTasks/property.html"> property</a> task's
- <code>environment</code> attribute.
- </p>
-
- <p>Options that affect the amount of logging output by Ant are:
- <nobr><code>-quiet</code></nobr>,
- which instructs Ant to print less
- information to the console;
- <nobr><code>-verbose</code></nobr>, which causes Ant to print
- additional information to the console; and <nobr><code>-debug</code></nobr>,
- which causes Ant to print considerably more additional information.
- </p>
-
- <p>It is also possible to specify one or more targets that should be executed.
- When omitted, the target that is specified in the
- <code>default</code> attribute of the
- <a href="using.html#projects"><code>project</code></a> tag is
- used.</p>
-
- <p>The <nobr><code>-projecthelp</code></nobr> option prints out a list
- of the build file's targets. Targets that include a
- <code>description</code> attribute are listed as "Main targets",
- those without a <code>description</code> are listed as
- "Subtargets", then the "Default" target is listed.
-
- <h3><a name="options">Command-line Options Summary</a></h3>
- <pre>ant [options] [target [target2 [target3] ...]]
- Options:
- -help, -h print this message
- -projecthelp, -p print project help information
- -version print the version information and exit
- -diagnostics print information that might be helpful to
- diagnose or report problems.
- -quiet, -q be extra quiet
- -verbose, -v be extra verbose
- -debug, -d print debugging information
- -emacs, -e produce logging information without adornments
- -lib <path> specifies a path to search for jars and classes
- -logfile <file> use given file for log
- -l <file> ''
- -logger <classname> the class which is to perform logging
- -listener <classname> add an instance of class as a project listener
- -noinput do not allow interactive input
- -buildfile <file> use given buildfile
- -file <file> ''
- -f <file> ''
- -D<property>=<value> use value for given property
- -keep-going, -k execute all targets that do not depend
- on failed target(s)
- -propertyfile <name> load all properties from file with -D
- properties taking precedence
- -inputhandler <class> the class which will handle input requests
- -find <file> (s)earch for buildfile towards the root of
- -s <file> the filesystem and use it
- -nice number A niceness value for the main thread:
- 1 (lowest) to 10 (highest); 5 is the default
- </pre>
- <p>For more information about <code>-logger</code> and
- <code>-listener</code> see
- <a href="listeners.html">Loggers & Listeners</a>.
- <p>For more information about <code>-inputhandler</code> see
- <a href="inputhandler.html">InputHandler</a>.
-
- <h3><a name="libs">Library Directories</a></h3>
- <p>
- Prior to Ant 1.6, all jars in the ANT_HOME/lib would be added to the CLASSPATH
- used to run Ant. This was done in the scripts that started Ant. From Ant 1.6,
- two directories are scanned by default and more can be added as required. The
- default directories scanned are ANT_HOME/lib and a user specific directory,
- ${user.home}/.ant/lib. This arrangement allows the Ant installation to be
- shared by many users while still allowing each user to deploy additional jars.
- Such additional jars could be support jars for Ant's optional tasks or jars
- containing third-party tasks to be used in the build. It also allows the main Ant
- installation to be locked down which will please system adminstrators.
- </p>
-
- <p>
- Additional directories to be searched may be added by using the -lib option.
- The -lib option specifies a search path. Any jars or classes in the directories
- of the path will be added to Ant's classloader. The order in which jars are
- added to the classpath is as follows
- </p>
-
- <ul>
- <li>-lib jars in the order specified by the -lib elements on the command line</li>
- <li>jars from ${user.home}/.ant/lib</li>
- <li>jars from ANT_HOME/lib</li>
- </ul>
-
- <p>
- Note that the CLASSPATH environment variable is passed to Ant using a -lib
- option. Ant itself is started with a very minimalistic classpath.
- </p>
-
- <p>
- The location of ${user.home}/.ant/lib is somewhat dependent on the JVM. On Unix
- systems ${user.home} maps to the user's home directory whilst on recent
- versions of Windows it will be somewhere such as
- C:\Documents and Settings\username\.ant\lib. You should consult your
- JVM documentation for more details.
- </p>
-
- <h3>Examples</h3>
- <blockquote>
- <pre>ant</pre>
- </blockquote>
- <p>runs Ant using the <code>build.xml</code> file in the current directory, on
- the default target.</p>
- <blockquote>
- <pre>ant -buildfile test.xml</pre>
- </blockquote>
- <p>runs Ant using the <code>test.xml</code> file in the current directory, on
- the default target.</p>
- <blockquote>
- <pre>ant -buildfile test.xml dist</pre>
- </blockquote>
- <p>runs Ant using the <code>test.xml</code> file in the current directory, on
- the target called <code>dist</code>.</p>
- <blockquote>
- <pre>ant -buildfile test.xml -Dbuild=build/classes dist</pre>
- </blockquote>
- <p>runs Ant using the <code>test.xml</code> file in the current directory, on
- the target called <code>dist</code>, setting the <code>build</code> property
- to the value <code>build/classes</code>.</p>
-
- <blockquote>
- <pre>ant -lib /home/ant/extras</pre>
- </blockquote>
- <p>runs Ant picking up additional task and support jars from the
- /home/ant/extras location
- </p>
-
- <h3><a name="files">Files</a></h3>
-
- <p>The Ant wrapper script for Unix will source (read and evaluate) the
- file <code>~/.antrc</code> before it does anything. On Windows, the Ant
- wrapper batch-file invokes <code>%HOME%\antrc_pre.bat</code> at the start and
- <code>%HOME%\antrc_post.bat</code> at the end. You can use these
- files, for example, to set/unset environment variables that should only be
- visible during the execution of Ant. See the next section for examples.</p>
-
- <h3><a name="envvars">Environment Variables</a></h3>
-
- <p>The wrapper scripts use the following environment variables (if
- set):</p>
-
- <ul>
- <li><code>JAVACMD</code> - full path of the Java executable. Use this
- to invoke a different JVM than <code>JAVA_HOME/bin/java(.exe)</code>.</li>
-
- <li><code>ANT_OPTS</code> - command-line arguments that should be
- passed to the JVM. For example, you can define system properties or set
- the maximum Java heap size here.</li>
-
- <li><code>ANT_ARGS</code> - Ant command-line arguments. For example,
- set <code>ANT_ARGS</code> to point to a different logger, include a
- listener, and to include the <code>-find</code> flag.</li>
- <strong>Note:</strong> If you include <code>-find</code>
- in <code>ANT_ARGS</code>, you should include the name of the build file
- to find, even if the file is called <code>build.xml</code>.
- </ul>
-
- <h3><a name="sysprops">Java System Properties</a></h3>
- <p>Some of Ants core classes ant tasks can be configured via system properties.</p>
- <p>So here the result of a search through the codebase. Because system properties are
- available via Project instance, I searched for them with a
- <pre>
- grep -r -n "getPropert" * > ..\grep.txt
- </pre>
- command. After that I filtered out the often-used but not-so-important values (most of them
- read-only values): <i>path.separator, ant.home, basedir, user.dir, os.name, ant.file,
- line.separator, java.home, java.version, java.version, user.home, java.class.path</i><br>
- And I filtered out the <i>getPropertyHelper</i> access.</p>
- <table border="1">
- <tr>
- <th>property name</th>
- <th>valid values /default value</th>
- <th>description</th>
- </tr>
- <tr>
- <td><code>ant.executor.class</code></td>
- <td>classname; default is org.apache.tools.ant.helper.DefaultExecutor</td>
- <td><b>Since Ant 1.6.3</b> Ant will delegate Target invocation to the
- org.apache.tools.ant.Executor implementation specified here.
- </td>
- </tr>
- <tr>
- <td><code>ant.input.properties</code></td>
- <td>filename (required)</td>
- <td>Name of the file holding the values for the
- <a href="inputhandler.html">PropertyFileInputHandler</a>.
- </td>
- </tr>
- <tr>
- <td><code>ant.logger.defaults</code></td>
- <!-- add the blank after the slash, so the browser can do a line break -->
- <td>filename (optional, default '/org/ apache/ tools/ ant/ listener/ defaults.properties')</td>
- <td>Name of the file holding the color mappings for the
- <a href="listeners.html#AnsiColorLogger">AnsiColorLogger</a>.
- </td>
- </tr>
- <tr>
- <td><code>ant.netrexxc.*</code></td>
- <td>several formats</td>
- <td>Use specified values as defaults for <a href="OptionalTasks/netrexxc.html">netrexxc</a>.
- </td>
- </tr>
- <tr>
- <td><code>ant.PropertyHelper</code></td>
- <td>ant-reference-name (optional)</td>
- <td>Specify the PropertyHelper to use. The object must be of the type
- org.apache.tools.ant.PropertyHelper. If not defined an object of
- org.apache.tools.ant.PropertyHelper will be used as PropertyHelper.
- </td>
- </tr>
- <tr>
- <td><code>ant.regexp.regexpimpl</code></td>
- <td>classname</td>
- <td>classname for a RegExp implementation; if not set Ant tries to
- find another (Jdk14, Oro...);
- <a href="CoreTypes/mapper.html#regexp-mapper">RegExp-Mapper</a>
- "Choice of regular expression implementation"
- </td>
- </tr>
- <tr>
- <td><code>ant.reuse.loader</code></td>
- <td>boolean</td>
- <td>allow to reuse classloaders
- used in org.apache.tools.ant.util.ClasspathUtil
- </td>
- </tr>
- <tr>
- <td><code>ant.XmlLogger.stylesheet.uri</code></td>
- <td>filename (default 'log.xsl')</td>
- <td>Name for the stylesheet to include in the logfile by
- <a href="listeners.html#XmlLogger">XmlLogger</a>.
- </td>
- </tr>
- <tr>
- <td><code>build.compiler</code></td>
- <td>name</td>
- <td>Specify the default compiler to use.
- see <a href="CoreTasks/javac.html">javac</a>,
- <a href="OptionalTasks/ejb.html#ejbjar_weblogic">EJB Tasks</a>
- (compiler attribute),
- <a href="OptionalTasks/icontract.html">IContract</a>,
- <a href="OptionalTasks/javah.html">javah</a>
- </td>
- </tr>
- <tr>
- <td><code>build.compiler.emacs</code></td>
- <td>boolean (default false)</td>
- <td>Enable emacs-compatible error messages.
- see <a href="CoreTasks/javac.html">javac</a> "Jikes Notes"
- </td>
- </tr>
- <tr>
- <td><code>build.compiler.fulldepend</code></td>
- <td>boolean (default false)</td>
- <td>Enable full dependency checking
- see <a href="CoreTasks/javac.html">javac</a> "Jikes Notes"
- </td>
- </tr>
- <tr>
- <td><code>build.compiler.jvc.extensions</code></td>
- <td>boolean (default true)</td>
- <td>enable Microsoft extensions of their java compiler
- see <a href="CoreTasks/javac.html">javac</a> "Jvc Notes"
- </td>
- </tr>
- <tr>
- <td><code>build.compiler.pedantic</code></td>
- <td>boolean (default false)</td>
- <td>Enable pedantic warnings.
- see <a href="CoreTasks/javac.html">javac</a> "Jikes Notes"
- </td>
- </tr>
- <tr>
- <td><code>build.compiler.warnings</code></td>
- <td>Deprecated flag</td>
- <td> see <a href="CoreTasks/javac.html">javac</a> "Jikes Notes" </td>
- </tr>
- <tr>
- <td><code>build.rmic</code></td>
- <td>name</td>
- <td>control the <a href="CoreTasks/rmic.html">rmic</a> compiler </td>
- </tr>
- <tr>
- <td><code>build.sysclasspath</code></td>
- <td>"only", something else</td>
- <td>only: current threads get the actual class loader
- (AntClassLoader.setThreadContextLoader()).
- else: use core loader as default (ComponentHelper.initTasks()). Disable
- changing the classloader (oata.taskdefs.Classloader.execute() experimental
- task).
- <!-- somewhere documented in the manual?? -->
- </td>
- </tr>
- <tr>
- <td><code>file.encoding</code></td>
- <td>name of a supported character set (e.g. UTF-8, ISO-8859-1, US-ASCII)</td>
- <td>use as default character set of email messages; use as default for source-, dest- and bundleencoding
- in <a href="OptionalTasks/translate.html">translate</a> <br>
- see JavaDoc of <a target="_blank" href="http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/Charset.html">java.nio.charset.Charset</a>
- for more information about character sets (not used in Ant, but has nice docs).
- </td>
- </tr>
- <tr>
- <td><code>jikes.class.path</code></td>
- <td>path</td>
- <td>The specified path is added to the classpath if jikes is used as compiler.</td>
- </tr>
- <tr>
- <td><code>MailLogger.properties.file, MailLogger.*</code></td>
- <td>filename (optional, defaults derived from Project instance)</td>
- <td>Name of the file holding properties for sending emails by the
- <a href="listeners.html#MailLogger">MailLogger</a>. Override properties set
- inside the buildfile or via command line.
- </td>
- </tr>
- <tr>
- <td><code>org.apache.tools.ant.ProjectHelper</code></td>
- <!-- add the blank after the slash, so the browser can do a line break -->
- <td>classname (optional, default 'org. apache. tools. ant. ProjectHelper')</td>
- <td>specifies the classname to use as ProjectHelper. The class must extend
- org.apache.tools.ant.ProjectHelper.
- </td>
- </tr>
- <tr>
- <td><code>p4.port, p4.client, p4.user</code></td>
- <td>several formats</td>
- <td>Specify defaults for port-, client- and user-setting of the
- <a href="OptionalTasks/perforce.html">perforce</a> tasks.
- </td>
- </tr>
- <tr>
- <td><code>websphere.home
- <td>path</td>
- <td>Points to home directory of websphere.
- see <a href="OptionalTasks/ejb.html#ejbjar_websphere">EJB Tasks</a>
- </td>
- </tr>
- <tr>
- <td><code>XmlLogger.file
- <td>filename (default 'log.xml')</td>
- <td>Name for the logfile for <a href="listeners.html#MailLogger">MailLogger</a>.
- </td>
- </tr>
- </table>
-
- <h2><a name="cygwin">Cygwin Users</a></h2>
- <p>The Unix launch script that come with Ant works correctly with Cygwin. You
- should not have any problems launching Ant form the Cygwin shell. It is important
- to note however, that once Ant is runing it is part of the JDK which operates as
- a native Windows application. The JDK is not a Cygwin executable, and it therefore
- has no knowledge of the Cygwin paths, etc. In particular when using the <exec>
- task, executable names such as "/bin/sh" will not work, even though these
- work from the Cygwin shell from which Ant was launched. You can use an executable
- name such as "sh" and rely on that command being available in the Windows
- path.
- </p>
-
- <h2><a name="os2">OS/2 Users</a></h2>
- <p>The OS/2 lanuch script was developed so as it can perform complex task. It has two parts:
- <code>ant.cmd</code> which calls Ant and <code>antenv.cmd</code> which sets environment for Ant.
- Most often you will just call <code>ant.cmd</code> using the same command line options as described
- above. The behaviour can be modified by a number of ways explained below.</p>
-
- <p>Script <code>ant.cmd</code> first verifies whether the Ant environment is set correctly. The
- requirements are:</p>
- <ol>
- <li>Environment variable <code>JAVA_HOME</code> is set.</li>
- <li>Environment variable <code>ANT_HOME</code> is set.</li>
- <li>environment variable <code>CLASSPATH</code> is set and contains at least one element from
- <code>JAVA_HOME</code> and at least one element from <code>ANT_HOME</code>.</li>
- </ol>
-
- <p>If any of these conditions is violated, script <code>antenv.cmd</code> is called. This script
- first invokes configuration scripts if there exist: the system-wide configuration
- <code>antconf.cmd</code> from the <code>%ETC%</code> directory and then the user comfiguration
- <code>antrc.cmd</code> from the <code>%HOME%</code> directory. At this moment both
- <code>JAVA_HOME</code> and <code>ANT_HOME</code> must be defined because <code>antenv.cmd</code>
- now adds <code>classes.zip</code> or <code>tools.jar</code> (depending on version of JVM) and
- everything from <code>%ANT_HOME%\lib</code> except <code>ant-*.jar</code> to
- <code>CLASSPATH</code>. Finally <code>ant.cmd</code> calls per-directory configuration
- <code>antrc.cmd</code>. All settings made by <code>ant.cmd</code> are local and are undone when the
- script ends. The settings made by <code>antenv.cmd</code> are persistent during the lifetime of the
- shell (of course unless called automaticaly from <code>ant.cmd</code>). It is thus possible to call
- <code>antenv.cmd</code> manually and modify some settings before calling <code>ant.cmd</code>.</p>
-
- <p>Scripts <code>envset.cmd</code> and <code>runrc.cmd</code> perform auxilliary tasks. All scripts
- have some documentation inside.</p>
-
- <h2><a name="viajava">Running Ant via Java</a></h2>
- <p>If you have installed Ant in the do-it-yourself way, Ant can be started
- with two entry points:</p>
- <blockquote>
- <pre>java -Dant.home=c:\ant org.apache.tools.ant.Main [options] [target]</pre>
- </blockquote>
-
- <blockquote>
- <pre>java -Dant.home=c:\ant org.apache.tools.ant.launch.Launcher [options] [target]</pre>
- </blockquote>
-
- <p>
- The first method runs Ant's traditional entry point. The second method uses
- the Ant Launcher introduced in Ant 1.6. The former method does not support
- the -lib option and all required classes are loaded from the CLASSPATH. You must
- ensure that all required jars are available. At a minimum the CLASSPATH should
- include:
- </p>
-
- <ul>
- <li><code>ant.jar</code> and <code>ant-launcher.jar</code></li>
- <li>jars/classes for your XML parser</li>
- <li>the JDK's required jar/zip files</li>
- </ul>
-
- <p>
- The latter method supports the -lib option and will load jars from the
- specified ANT_HOME. You should start the latter with the most minimal
- classpath possible, generally just the ant-launcher.jar.
- </p>
-
- <br>
- <hr>
- <p align="center">Copyright © 2000-2004 The Apache Software Foundation. All rights
- Reserved.</p>
-
- </body>
- </html>
|