
                                A N T I D O T E
 
  What is it? 
  -----------
  
  Antidote is the Java based GUI interface to the Ant build tool.

  Status
  ------
  
  Antidote is in the early stages of development. Its usefulnes is limited, and
  will not be distributed with the binary versions of Ant until it is deemed
  featureful and robust enough for end user use. That being said, it currently
  will load an Ant build.xml file, allow you to edit some of the file's
  properties, save it, and launch a build starting at any target in the
  project. 

  The Latest Version
  ------------------

  The latest version is the current CVS version, which may or may not be useful
  at any given time. The source code is not being base-lined at any specific
  version at this time.

  Documentation
  -------------

  Any documentation that exists for Antidote can be found in the antidote/docs
  directory. Documentation is primarily developement based documentation as
  Antidote is not yet mature enough for reliable user documentation.

  Building
  --------

  Antidote requres JAXP 1.0.1 from Sun (http://java.sun.com/xml). Some time in
  the future it is hoped at any w3c based XML will be usable, but at the 
  current time the Sun library is needed. The easiest way to install the
  jaxp.jar and parsers.jar file that comes with the distribution is to copy 
  them into your $JAVA_HOME/jre/lib/ext directory.

  There is a build.xml file in the same directory as this file that will work
  with Ant 1.2. It is recommended that Ant be built first (from ../..), 
  followed by this directory. By default, the compiled classes will be written
  to ~/built/antidote/classes, but the JAR file and launch scripts are written
  to the Ant build directory (~/build/ant).

  Running
  -------

  Antidote requires at least Java 1.2 to run. 

  Upon successful building of Ant and Antidote (in that order), go to
  ~/build/ant/bin and run "antidote". You will probably have to set the
  environment variable "ANT_HOME" to "~/build/ant" in the shell that you launch
  antidote from. If desired, you can provide the build file to launch at statup
  as the first argument on the command line to "antidote".

  Licensing
  ---------

  This software is licensed under the terms you may find in the file 
  named "LICENSE" provided with this distribution.

  Thanks for using Antidote.

                                          The Apache Jakarta Project
                                         <http://jakarta.apache.org/>
