A Java based build tool created by the Apache Jakarta project. Ant allows you to specify a target to build and executes a series of tasks for that target, which can include compiling files, copying files, creating documentation, and so forth. Ant uses a build file written in xml, making the file easy to process and easy to read. It features a fairly extensible architecture, allowing you to define new tasks by creating new Java classes.

One of the most common FAQs on the ant-user and ant-dev mailing lists is, "Why is it called Ant?" In my brief time on these lists I have not seen a definitive answer provided. The most common one is that an ant can lift many, many times its own body weight. The explanation I prefer, however, is that in Jakarta (the actual place), there is a type of walking stick that people use, the name of which sounds to Westerners like the word 'ant'.

I have seen an occasional complaint that ant is redundant and that the Jakarta project should have stuck with make. However, for my money, Ant is far preferable to make, for the following reasons:

  • It is much more platform-independent, being based on Java
  • Since the buildfiles are based on XML, they aren't subject to the same irritating foibles as make files
  • You don't have to have a separate buildfile in every damn subdirectory
  • It took me weeks to figure out make, whereas it took me ten minutes to figure out ant.