<?xml version="1.0"?>
<document>

  <properties>
    <author email="bodewig@apache.org">Stefan Bodewig</author>
    <title>External Tools and Tasks</title>
  </properties>

  <body>
    
    <section name="External Tools and Tasks">

      <p>This page lists external resources for Apache Ant: tasks, IDE
      integration tools, loggers, you name it. If you've written
      something that should be included, please post all relevant
      information to one of the mailing lists.</p>

      <p>Nothing listed here is directly supported by the Ant
      developers, if you encounter any problems with them, please use
      the contact information.</p>

    </section>

    <section name="Tasks">
      <subsection name="AJC">

        <p><a href="http://aspectj.org">AspectJ</a> is an
          aspect-oriented extension to Java.  This task compiles a
          source tree using the AspectJ compiler -- AJC.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.3</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://aspectj.org/dl">http://aspectj.org/dl</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:support@aspectj.org">support@aspectj.org</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Anakia">

        <p>Actually, Anakia is more than just an Ant task, it is a an
        XML transformation tool based on JDOM, Velocity and Ant.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.2 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://jakarta.apache.org/velocity/anakia.html">http://jakarta.apache.org/velocity/anakia.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://jakarta.apache.org/site/mail2.html">Velocity mailing lists</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Checkstyle">

        <p>Checkstyle is a development tool to help programmers write
        Java code that adheres to a coding standard. Its purpose is to
        automate the process of checking Java code, and to spare
        humans of this boring (but important) task.</p>

        <p>Checkstyle can be run via an Ant task or a command line
        utility.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.2 to 1.4.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://checkstyle.sourceforge.net/">http://checkstyle.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:checkstyle@puppycrawl.com">Oliver Burn</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Starting with release 2.0 the license is the GNU
            Lesser General Public License.  Prior releases were under
            the GNU General Public License.</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Configure">

        <p>Recursive build support (call ant on every package level,
        and only build files in that package or in that package and
        everything below) with seperation of source and output.</p>
        
        <p>The task generates build files in any subdirectory (except
        for CVS-directories) for you. Only place one build.xml file in
        the top and call target &apos;setup&apos; or
        &apos;rescan&apos;.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.2 and 1.3</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.dsdelft.nl/~lemval/ant/">http://www.dsdelft.nl/~lemval/ant/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:lemval@dsdelft.nl">M.J.P. van Leeuwen</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>License derived from Apache Software License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Doxygen task">
        <p>Ant task for running the Doxygen documentation system.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.1 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.bgw.org/projects/java/ant/">http://www.bgw.org/projects/java/ant/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:mortis@voicenet.com">Kyle R. Burton</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software Foundation License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="GenJar">
        <p>Builds a JAR file based on class dependencies rather than simply the contents of a directory</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 alpha (built after 2001/08/04) and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.riggshill.com/projects/genjar/">http://www.riggshill.com/projects/genjar/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:jake@riggshill.com">John Kohler</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software Foundation License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Importscrubber">
        <p>Removes unnecessary import statements from a Java source code file.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.3</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://importscrubber.sourceforge.net/">http://importscrubber.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:tomcopeland@users.sourceforge.net">Tom Copeland</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>LGPL</td>
          </tr>
        </table>
      </subsection>

      <subsection name="IsDirValidator">

        <p>Checks whether a given directory structure conforms to
        certain rules that are defined via nested elements of the
        task.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://isvalidator.sourceforge.net/en/isDirValidator.htm">http://isvalidator.sourceforge.net/en/isDirValidator.htm</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:news@inigoserrano.com">I&#xF1;igo Serrano</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Javamake">

        <p>A task to compile Java sources and manage class file
        dependencies. Functionality is equivalent to that of standard
        Javac and Depend tasks combined, with improved dependency
        checking.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.experimentalstuff.com/Technologies/JavaMake/index.html">http://www.experimentalstuff.com/Technologies/JavaMake/index.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:Mikhail.Dmitriev@eng.sun.com">Mikhail Dmitriev</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>BSD-like License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="J2ME Ant Tasks">

        <p>There are two different sets of tasks to help build <a
        href="http://java.sun.com/j2me/">Java 2 Platform, Micro
        Edition</a> (J2ME) applications.</p>
        
        <p>This set supports CLDC and the K Virtual Machine (KVM):</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.3</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.dribin.org/dave/j2me_ant/">http://www.dribin.org/dave/j2me_ant/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:drib@enteract.com">Dave Dribin</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License</td>
          </tr>
        </table>

        <p>And this set works with the J2ME Wireless Toolkit and MIDP
        for PalmOS:</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.3</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.stampysoft.com/ant/">http://www.stampysoft.com/ant/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:jeckels@stampysoft.com">Josh Eckels</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>MIT License</td>
          </tr>
        </table>

      </subsection>

      <subsection name="javarec">

        <p>Ant tasks that generate record classes for VisualAge for
        Java from Cobol copy books.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://glezen.org/javarec/">http://glezen.org/javarec/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:pglezen@us.ibm.com">Paul Glezen</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Styler">

        <p>The styler task makes useful combinations of XSLT transformations
        easy to specify in an Ant build file. Like the built-in Ant task
        style, styler can apply a single transformation to a set of XML files.
        But it can also:</p>
        <ul>
          <li>handle multiple transformations, in parallel or pipelined.</li>
          <li>enable transformations that split or merge files</li>
          <li>process non-XML files, especially HTML (based on JTidy)</li>
          <li>apply non-XSLT transformation, especially "regular
          fragmentations"</li>
          <li>use any custom XMLReader or XMLFilter class to handle new file
          formats and transformation techniques.</li>
        </ul>
        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.langdale.com.au/styler/">http://www.langdale.com.au/styler/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:adv@langdale.com.au">Arnold deVos</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>LGPL</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Tidy Imports (Tim)">

        <p>Tim is a handy utility that can be executed on the command
        line or via Ant that automatically formats your import
        declarations. Tim is capable of removing unused imports,
        expanding or collapsing imports and even organising them into
        pre-determined groups.</p>
        
        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.3 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.chive.com/tim.htm">http://www.chive.com/tim.htm</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:support@chive.com">support@chive.com</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial</td>
          </tr>
        </table>
      </subsection>

      <subsection name="TiniAnt">

        <p>TiniAnt is an Ant task to support building applications for
        the <a href="http://www.ibutton.com/TINI/">TINI</a>.</p>
        
        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.2 to 1.4.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://tiniant.sourceforge.net/">http://tiniant.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:kelly@ad1440.net">Sean Kelly</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>BSD-like license</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Venus Application Publisher's (Vamp) Ant Task Suite">

        <p>Venus Application Publisher's (Vamp) Ant Task Suite allows
        you to sign and package your applications into relocatable Web
        Archives that you can drop into your web server for
        single-click launching using Java Web Start or into single
        Java Archive installers that serve up their content through a
        built-in, multi-threaded, ultra light-weight web server.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.2 and 1.3</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.geocities.com/vamp201/ant.html">http://www.geocities.com/vamp201/ant.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:vamp201@yahoo.com">Gerald Bauer</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>
      
      <subsection name="XDoclet">

        <p>XDoclet is an extended Javadoc Doclet engine for use in Ant.
           It lets you create custom Javadoc @tags and based on those tags 
           generates source code or other files (such as xml-ish deployment 
           descriptors). Templates and matching tasks are provided to generate
           EJB and web application deployment descriptors.
           </p>
        
        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://sourceforge.net/projects/xdoclet/">http://sourceforge.net/projects/xdoclet/</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>BSD license</td>
          </tr>
        </table>
      </subsection>

    </section>

    <section name="Compiler Implementations">
      <subsection name="miniRMI &lt;code&gt;&amp;lt;rmic&amp;gt;&lt;/code&gt; implementation">

        <p>miniRMI is a freeware opensource library that serves as a
        lightweight replacement for the original java.rmi packages and
        is suitable especially for applets. Ant 1.4+
        <code>&lt;rmic&gt;</code> adapter included.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://dione.zcu.cz/~toman40/miniRMI/">http://dione.zcu.cz/~toman40/miniRMI/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:Petr.Toman@pinknet.cz">Petr Toman</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Gnu Lesser Public License</td>
          </tr>
        </table>

      </subsection>
    </section>

    <section name="IDE and Editor Integration">

      <subsection name="AntFarm">

        <p>A plugin that integrates Ant into the jEdit editor.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>bundles Ant 1.3</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://plugins.jedit.org/plugins/AntFarm">http://plugins.jedit.org/plugins/AntFarm</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:jedit-devel@lists.sourceforge.net">jEdit developers mailinglist</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="AntMan">

        <p>An AddIn that integrates Ant with the JDeveloper IDE</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.erudra.com/antman/index.html">http://www.erudra.com/antman/index.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:ashok@erudra.com">Ashok Sridhar</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="AntRunner">

        <p>An OpenTool that integrates Ant into the JBuilder IDE.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.2 and 1.3</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.dieter-bogdoll.de/java/AntRunner/">http://www.dieter-bogdoll.de/java/AntRunner/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:bogdoll@users.sourceforge.net">Dieter Bogdoll</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="AntWork">

        <p>A plugin that integrates Ant into the Jext editor.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.2 and 1.3</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="ftp://jext.sourceforge.net/pub/jext/plugins/AntWork.zip">ftp://jext.sourceforge.net/pub/jext/plugins/AntWork.zip</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:KHartlage@t-online.de">Klaus Hartlage</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="IntelliJ IDEA 2.0">

        <p>Java IDE with refactoring support and Ant integration.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>bundles Ant 1.3</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.intellij.com/idea/">http://www.intellij.com/idea/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:support@intellij.com">support@intellij.com</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JDE(E) 2.2.8">

        <p>The Java Development Environment for Emacs (JDEE) supports
        Apache Ant as one of three built-in ways to build your
        applications.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.2 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://jde.sunsite.dk/">http://jde.sunsite.dk/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:jde-subscribe@sunsite.auc.dk">JDEE Mailing list.</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="NetBeans / Forte for Java">

        <p>A module that integrates Ant into the NetBeans or Forte for Java IDEs.</p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>bundles Ant 1.4.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://ant.netbeans.org/">http://ant.netbeans.org/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:nbdev@netbeans.org">nbdev@netbeans.org</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Sun Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="HP RadPak">

        <p>
        RadPak comes with the (free) HP Bluestone HPAS J2EE server, and is primarily 
        a GUI tool for packaging and deploying java web and EJB applications
        as WAR and EAR files. The tool is ant based, and can be used with
        as a GUI for general ant development, providing form based entry 
        of task attributes, and an animated display of task
        execution. 
        </p>

        <table>
          <tr>
            <th>Compatibility:</th>
            <td>bundles Ant 1.3 and docs; adds a jar of extra tasks
            to any existing ant installation under ANT_HOME</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.bluestone.com/products/hp-as/">http://www.bluestone.com/products/hp-as/</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Proprietary but free to download</td>
          </tr>
        </table>
      </subsection>
    </section>
    
  </body>
</document>
