| <?xml version="1.0"?> |
| <document> |
| |
| <properties> |
| <author email="conor@cortexebusiness.com.au">Conor MacNeill</author> |
| <title>Ant</title> |
| </properties> |
| |
| <body> |
| |
| <section name="Ant"> |
| |
| <p> |
| Ant is a Java based build tool. In theory it is kind of like make without |
| make's wrinkles. |
| </p> |
| |
| <p> |
| Why another build tool when there is already make, gnumake, nmake, jam, and |
| others? Because all of 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 and 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 use yet another format to use and remember. |
| </p> |
| |
| <p> |
| Ant is different. Instead of a model where it is extended with shell based |
| commands, it 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 which implements a particular |
| Task interface. |
| </p> |
| |
| <p> |
| Granted, this removes some of the expressive power that is inherent by being |
| able to construct a shell command such as `find . -name foo -exec rm {}` 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 rule that |
| allows different commands to be executed based on the OS that it is executing |
| on. |
| </p> |
| |
| </section> |
| |
| <section name="Documentation"> |
| |
| <p> |
| You can view the documentation for the most recent release |
| <a href="jakarta-ant/docs/">online</a> |
| </p> |
| |
| <p> |
| Comprehensive documentation is included in the source and binary distribtions. |
| </p> |
| |
| </section> |
| |
| <section name="Latest Release"> |
| <p> |
| You can download the latest release: |
| </p> |
| <ul> |
| <li><a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.2/bin/"> |
| Download the binary release</a></li> |
| <li><a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.2/src/"> |
| Download the source release</a></li> |
| <li><a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.2/rpms/"> |
| Download source and binary RPMs</a></li> |
| </ul> |
| </section> |
| |
| <section name="Nightly Builds"> |
| <p> |
| If you wish to use the latest Ant features, you can try downloading a nightly |
| build from <a href="http://jakarta.apache.org/builds/jakarta-ant/nightly/">here</a> |
| </p> |
| |
| </section> |
| |
| <section name="Get Involved"> |
| <ul> |
| <li><a href="http://jakarta.apache.org/getinvolved/getinvolvedindex.html">Get Involved</a></li> |
| <li><a href="http://jakarta.apache.org/getinvolved/mail.html">Join Mailing Lists</a></li> |
| <li><a href="http://marc.theaimsgroup.com/?l=ant-dev&r=1&w=2"> |
| Search the Dev Mailing List</a> |
| </li> |
| <li><a href="http://marc.theaimsgroup.com/?l=ant-user&r=1&w=2"> |
| Search the User Mailing List</a> |
| </li> |
| <li><a href="/jyve-faq/Turbine/screen/DisplayTopics/action/SetAll/project_id/2/faq_id/16"> |
| FAQ</a> |
| </li> |
| </ul> |
| |
| |
| |
| </section> |
| |
| </body> |
| </document> |
| |