TODO List:

  * write a target rule that reacts on class presence or more generally, a way
    to apply environment conditions that must be met in order for a target to 
    be executed. This is _vital_ for highly componentized systems where
    non-core parts of the software may be skipped if the required classes
    are not present in the build classpath.

  * Improve error reporting on BuildException catches. Error should
    state which task and which target was active at the time the
    BuildException was popped.

  * Improve error reporting on XML parse. Currently if the build.xml
    file is malformed we get some sort of odd SAX exception that could
    be better put.

  * Provide an AbstractFileCompareTask class with prebuilt "srcfile"
    and "destfile" setter methods and whose execute method calls a
    "updateNeeded" method.

  * Transform task -- XSLT 

  * Output logs in XML -- this would be a global option of the project
    (log location, verboseness, etc)

  * Javac improvements -- support the "modern" 1.3 compiler

  * Investigate some sort of command line "execute an instance of a
    task with these parameters" entry point. Maybe a
    `org.apache.ant.TaskMain task org.foo.BarTask attrib1=foo
    attrib2=bar` type entry point?

  * Investigate some sort of "touch" functionality. Not sure how this
    could be done in a portable way -- maybe append 0 bytes to a file
    as a quick hack?

  * GUI front end -- examine tasks, add task properties, etc. Also,
    one button push build of a particular target.

  * Test harness. All software projects should have an automatable
    test suite. Ant is no exception to this rule.

