README file for the jakarta-ant workspace
-----------------------------------------------------------------
$Id$
=================================================================

This is the workspace for Ant, a Java based build tool.

TODO List:

  * Improve documentation of how to use ant, how tasks are
    constructed, etc. 

  * 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.

  * CVS task to checkout a cvs tree from a particular server into a
    given location. 

  * Javadoc task -- ability to dance between 1.1 and 1.2 javadoc as
    well as using other doclets like cocoons? 

  * 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.

