|
- <html>
-
- <head>
- <meta http-equiv="Content-Language" content="en-us">
- <title>Ant User Manual</title>
- </head>
-
- <body>
- <h1><a name="introduction">Introduction</a></h1>
- <p>Ant is a Java-based build tool. In theory, it is kind of like
- <i>make</i>, without <i>make</i>'s wrinkles.</p>
- <h3>Why?</h3>
- <p>Why another build tool when there is already
- <i>make</i>,
- <i>gnumake</i>,
- <i>nmake</i>,
- <i>jam</i>,
- and
- others? Because all those tools have limitations that Ant's original author
- couldn't live with when developing software across multiple platforms.
- Make-like
- tools are inherently shell-based: they evaluate a set of dependencies,
- then execute commands not unlike what you would issue on a shell.
- This means that you
- can easily extend these tools by using or writing any program for the OS that
- you are working on; however, this also means that you limit yourself to the OS,
- or at least the OS type, such as Unix, that you are working on.</p>
- <p>Makefiles are inherently evil as well. Anybody who has worked on them for any
- time has run into the dreaded tab problem. "Is my command not executing
- because I have a space in front of my tab?!!" said the original author of
- Ant way too many times. Tools like Jam took care of this to a great degree, but
- still have yet another format to use and remember.</p>
- <p>Ant is different. Instead of a model where it is extended with shell-based
- commands, Ant is extended using Java classes. Instead of writing shell commands,
- the configuration files are XML-based, calling out a target tree where various
- tasks get executed. Each task is run by an object that implements a particular
- Task interface.</p>
- <p>Granted, this removes some of the expressive power that is inherent in being
- able to construct a shell command such as
- <nobr><code>`find . -name foo -exec rm {}`</code></nobr>, but it
- gives you the ability to be cross-platform - to work anywhere and
- everywhere. And
- hey, if you really need to execute a shell command, Ant has an
- <exec> task that
- allows different commands to be executed based on the OS it is executing
- on.</p>
-
- <hr>
- <p align="center">Copyright © 2000,2001 Apache Software Foundation. All rights
- Reserved.</p>
-
- </body>
- </html>
|