<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<document>

  <properties>
    <title>External Tools and Tasks</title>
    <!-- Last link check: 2009-03-06 -->
  </properties>

  <body>

    <section name="External Tools and Tasks">

      <p>This page lists external resources for Apache Ant: <a
      href="#Tasks">Tasks</a>, <a
      href="#Compiler%20Implementations">Compiler Implementations</a>,
      <a href="#IDE%20and%20Editor%20Integration">IDE integration
      tools</a>, <a href="#Source%20Control%20ystems">Source Control
      Systems</a>, <a href="#Loggers">Loggers</a>, you name it. If you've written
      something that should be included, please post all relevant
      information to one of the mailing lists.  For details, see the
      <a href="faq.html#adding-external-tasks">FAQ</a>.</p>

      <p>Nothing listed here is directly supported by the Ant
      developers (therefore '<i>external</i> tools and tasks'),
      if you encounter any problems with them, please use
      the contact information.</p>

    </section>

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

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

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.3</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.eclipse.org/aspectj/">http://www.eclipse.org/aspectj/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www.eclipse.org/aspectj/">project mailing lists</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Eclipse Public 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 class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.2 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://velocity.apache.org/anakia/devel/">http://velocity.apache.org/anakia/devel/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://velocity.apache.org/contact.html">Velocity mailing lists</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Andariel">

        <p>Andariel is a set of tasks designed to help the generation of HTML
        (and other markup languages) pages from Ant. Includes a XPath processor,
        an image information retriever, and others.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5.4 and newer</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://andariel.uworks.net/">http://andariel.uworks.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>josep DOT rio AT uworks DOT net</td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="ant4eclipse">

        <p>ant4eclipse provides a set of Ant tasks to make several
                configurations from the Eclipse IDE available in Ant
                buildscripts. The tasks are aimed to avoid redundancy between
                Eclipse and Ant configurations in order to build small but
                powerful build systems for the continuous integration
                process</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6.1 and higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://ant4eclipse.sf.net">http://ant4eclipse.sf.net</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://sourceforge.net/mail/?group_id=137377">
              ant4eclipse user mailing list</a>
            </td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Sun Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Antcount">
        <p>Antcount is a set of filters that can be used to gather statistics
           from files or resources. It is mainly used for log files analysis.
           It allows to:<ul>
             <li>count inputs (lines, strings)</li>
             <li>count occurrences of each input</li>
             <li>calculate average, max and min values of floats in input</li>
           </ul>
           Antcount also includes some useful filters to:<ul>
             <li>stop filtering: read everything but write nothing</li>
             <li>echo input to the console or to a file. This allows users to create
                 several files at once</li>
             <li>split the stream in two for parallel processing</li>
           </ul>
        </p>
        <table class="externals">
        <tr>
          <th>Compatibility:</th>
          <td>Ant 1.6.2 and higher</td>
        </tr>
        <tr>
          <th>URL:</th>
          <td><a href="http://antcount.sourceforge.net/">http://antcount.sourceforge.net/</a></td>
        </tr>
        <tr>
          <th>Contact:</th>
          <td><a href="http://antcount.sourceforge.net/contacts.html">Patrick Martin</a></td>
        </tr>
        <tr>
          <th>License:</th>
          <td>LGPL</td>
        </tr>
      </table>
    </subsection>

      <subsection name="AntDoc">

        <p>AntDoc is a tool that generates HTML documentation from Ant
        buildfiles; the generated HTML is inspired from what javadoc
        yields.  AntDocGUI offers a simple Ant target launcher named
        AntDoc GUI. Ant targets may be launched from the generated
        AntDoc HTML pages. Integration to various IDEs is in
        progress.</p>

        <p>AntDoc can be run via an Ant task, AntDoc GUI can be run
        via an Ant task, or via a JVM launch.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4.1 and higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://antdoc.free.fr/">http://antdoc.free.fr/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>Edouard Mercier</td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="AntDoclet">

        <p>AntDoclet is a tool to automatically generate documentation out of
        your Ant Tasks' source code.</p>

        <p>It is implemented as a Javadoc doclet, and generates reference
        documentation and other deliverables from the source code of your
        custom Ant Tasks/Types.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6+ (not tested on earlier versions)</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://antdoclet.neuroning.com/">http://antdoclet.neuroning.com/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://neuroning.com/">Fernando Dobladez</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GPL</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Anteater">

        <p>Anteater is a set of Ant tasks for the functional testing of websites
          and web services (functional testing being; hit a URL and ensure the
          response meets certain criteria). Can test HTTP params, response
          codes, XPath, regexp and Relax NG expressions. Includes HTML reporting
          (based on junitreport) and a hierarchical grouping system for quickly
          configuring large test scripts.
        </p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://aft.sourceforge.net/">http://aft.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://lists.sourceforge.net/lists/listinfo/aft-devel">developer
                mailing list</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="AntForm">

        <p>Provides a java/swing form-based input scheme for
        configuring ant properties and launching ant targets.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6.2.</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://antforms.sourceforge.net/">http://antforms.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:rene_ghosh@yahoo.com">Ren&#233; Ghosh</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Antmerge">
        <p>Provides simple inheritance between ant files</p>
        <p>As noted on the website, this project is deprected.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Tested with 1.5. Should work with all versions.</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.russet.org.uk/antmerge.html">http://www.russet.org.uk/antmerge.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:antmerge@russet.org.uk">Phillip Lord</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU Lesser General Public License</td>
          </tr>
        </table>
      </subsection>
      

      <subsection name="Antomology">
        <p>Antomology is an analysis tool suite for Ant. It includes:<ul>
          <li><b>StatisticsListener</b> - an Ant BuildListener which can be used to gather
              statistics while an Ant build is executed. Statistics on the targets
              and tasks executed are written to the console after the build completes. </li>
        </ul></p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td> <i>unknown</i> </td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://antomology.codehaus.org">http://antomology.codehaus.org</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://xircles.codehaus.org/projects/antomology/lists">contact page</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License V2.0</td>
          </tr>
        </table>
      </subsection>
        
      
      <subsection name="AntPrettyBuild">
         <p>
          Ant Pretty Build is a tool to easily show and run Ant buildfiles directly from
        within a browser window. It consists of a single XSL file that will generate,
        on the fly, in the browser, from the .xml buildfile, a pretty interface showing
        project name, description, properties and targets, etc. sorted or unsorted,
          allowing to load/modify/add properties, run the whole project, or run selected
        set of targets in a specific order, with the ability to modify logger/logfile,
        mode and add more libs or command line arguments.
        </p>
         <table class="externals">
              <tr>
                   <th>Compatibility:</th>
                   <td>All Ant versions</td>
              </tr>
              <tr>
                   <th>URL:</th>
                   <td><a href="http://antprettybuild.sourceforge.net/">Ant Pretty Build Homepage</a></td>
              </tr>
              <tr>
                   <th>Contact:</th>
                   <td><a href="http://antprettybuild.sourceforge.net">Charbel BITAR</a></td>
              </tr>
              <tr>
                   <th>License:</th>
                   <td>Apache License V2.0</td>
              </tr>
         </table>
      </subsection>
      
      <subsection name="AntRunner">
        <p>AntRunner is an easy to use and free GUI application for running
        Ant build files. It's written for .NET so it should run on any Windows
        Platform.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6 and newer</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://visualdrugs.net/antrunner/">http://visualdrugs.net/antrunner/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://visualdrugs.net/">Andre Fiedler</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GPL</td>
          </tr>
        </table>
      </subsection>


      <subsection name="AntSpaces">
        <p>AntSpaces provides Ant integration with JavaSpaces. This
        allows you to coordinate Ant tasks via JavaSpaces, pull out
        work units from a JavaSpace for distributed Ant tasks to work
        on, and so forth.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="http://www.oopsconsultancy.com/software/antspaces/">http://www.oopsconsultancy.com/software/antspaces/</a>
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>antspaces at oopsconsultancy.com</td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="AntTimerTask">
        <p><a href="http://www.jeckle.de/freeStuff/AntTimerTask/index.html">Timer</a>
        is task for measuring the time elapsed to complete other
        tasks</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="http://www.jeckle.de/freeStuff/AntTimerTask/index.html">http://www.jeckle.de/freeStuff/AntTimerTask/index.html</a>
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:mario@jeckle.de">mario@jeckle.de</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Lesser GNU Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Ant Web Start Task">

        <p>Ant Web Start Task is an Ant task allowing developers to
        package a desktop application as a WAR (Web Application
        Archive) to be distributed over the net via Java Web Start</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://ant-jnlp-war.sourceforge.net/">http://ant-jnlp-war.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="AntXtras">

        <p>A collection of powerful Ant extensions components
        organized into five categories: fixture-control,
        execution-rules, flow-control, feedback, and helpers.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://antxtras.sourceforge.net/">AntXtras Home</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://antxtras.sourceforge.net">SSMC</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU Lesser General Public License (LGPL 2.1)</td>
          </tr>
        </table>
      </subsection>


      <subsection name="Build Number">
        <p> Build Number is a tool to track software artifacts such as files and automatically assign
        proper version/build numbers to them. It ensures that two different artifacts will have different
        version/build numbers, but identical artifacts/builds will be assigned the same number. It doesn't
        take version management away from you and doesn't replace your build process, but rather plugs
        into the process and introduces version/build number governance by defining who is in charge of
        which part of version number. With Build Number you are still in charge of the head of the version
        number. E.g. you may decide to have 4 numbers in your version (major, minor, interface, implementation)
        and you want to manage the two first numbers (major and minor). Build Number will take care of the
        tedium of managing the last two numbers (interface and implementation). </p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Tested with Ant 1.5.4 and 1.6.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/products/build-number/">http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/products/build-number/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/xMenu397.html">Project Contact Page</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial</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 class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4.1 and later</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="ChownTask">

        <p>ChownTask is an Ant task to change ownership of files on Unix.</p>
        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/chowntask/">project site</a>
        shows, the last update was on <b>Feb 16 2003</b>.</i> (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.3 and up</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="http://sourceforge.net/projects/chowntask/">http://sourceforge.net/projects/chowntask/</a>
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:chowntask-users@lists.sourceforge.net">Wilfred Springer</a>
            </td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="CleanImports">
        <p>Removes unneeded imports. Formats your import
        sections. Flags ambiguous imports.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.3 and up</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.cleanimports.tombrus.nl">http://www.cleanimports.tombrus.nl</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:cleanimports@tombrus.nl">Tom Brus</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Clover">

        <p>Clover is an Ant-based Code Coverage tool. It can be used
        seamlessly with Ant-based projects. It provides method,
        statement, and branch coverage analysis, and has rich
        reporting in XML, HTML or via a Swing GUI.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4.1 or greater</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.cenqua.com/clover/">http://www.cenqua.com/clover/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:clover-support@cenqua.com">clover-support@cenqua.com</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial, free licenses available for open source
            projects.</td>
          </tr>
        </table>
      </subsection>

      <subsection name="CMSDeploy">

        <p><a href="http://cmsdeploy.sourceforge.net">CMSDeploy</a> is
        an Apache Ant Task to submit files and templates to Vignette
        CMS.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5.1 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://cmsdeploy.sourceforge.net">http://cmsdeploy.sourceforge.net</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:masogato@users.sourceforge.net">masogato@users.sourceforge.net</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU Lesser General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Cocoon Task">
        <p>This task allows the generation of static web pages and
        sites using Apache Cocoon in off-line mode.</p>
        <p>It allows the configuration information for Cocoon to be
        included within the Ant build file, and is thus
        able to take advantage of Ant properties.</p>
        <p>The task shares its code with the Cocoon Command Line, which
        means that this task will instantly take
        advantage of any new functionality added there.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5.3 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://cocoon.apache.org">http://cocoon.apache.org</a></td>
         </tr>
          <tr>
            <th>Documentation:</th>
            <td><a href="http://cocoon.apache.org/2.1/userdocs/offline/ant.html">http://cocoon.apache.org/2.1/userdocs/offline/ant.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:users.at.cocoon.apache.org">users at cocoon.apache.org</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
       </table>
     </subsection>

     <subsection name="Commons Configuration Ant Task">
       <p>A set of Ant task that help convert Apache Commons
       Configuration property files into build properties, java Enum's
       (that are populated at runtime), and any exportable property /
       env file desired (e.g., csh, bash, bat, etc.).</p>

       <p>This project provides the following tasks: 
       <ul>
         <li><b>CreateEnumTask</b>: Creates a Java enum based on
         commons configuration property files. </li>
         <li><b>ExportPropertiesTask</b>: Exports commons
         configuration properties to a external file in a using a
         specified format.</li>
         <li><b>LoadPropertiesTask</b>: Loads commons configuration
         properties into pre-generated Java enum.</li>
       </ul>
       </p>

       <table class="externals">
         <tr>
           <th>Compatibility:</th>
           <td>Ant 1.6 and above</td>
         </tr>
         <tr>
           <th>URL:</th>
           <td><a href="http://code.google.com/p/commonsconfiganttask/">http://code.google.com/p/commonsconfiganttask/</a></td>
         </tr>
         <tr>
           <th>Contact:</th>
           <td><a href="mailto:ndunn.at.me.com">ndunn at me.com</a></td>
         </tr>
         <tr>
           <th>License:</th>
           <td>Apache License 2.0</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>
        
        <p>As of 2009-03-06 this site was offline due database problems. So we do not know
        if this still longer exist. But you could also try Ants own &lt;subant&gt; task.</p>

        <table class="externals">
          <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 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="CVSGrab">

        <p>A little CVS client that can be useful when people are
        behind corporate firewall that blocks any cvs
        communications. It uses the ViewCVS web interface to access
        the CVS repository via standard http, and downloads all the
        files present in it.</p>

        <p>It works from the command line or as an Ant task.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.3 or higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://cvsgrab.sourceforge.net/">http://cvsgrab.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:cvsgrab-users@lists.sourceforge.net">CVSGrab
            user mailing list</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>LGPL</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Dependencies">
          <p>The dependencies task manages a set of external dependencies which
            may be downloaded from a remote repository,
             such as ibiblio.org. Uses a local cache to avoid repeated
            downloads.</p>

          <p>Note: While the HttpUnit site is still active, the referenced URL is not available.
          You could also try <a href="http://ant.apache.org/ivy/">Ivy</a>.</p>

          <table class="externals">
            <tr>
              <th>Compatibility:</th>
              <td>Tested with 1.5.1, should work with 1.4+.</td>
           </tr>
            <tr>
              <th>URL:</th>
              <td><a href="http://www.httpunit.org/doc/dependencies.html">http://www.httpunit.org/doc/dependencies.html</a></td>
            </tr>
            <tr>
              <th>Contact:</th>
              <td><a href="mailto:russgold@httpunit.org">Russell Gold</a></td>
            </tr>
            <tr>
              <th>License:</th>
              <td>MIT License</td>
            </tr>
          </table>
      </subsection>

      <subsection name="Dependency Finder">
        <p>Dependency Finder extracts dependencies and OO metrics from
        Java class files produced by most Java compilers. It can compute
        API differences between versions;  no sources needed. It includes
        Ant tasks, web, Swing, and command-line interfaces, with XSL
        stylesheets for formatting output.</p>

        <p>You can use it to extract dependencies between packages, classes,
        or even methods, or any combination thereof.  You can use Perl
        regular expressions to filter the information and pinpoint only
        what you need.  There is even a Web Application version (WAR file)
        so a whole group of developers can share a common view.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Tested with 1.5.3, should work with 1.4+.</td>
         </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://depfind.sourceforge.net/">http://depfind.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:jeantessier@users.sourceforge.net">Jean Tessier</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>BSD-like License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Doxygen task">

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
	    <td><a href="http://ant-doxygen.blogspot.com">http://ant-doxygen.blogspot.com</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:akkumar@users.sourceforge.net">Karthik A Kumar</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="DTDDoc">
        <p>DTDDoc is here to help you to document your DTD's efficiently. It is a
        straightforward extension of the javadoc concept to the DTD file format.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://dtddoc.sourceforge.net/">http://dtddoc.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://sourceforge.net/mail/?group_id=53704">Project Mailing List</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>X11 (Open Source)</td>
          </tr>
        </table>
      </subsection>

      <subsection name="EnvGen">
        <p>
          <a href="http://www.basilv.com/psd/software">EnvGen</a> is an Ant task for generating 
          different versions of the same file parameterized for different environments (i.e. 
          development, test, and production). File generation is done using 
          <a href="http://freemarker.org/">FreeMarker</a>, a template engine with a full-featured 
          templating language.
        </p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6.5 or higher (not tested on earlier versions)</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.basilv.com/psd/software">http://www.basilv.com/software</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www.basilv.com/psd/software/feedback">EnvGen Feedback Page</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GPL</td>
          </tr>
        </table>
      </subsection>

      <subsection name="EMMA">
        <p>EMMA is an open-source toolkit for measuring and reporting
        Java code coverage. EMMA distinguishes itself from other tools
        by going after a unique feature combination: support large-scale
        enterprise software development while keeping individual developers
        work fast and iterative at the same time.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://emma.sourceforge.net/">http://emma.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:emma-users@lists.sourceforge.net">Mailinglist</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Common Public License 1.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="EPP Task">
        <p>EPP Task is an easy preprocessor ant task.
        The next directives are supported: #ifdef, #ifndef, #else,
        #endif and #include.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 and higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://sourceforge.net/projects/epptask/">
            http://sourceforge.net/projects/epptask/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>Dmitriy Rykov</td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="FMPP">
        <p>FMPP is a general-purpose text file preprocessor tool that
        uses FreeMarker templates. It is particularly designed for
        HTML preprocessor, for the generation of complete (static)
        homepages: directory structure that contains HTML-s, image
        files, etc. But of course it can be used to generate source
        code or whatever text files. FMPP is extendable with Java
        classes to pull data from any data sources (XML file,
        database, etc.) and embed the data into the generated
        files.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://fmpp.sourceforge.net/">http://fmpp.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>BSD 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 class="externals">
          <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://genjar.sourceforge.net/">http://genjar.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:jesse_dev@yahoo.com">Jesse Stockall</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Grand">
        <p>Grand is a set of tools to create a visual representation of Ant target
          dependencies. It works by taking an Ant build file and creating a "dot" file. It
          differs from the existing tools by relying on the Ant API rather than XML parsing to
          get the dependencies. It includes many advanced features such as filtering or
          rendering depending on the target's nature. Also features a SWT based GUI.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.ggtools.net/grand/">http://www.ggtools.net/grand/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>Christophe Labouisse</td>
          </tr>
          <tr>
            <th>License:</th>
            <td>BSD License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Greebo">

        <p>Greebo is an Ant-task for downloading dependency files
        (currently only jars) from a network to a specified directory,
        much like Maven. It supports multiple local and remote
        repositories with either flat or maven-like structures. It can
        read the dependency list from a Maven project file, a
        maven-like dependency file, or directly from the build.xml
        file.</p>
        
        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/greebo/">project site</a>
        shows, the last update was on <b>Mar 12 2003 </b>.</i>
        You could also try <a href="http://ant.apache.org/ivy/">Ivy</a>. (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://greebo.sourceforge.net/">http://greebo.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://sourceforge.net/mail/?group_id=73733">project mailing lists</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="GroboUtils CodeCoverage">

        <p>The CodeCoverage sub-project of GroboUtils provides a 100%
        pure Java code coverage tool.  It uses pre-execution class file
        recompilation, and generates XML files containing the coverage
        statistics.  It does not require any advanced VM setup to generate
        coverage numbers.
        </p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://groboutils.sourceforge.net/codecoverage/">http://groboutils.sourceforge.net/codecoverage/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://sourceforge.net/mail/?group_id=22594">project mailing lists</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>MIT License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Hammurapi">
        <p>Java code review tool. Performs automated code
        review. Contains 111 inspectors which check different aspects
        of code quality including coding standards, EJB, threading,
        ...</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Tested with Ant 1.5.x and 1.6.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/products/hammurapi/index.html">http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/products/hammurapi/index.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:support@hammurapi.biz">Support adress</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td></td>
          </tr>
        </table>
      </subsection>

      <subsection name="HelpStudioAnt">
        <p>This task allows for HelpStudio projects to be created via Ant.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6.0 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://helpstudioant.sourceforge.net">http://helpstudioant.sourceforge.net</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>
      
      <subsection name="IDLDepend">
        <p>idldepend is a task that (re)generates Java sources to be
        created from CORBA/IDL files.</p>

        <p>It parses the IDL file and determines the Java files that
        must be generated, taking in account the modifications that
        can happen due to command line parameters.  If any of the Java
        files are missing or older than the source IDL specification,
        it launches the specified compiler.  The compilers of Orbacus,
        Jacorb, OpenORB, Orbix2k and Sun'JDK distributions are
        supported.</p>

        <p>To speed up the process and avoid unnecesary re-parsing, it
        keeps the dependencies in intermediate files.  This task does
        not launch the javac compiler as well, that is, its output are
        Java files and not the final bytecode.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 or later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.coderazzi.net/idldepend/">http://www.coderazzi.net/idldepend/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:lu@coderazzi.net">lu@coderazzi.net</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>free source, no license restrictions</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Image">
        <p>Image task generates and transforms images. It exposes the
        imaging capability available in Java2D, Java Advanced Imaging,
        ImageIO, etc., as set of nested elements.</p>

        <p>Image transformations such as &quot;resize&quot;
        (scale),&quot;overlay&quot; (one image on another),
        &quot;border&quot; (add a border), &quot;text&quot; (text on
        image), &quot;crop&quot; (a sub-image of a bigger image),
        &quot;rotate&quot;, &quot;grayscale&quot; (change a color
        image to shades of gray).<br/>
        Now it supports transparency (making images translucent), a
        bestfit option for Resize, simple support for images within
        a security-constraint, a preliminary support (if pjatools.jar
        is available) for saving files as GIF and some other fixes.</p>

        <p>IMPORTANT: You will need the PMIW (Poor Man's Imaging Wrapper) jar
        for all the operations and the pjatools jar for GIF encoding/ saving
        support.</p>
        
        <p>Note: The website encourage the use of Ants internal image tasks. While the development
        of these image tasks is stopped the development of the underlying PMIW should occur.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a
                href="http://www.mullassery.com/software/ANT/">http://www.mullassery.com/software/ANT/</a></td>
          </tr>
          <tr>
            <th>pmiw jar</th>
            <td><a
                href="http://www.mullassery.com/software/PMIW/">http://www.mullassery.com/software/PMIW/</a>
                (Poor Man's Imaging Wrapper)</td>
          </tr>
          <tr>
            <th>pjatools jar</th>
            <td><a
                href="http://www.eteks.com/pja/en/">http://www.eteks.com/pja/en/</a>
                (pjatools for GIF encoding support)</td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www.mullassery.com">Abey Mullassery</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

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

        <table class="externals">
          <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="ImTask">

        <p>ImTask is a task to allow one to send an Instant
        Message. Currently supports yahoo!, AIM, and Jabber</p>


        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 or higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://imtask.sourceforge.net/">http://imtask.sourceforge.net</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:djallstar@users.sourceforge.net">Jon Madison</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU LGPL</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Incanto">

        <p>Ant tasks to provide support for Oracle database tools
        (such as SQL*Plus, Import, Export)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://incanto.sourceforge.net/">http://incanto.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:alexrk@users.sourceforge.net">Alexander Karnstedt</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License, Version 2.0</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 class="externals">
          <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="Ivy">

        <p>Ivy is a simple yet powerful dependency manager featuring
        continuous integration, dependencies of dependencies
        management, multiple repositories including ibiblio and high
        performance (use of a local cache).</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>1.5.1 (1.6.5 or 1.7.1 recommended)</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://ant.apache.org/ivy/">http://ant.apache.org/ivy/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>ivy-user (at) ant (dot) apache (dot) org [User Mailinglist]</td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="J2ME Ant Tasks">

        <p>There are different sets of tasks to help build <a
        href="http://www.oracle.com/technetwork/java/javame/overview/index.html">Java 2 Platform, Micro
        Edition</a> (J2ME) applications.</p>

        <subsubsection name="Antenna">
          <p>Antenna provides a set of Ant tasks suitable for developing
          wireless Java applications targeted at the Mobile Information
          Device Profile (MIDP). With Antenna, you can compile,
          preverify, package, obfuscate, and run your MIDP applications
          (aka MIDlets), manipulate Java Application Descriptor (JAD)
          files, as well as convert JAR files to PRC files designed to
          run on MIDP for Palm OS. Deployment is supported via a
          deployment task and a corresponding HTTP servlet for
          Over-the-Air (OTA) provisioning. A small preprocessor allows
          to generate different variants of a MIDlet from a single
          source.</p>

          <table class="externals">
            <tr>
              <th>Compatibility:</th>
              <td>Ant 1.4.1 or later</td>
            </tr>
            <tr>
              <th>URL:</th>
              <td><a href="http://antenna.sourceforge.net/">http://antenna.sourceforge.net/</a></td>
            </tr>
            <tr>
              <th>Contact:</th>
              <td><a href="mailto:joerg@pleumann.de">J&#xF6;rg Pleumann</a></td>
            </tr>
            <tr>
              <th>License:</th>
              <td>GNU Lesser General Public License</td>
            </tr>
          </table>
        </subsubsection>

        <subsubsection name="Antic">
          <p>Antic is a freely available task for packaging J2ME
          applications. It produces both the Jar and Jad files in a
          single step. This allows *all* entries to be correclty set in
          the jad file, including the size of the jar file that is
          produced. This task has been used and tested extensively with
          Sun's Wireless Toolkit and also the Nokia SDK and
          emulators.</p>

          <table class="externals">
            <tr>
              <th>Compatibility:</th>
              <td>Ant 1.5</td>
            </tr>
            <tr>
              <th>URL:</th>
              <td><a href="http://www.smartkey.co.uk/tools/antic/antic.html">http://www.smartkey.co.uk/tools/antic/antic.html</a>
              </td>
            </tr>
            <tr>
              <th>Contact:</th>
              <td><a href="mailto:support@smartkey.co.uk">smartkey.co.uk</a></td>
            </tr>
            <tr>
              <th>License:</th>
              <td>GNU General Public License</td>
            </tr>
          </table>
        </subsubsection>

        <subsubsection name="Dave's J2ME Tasks">
          <p>This set supports CLDC and the K Virtual Machine (KVM):</p>
          <p>Note: As the website shows the 'most recent news' is from 18 Apr 2001</p>

          <table class="externals">
            <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 1.1</td>
            </tr>
          </table>
        </subsubsection>

        <subsubsection name="J2ME Polish">
          <p>J2ME Polish is an Ant-based tool for the creation of
          MIDP applications. It covers the whole circle of preprocessing, compiling,
          obfuscation, preverifying, packaging and JAD-creation. J2ME Polish is
          ideal for creating device optimized applications with its powerful
          preprocessing capabilities and the integrated device database.
          With J2ME Polish no hardcoded values are needed and the portability of an
          application is not sacrificed, even though highly optimized applications are
          created from a single source.
          <br/>
          It contains a logging framework and an optional MIDP-compatible GUI
          which can be designed using the web-standard CSS. With the J2ME Polish GUI
          you can even use MIDP/2.0 features on MIDP/1.0 phones.
          </p>

          <table class="externals">
            <tr>
              <th>Compatibility:</th>
              <td>Ant 1.4.1 or later</td>
            </tr>
            <tr>
              <th>URL:</th>
              <td><a
              href="http://www.j2mepolish.org/">http://www.j2mepolish.org/</a></td>
            </tr>
            <tr>
              <th>Contact:</th>
              <td><a href="mailto:j2mepolish@enough.de">Enough Software</a></td>
            </tr>
            <tr>
              <th>License:</th>
              <td>GNU General Public License; commercial licenses available</td>
             </tr>
           </table>
        </subsubsection>

        <subsubsection name="Stampysoft's J2ME Tasks">
          <p>And this set works with the J2ME Wireless Toolkit and MIDP
          for PalmOS.</p>
          <p>Note: as the website shows, the 'current release' is from 11/5/2001</p>

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

      <subsection name="Jacson">

        <p>Jacson is a configurable and plugable tool (much like Ant
        itself) to create filters for text (line based) files without
        programming.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Jacson has been used and tested with 1.5.1, should
            work with 1.4+</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://jacson.sourceforge.net/">http://jacson.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:jacson-user@lists.sourceforge.de">jacson-user@lists.sourceforge.de</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU Library or Lesser General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Jalopy">

        <p>An Ant Plug-in for the Java Source Code Formatter
        Jalopy.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 (or higher)</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://jalopy.sourceforge.net/">http://jalopy.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://jalopy.sf.net/contact.html">http://jalopy.sf.net/contact.html</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Starting with release 1.0 Beta 6 the license is the
            BSD License.  Prior releases were under the GNU General
            Public License.</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JarBundler">

        <p>JarBundler is a task that generates Mac OS X native Java
        Application Bundles.  It is fully configurable and can be used
        to generate Mac OS X application bundles from any supported
        Java platform, making it ideal for targeting multiple
        platforms with one build.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.loomcom.com/jarbundler/">http://www.loomcom.com/jarbundler/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:sethm@loomcom.com">Seth Morabito</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JarPatch">

        <p>JarPatch is a task that generates a zip file resulting of
        the diff between the content of 2 jar files.</p>

        <p>The resulting diff file can be use as a patch for a
        previous installation (just ensure that the generated
        patch.zip file is located on the CLASSPATH before the patched
        oldJar jar file).</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a
                href="http://norb.dnsalias.org/ant/">http://norb.dnsalias.org/ant/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:norbert.barbosa@gmail.com">Norbert Barbosa</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>LGPL License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Java+ Precompile Task">

        <p>Java+ is an open source Java preprocessor that adds these
        features to any Java compiler:</p>

        <ul>
          <li>Multi-line strings with executable inclusions like Perl
          and Ruby. It eliminates the need for JSP or ASP and their
          need for Java compilers on deployment servers (a security
          concern) while adding no overhead in either space or
          time. </li>

          <li>Optionally supports localization by segregating Java+
          strings into ResourceBundle files with invarient keys based
          on the hash code of the strings's value. This is handled
          automatically and transparently; no intervention is
          required.</li>

          <li>Fast. Negligible impact on build times. By default,
          skips inputs whose outputs are up to date to avoid
          triggering recompilations.</li>

          <li>Pure Java code, portable to any platform, with
          graphical, shell and ant interfaces.</li>

          <li>Simple, general, recursive, digraph-driven string
          syntax. Digraph characters are user-selectable.</li>
        </ul>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://virtualschool.edu/java+/">http://virtualschool.edu/java+/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:bcox@virtualschool.edu">Brad Cox</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>BSD-like License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Java2Html">

        <p>There are two different tools both named Java2HTML that
        process Java source code and generate syntax highlighted
        documentation from it.  Both include Ant tasks to run
        them.</p>

        <p>Java2Html library for converting java source files
        or snipplets to syntax highlighted html, rtf, tex and
        others.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.java2html.de/">http://www.java2html.de/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:java2html@jave.de">java2html@jave.de</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>

        <p>Java2HTML is a simple-to-use tool which converts a bunch of
        Java Source Code into a colourized and browsable HTML
        representation.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>1.5.1 onwards</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.java2html.com/java2html_ant_task.html">http://www.java2html.com/java2html_ant_task.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:support@java2html.com">support@java2html.com</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>FreeWare</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 class="externals">
          <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="javarec">

        <p>Ant tasks that generate record classes for VisualAge for
        Java from Cobol copy books.</p>
        <p>Note: the website shows that the latest version 1.1 is from December 2, 2001</p>

        <table class="externals">
          <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 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JCSC">

        <p>JCSC is a Java Coding Standard Checker which also features
        the generation of some code metrics. It is a command line tool
        with an Ant task to scan whole package trees. The result can
        viewed in an JavaDoc style web page.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant &gt;= 1.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://jcsc.sourceforge.net/">http://jcsc.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:rjocham72@netscape.net">Ralph Jocham</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JDeb">

        <p>JDeb provides an Ant task and a Maven plugin to create
          Debian packages from Java builds in a truly cross platform
          manner. Build your Debian packages on any platform that has
          Java support. Windows, Linux - it does not require
          additional native tools installed.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.7 (not tested on earlier versions)</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://vafer.org/projects/jdeb/">http://vafer.org/projects/jdeb/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:tcurdt@apache.org">Torsten Curdt</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Jdiff">

        <p>A task that generates an HTML report of all the packages, classes,
        constructors, methods, and fields which have been removed, added or
        changed in any way, including their documentation, when two APIs are
        compared. </p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
            <a href="http://javadiff.sourceforge.net/" >
            http://javadiff.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Task Documentation:</th>
            <td>
            <a
            href="http://cvs.sourceforge.net/viewcvs.py/*checkout*/javadiff/jdiff/jdiff.html?rev=HEAD&amp;content-type=text/html#JDiffAntTask"
            >
            (in CVS)</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>LGPL</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JFlex">

        <p>JFlex is a lexical analyzer generator (also known as
        scanner generator) for Java, written in Java.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://jflex.de/">http://jflex.de/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www.jflex.de/mailing.html">jflex-users mailing list</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License (GPL)</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JindentTask">

        <p>JindentTask is a very straightforward wrapping of the
        Jindent tool, a vendor code beautifier. It enables to use
        Jindent natively from Ant.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4.1 and higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://the.edouard.mercier.free.fr/Jindent_content.php">http://the.edouard.mercier.free.fr/Jindent_content.php</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>Edouard Mercier</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Jing Task">

        <p> Validates XML files against the RELAX NG alternative to XML Schema.
        The Jing task for Ant allows you to efficiently validate
        multiple files against multiple RELAX NG patterns and integrate
        RELAX NG validation with other XML processing.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.thaiopensource.com/relaxng/jing-ant.html">
            http://www.thaiopensource.com/relaxng/jing-ant.html</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>BSD-like</td>
          </tr>
        </table>
      </subsection>

      <subsection name="jMetra">

        <p>jMetra is a tool for collecting code metrics across a
        project lifecycle and compiling the results into
        JavaDoc-styled documentation to analyze project metrics over
        time.  jMetra is best utilized by integrating it with your
        project's scheduled build process.</p>

        <p>It works from the command line or using several provided
        Ant tasks.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 and higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="http://www.jmetra.com/">http://www.jmetra.com/</a
                >
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>
              <a href="mailto:tnewton@hypercisioninc.com">R Todd Newton
              </a>
            </td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial, free licenses for open source projects and
            evaluations.</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JMX4Ant">

        <p>JMX4Ant provides tasks for integration with JMX (Java Management
        Extensions). It provides tasks for getting and setting attributes
        of MBeans, invoking their methods and much more.</p>
        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/jmx4ant">project site</a>
        shows, the last update was on <b>May 28 2003</b>.</i> (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 and higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="http://jmx4ant.sourceforge.net/">http://jmx4ant.sourceforge.net/</a>
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>
              <a href="mailto:bdueck@yahoo.com">Brian Dueck</a>
            </td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JNI">

        <p>

          JNI is a free toolkit that makes easy work of
          integrating Java and C through the Java Native
          Interface (JNI). It includes a code generator that
          generates both Java "proxy" classes to access C
          "peer" classes, and C "proxy" classes to access
          Java "peer" classes or interfaces. It also
          includes a core library with a simplified JVM
          interface as well as "helper" classes to ease
          working with the JNI data types. The code
          generation is driven by an XML project file that
          can be created with the assistance of the GUI
          Project Manager. The code generation can be
          invoked either from Ant or from the
          GUI. Includes a comprehensive printable PDF User
          Guide and plenty of examples.</p>

        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/jnipp">project site</a>
        shows, the last update was on <b>Jan 29 2002</b>.</i> (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://jnipp.sf.net/">http://jnipp.sf.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:ptrewhella@users.sf.net">Phillip E. Trewhella</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU LGPL</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JPP">
        <p>
          <a href="http://www.javapreprocessor.com">JPP</a> is a preprocessor for Ant supporting
          many different file types that allows you to include / exclude contents based on 
          build-time parameters.  It is completely invisible to other tools and takes the hassle 
          out of maintaining customised code or content.  It is free, is provided as an Ant task, 
          and very simple to use.
        </p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.javapreprocessor.com">http://www.javapreprocessor.com</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto://info@javapreprocessor.com">info@javapreprocessor.com</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Freeware</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JReleaseInfo">
        <p>Sometimes you are interested at runtime to have information
        from build time. This may be the build date, a build number or
        the version.  The JReleaseInfo Ant Task generates a java
        source file with getter methods for any desired and provided
        properties.  Furthermore, it can automatically generate a
        viewer (which can e.g.  be used as main-class in a library jar
        file) that shows the included release information.</p>

        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/jreleaseinfo">project site</a>
        shows, the last update was on <b>Aug 07 2005</b>.</i> (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://jreleaseinfo.sourceforge.net/">HomePage on SourceForge</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a
                href="http://sourceforge.net/projects/jreleaseinfo/">Forums/Tracker on SourceForge</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JRun Ant Tasks">

        <p>JRun 4 SP1 ships with lib/jrun-ant-tasks.jar, which defines
        three Ant tasks: jrun, jrunapp, and jrunjmx.  Documentation
        for the tasks can be found in JRun under
        docs/ant/jrun.html.</p>

        <p>Note that the service pack must be installed on top of an
        existing JRun 4 installation.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 or higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.adobe.com/products/jrun/">http://www.adobe.com/products/jrun/</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JsDoc Toolkit Ant Task">

        <p>JsDoc Toolkit is an application, written in JavaScript, for
          automatically generating template-formatted, multi-page HTML
          (or XML, JSON, or any other text-based) documentation from
          commented JavaScript source code.</p>

        <p>This project is a simple wrapper around the JsDoc Toolkit
          documentation program. It gives the user all the command
          line options, with the flexibility of using in within an Ant
          build file.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.7.0 or higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://code.google.com/p/jsdoc-toolkit-ant-task/">http://code.google.com/p/jsdoc-toolkit-ant-task/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:ironsidevsquincy@googlemail.com">Darren Hurley</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JSMin Ant Task">

        <p>The JSMin Ant task can be used for the automated minification of javascript files
          in your build and deploy processes.</p>
        <p>JSMin is a filter which removes comments and unnecessary whitespace from javascript
          files. It typically reduces filesize by half, resulting in faster downloads.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6.5 or higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://code.google.com/p/jsmin-ant-task/">http://code.google.com/p/jsmin-ant-task/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:matt_at_matthaynes_dot_net">M. Haynes</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JudoScript Ant Task">

        <p>The &lt;judoscript&gt; task is an easy way to embed JudoScript
           code in the Ant build script. The tag format is quite simple. You can
           either embed code directly, or can specify an external JudoScript program
           file as the <code>src</code> attribute value. Parameters can be specified
           as the <code>params</code> attribute; this is applicable to both embedded
           code and external files.
        </p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 or higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a
              href="http://www.judoscript.org/books/judoscript-0.9/chapters/ant.html">http://www.judoscript.org/books/judoscript-0.9/chapters/ant.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:judoscript@hotmail.com">James Jianbo Huang</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Lesser GNU Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Just4log Ant Task">

        <p>Just4log is a ant task to optimize JVM bytecode with regards
        for Logs ( be it, Log4j, Apache Commons or JDK 1.4 )
        It depends on apache BCEL for Bytecode engineering.</p>

        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/just4log">project site</a>
        shows, the last update was on <b>Oct 19 2003</b>.</i> (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5.2 or higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://just4log.sourceforge.net">http://just4log.sourceforge.net</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:lbruand@wanadoo.fr">Lucas Bruand</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 1.1.</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Kanaputs">

        <p>Kanaputs is a parser for java based scripting. It is an
        interpreter for Java. With Kanaputs you can use Java as an
        interpreted language: no more compilation, each instruction is
        executed when you write it.  It is a small programmation
        language to make script files above Java.</p>

        <p>Kanaputs Ant Task provides a way to add any kind of
        programmatic features in your Ant script. The code you insert
        stays OS independent (because Kanaputs uses Java) and is
        completely integrated with Ant as you can give Ant properties
        to the Kanaputs code and get back the results in other
        properties.</p>

        <p>Moreover, as you can invoke any kind of Java code with
        Kanaputs, you can popup windows from your Ant file to ask the
        user to do a choice.</p>
        
        <p>Note: the <a href="https://kanaputs.dev.java.net/servlets/ProjectNewsList">website</a>
        shows that the latest version 1.4 is from Nov 26, 2004. The mailing archive from
        the last few months contains only spam...</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.2 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="https://kanaputs.dev.java.net/">https://kanaputs.dev.java.net//</a> <br/>
              <a href="https://kanaputs.dev.java.net/ant.pdf">https://kanaputs.dev.java.net/ant.pdf</a>
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>
              <a href="mailto:kfra@dev.java.net">kfra@dev.java.net</a>
            </td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Freeware</td>
          </tr>
        </table>
      </subsection>

      <subsection name="LaTeX Task">

        <p>Simple Task to use (PDF)LaTeX, BibTeX, Makeindex and GlossTeX to
        create your documentation.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6.2 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="http://www.dokutransdata.de/">http://www.dokutransdata.de/</a><br/>
              <a href="http://www.dokutransdata.de/ant_latex/">http://www.dokutransdata.de/ant_latex/</a>
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>
              <a href="mailto:jaloma@dokutransdata.de">jaloma@dokutransdata.de</a>
            </td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Freeware</td>
          </tr>
        </table>
      </subsection>

     <subsection name="Macker">

        <p>A build-time architectural testing tool, designed
        to maintain clean layering / tiering / modularity.
        Macker works against compiled class files, checking
        dependencies between classes against a set of
        pattern-based access rules you specify for your
        project in an XML rules file.  Macker doesn't presume
        anything about your architecture -- you write the
        rules, and Macker keeps you honest about them.</p>

        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/macker">project site</a>
        shows, the last update was on <b>Nov 02 2003</b>.</i> (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and higher (1.4 untested but may work)</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://innig.net/macker/">http://innig.net/macker/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://innig.net/macker/contact.html">Paul Cantrell</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU GPL 2.0</td>
          </tr>
        </table>
      </subsection>
      
     <subsection name="MakeRunScript">

        <p>MakeRunScript creates a run script for your application.  Even if you are developing on windows,
        you can make a run script for *nix and vice versa.  If you've used the built-in java task before, you
        already know how to use 90% of MakeRunScript.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.7 and higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://sourceforge.net/projects/makerunscript/">http://sourceforge.net/projects/makerunscript/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://sourceforge.net/forum/?group_id=210204">MakeRunScript forums</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache 2.0</td>
          </tr>
        </table>
      </subsection>      

      <subsection name="mtxslt">

        <p>The mtxslt (Multi-XSLT) extends the standard Ant "xslt/style" task
        to make it easy to use multiple XSLT engines during the same build.
        This is useful for regression testing of XSLT scripts against several
        engines.</p>

        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/mtxslt/">project site</a>
        shows, the last update was on <b>Oct 16 2002</b>.</i> (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://mtxslt.sourceforge.net/">http://mtxslt.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:abcoates@theOffice.net">Anthony B. Coates</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="nsd2LaTeX Task">

        <p>Simple Task to use nsd2ltx to build your Nassi-Shneiderman diagrams.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6.2 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="http://www.dokutransdata.de/">http://www.dokutransdata.de/</a><br/>
              <a href="http://www.dokutransdata.de/ant_nsd2ltx/">http://www.dokutransdata.de/ant_nsd2ltx/</a>
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>
              <a href="mailto:jaloma@dokutransdata.de">jaloma@dokutransdata.de</a>
            </td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Freeware</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Nurflugel AntScript Visualizer">

        <p>The Nurflugel AntScript Visualizer takes your build file,
        finds any imported build files, and shows all relationships
        between targets, taskdefs, macrodefs, Ant and Antcalls; output
        options include PDF, SVG, and PNG.  Many options including
        grouping by build file, inclusion/exclusion of targets,
        taskdefs, imports, etc.  Installation is via Java WebStart, so
        you'll always have the freshest version available.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.1 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.nurflugel.com/webstart/AntScriptVisualizer/">http://www.nurflugel.com/webstart/AntScriptVisualizer/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>dbullard &lt;at&gt; nurflugel &lt;dot&gt; com (email
            will receive a challenge to weed out spam)</td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Orangevolt Ant Tasks">

        <p>Orangevolt ANT Tasks is a collection of Tasks for Apache
        Ant.</p>

        <p>The Orangevolt Ant Tasks collections provides a bunch of
        Appplication Deployment related Tasks from windows specific
        tasks (registry access, executable generation), *nix specific
        tasks (kde/gnome shortcut generation) to many useful utility
        tasks like jnlp generation.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 or above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://sourceforge.net/projects/ovanttasks">http://sourceforge.net/projects/ovanttasks</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:info@roxes.com">info@roxes.com</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License (GPL)</td>
          </tr>
        </table>
      </subsection>

      <subsection name="pack">

        <p>pack is a task to build the smallest possible JAR to link
        and run one or more classes.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://sadun-util.sourceforge.net/pack.html">http://sadun-util.sourceforge.net/pack.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:cristiano@xtractor.com">Cristiano Sadun</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU Lesser General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="PCT">
        <p>PCT is a task to compile Progress code, and in a more general
        way, to deal with Progress procedures and databases.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://pct.sourceforge.net">http://pct.sourceforge.net</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:justus_phenix@users.sourceforge.net">Gilles QUERRET</a></td>
          </tr>
          <tr>
            <th>Licence:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="PesterCat Ant Toolkit">
         <p>PesterCat is a web testing tool that was designed to
           perform functional testing for web applications. The PesterCat
           Ant Toolkit contains tasks to playback test scripts and create
           HTML reports.
         </p>
         <table class="externals">
           <tr>
             <th>Compatibility:</th>
             <td>Ant 1.6 and later</td>
           </tr>
           <tr>
             <th>URL:</th>
             <td><a href="http://www.pestercat.com/">http://www.pestercat.com/</a></td>
           </tr>
           <tr>
             <th>License:</th>
             <td>Commercial</td>
           </tr>
         </table>
       </subsection>

      <subsection name="PMD">

        <p>PMD checks Java source code for unused variables,
        unnecessary object creation, etc</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 and higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://pmd.sf.net/">http://pmd.sf.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:tcopeland@apache.org">Tom Copeland</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>BSD style license</td>
          </tr>
        </table>
      </subsection>

      <subsection name="PRes">
        <p>PRes is short for Property Resources and will generate a Java source
           file from name=value pair .property files which can be compiled like any
           other class.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and later (may work with earlier)</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://mseries.sourceforge.net">http://mseries.sourceforge.net</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://web.ukonline.co.uk/mseries/contact.html">MSeries</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>LGPL</td>
          </tr>
        </table>
      </subsection>

      <subsection name="ProGuard">
        <p><a href="http://proguard.sourceforge.net/">ProGuard</a> is
        a free Java class file shrinker and obfuscator.  It can detect
        and remove unused classes, fields, methods, and attributes. It
        can then rename the remaining classes, fields, and methods
        using short meaningless names.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Tested with 1.5. Should work with all versions.</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="http://proguard.sourceforge.net/">http://proguard.sourceforge.net/</a>
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>
              <a href="http://proguard.sourceforge.net/feedback.html">Feedback Page</a>
            </td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="properties2java">

        <p>Properties2Java is an Ant task for automatic conversion of
        java ".properties" files to ".java" files extending the
        java.util.ListResourceBundle.</p>
        
        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/properties2java">project site</a>
        shows, the last update was on <b>Jun 04 2005</b>.</i> (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6 or above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://properties2java.jayefem.de/">http://properties2java.jayefem.de/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:properties2java@jayefem.de">Jan-Friedrich Mutter</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Purge">

        <p>Purge deletes all but the most recent few files from a fileset.
        For example: if you have generated files (logs, .ear, .war, .jar
        etc) accumulating in a directory, the purge task will allow you
        to delete the older files, keeping just the most recent ones.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 or above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.dallaway.com/ant/">http://www.dallaway.com/ant/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:purge@dallaway.com">Richard Dallaway</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>LGPL</td>
          </tr>
        </table>
      </subsection>

      <subsection name="RefactorIT">

        <p>RefactorIT includes an Ant task for metrics and audits.
        RefactorIT is a Java refactoring, audit and metrics tool.
        It plugs into major Java IDEs, also runs stand-alone with
        a GUI and a command line interface.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.refactorit.com/">http://www.refactorit.com/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:support@refactorit.com">support@refactorit.com</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial. (Free for accredited open source products, see
            <a href="http://www.refactorit.com/osc">http://www.refactorit.com/osc</a>.)</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Reflectant Task">

        <p>This is a task for reflection invocation from within ant build file.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 or above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://sourceforge.net/projects/reflectant/">http://sourceforge.net/projects/reflectant/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:sv_ant@mail.bg">sv_ant@mail.bg</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="rundoc">
        <p>A task designed to help with the single-sourcing of program
        documentation. Rundoc replaces special commands
        (in the format <i>@@rundoc:command param1 param2...@@</i>) embedded
        within text files with their output in a
        specified format. Currently, only Docbook format is supported.</p>

        <p>Rundoc was written to keep sample code output in program
        documentation synchronized with the actual output
        of the current code, by running the referenced code when the
        documentation is built.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Tested with 1.6  Should work with all versions.</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.martiansoftware.com/lab/index.html#rundoc">http://www.martiansoftware.com/lab/index.html#rundoc</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www.martiansoftware.com/contact.html">Marty Lamb</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Revised BSD</td>
          </tr>
        </table>
      </subsection>

      <subsection name="SerialVer">

        <p>SerialVer adds the Java serialver functionality to Apache
        Ant.  This project adds Tasks and FilterReaders to get, to
        insert and to modify the serialVersionUID in the source code
        of a serializable class.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5.1 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://serialver.sourceforge.net/">http://serialver.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="https://lists.sourceforge.net/lists/listinfo/serialver-development">developer mailing list</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Simian">

        <p>Simian (Similarity Analyser) identifies duplication in Java,
        C#, C, CPP, COBOL, JSP, HTML source code and even plain text files.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5.1 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.redhillconsulting.com.au/products/simian/">
            http://www.redhillconsulting.com.au/products/simian/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:simian-user-subscribe@redhillconsulting.com.au">
            simian-user-subscribe@redhillconsulting.com.au (User Mailinglist)
            </a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial, Free Licenses available for Non-Commercial Projects</td>
          </tr>
        </table>
      </subsection>

      <subsection name="SmartAnalyzer">

        <p>Powerful analysis of dependencies between Java classes.
        Only affected classes will be recompiled and it can be used
        with any bytecode compiler.</p>

        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/smartanalyzer">project site</a>
        shows, the last update was on <b>Feb 21 2003</b>.</i> (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Apache Ant version 1.5.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://smartanalyzer.sourceforge.net/">http://smartanalyzer.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://sourceforge.net/projects/smartanalyzer">support at sourceforge project page</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public Licence (GPL)</td>
          </tr>
        </table>
      </subsection>

      <subsection name="snip">
        <p>A task designed to help with the single-sourcing of program documentation.
        Snip extracts snippets of text from files, placing them into properties in the Ant project.
        These properties can then be used by any other Ant task, and are particularly useful when
        referenced by &lt;filter&gt;s within the &lt;copy&gt; task.</p>

        <p>Snip was originally written to keep snippets of sample code in API documentation synchronized
        with the actual sample classes.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Tested with 1.5.1.  Should work with all versions.</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.martiansoftware.com/lab/index.html#snip">http://www.martiansoftware.com/lab/index.html#snip</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www.martiansoftware.com/contact.html">Marty Lamb</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Revised BSD</td>
          </tr>
        </table>
      </subsection>

      <subsection name="spell">
        <p>Website is gone and nothing found.</p>
      </subsection>
      
      <subsection name="SQL Compiler (SQLC)">
        <p>SQL Compiler (SQLC) compiles database metadata and SQL statements into data access and data transfer classes.</p>
        <p>Note: It seems that the product is renamed to <a href="http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/products/sqlc/index.html">jIncarnate</a>.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Tested with Ant 1.5.4 and 1.6.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.hammurapi.biz/products/sqlc">http://www.hammurapi.biz/products/sqlc</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/contact.html">Project Contact Page</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>LGPL</td>
          </tr>
        </table>
      </subsection>

      <subsection name="SQLUnit">
         <p>SQLUnit is a regression and unit testing harness for testing
         database stored procedures. The test suite is written as an XML file.
         The SQLUnit harness itself is written in Java and uses the JUnit unit
         testing framework to convert the XML test specifications to JDBC calls
         and compare the results generated from the calls with the specified
         results. It also provides the &lt;sqlunit&gt; task to run the tests
         from a build script.</p>
         <table class="externals">
           <tr>
             <th>Compatibility:</th>
             <td>Tested with Ant 1.6</td>
           </tr>
           <tr>
             <th>URL:</th>
             <td><a href="http://sqlunit.sourceforge.net">http://sqlunit.sourceforge.net</a></td>
           </tr>
           <tr>
             <th>Contact:</th>
             <td><a href="http://sourceforge.net/forum/?group_id=77832">Project forums</a></td>
           </tr>
           <tr>
             <th>License:</th>
             <td>GNU General Public License (GPL)</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 class="externals">
          <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="Syntax">

        <p>Transforms source files into HTML documents with syntax
        highlighting. It can handle a variety of source files
        including Java, HTML, C/C++, SQL, and Java properties.  Colors
        for elements are specified using cascading style sheets.  The
        output can be templated for easy integration with a site's
        look and feel.</p>
        
        <p>A very short look into the <a href="http://www.gjt.org/servlets/JCVSlet/list/gjt/com/Ostermiller/Syntax">scm</a>
        shows that the last modifications where in 2003.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://ostermiller.org/syntax/ant.html">http://ostermiller.org/syntax/ant.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://ostermiller.org/contact.pl?regarding=Syntax+Highlighting">Stephen Ostermiller</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License (GPL)</td>
          </tr>
        </table>
      </subsection>

      <subsection name="TestSetGenerator">

        <p>The TestSetGenerator is an ant task for generating property files with
        testsets based on the results of SQL queries and validation plug-ins. Very
        usefull when building unit tests that make use of changing datasets. This
        task is an extension of the Ant SQL task. Hsqldb is used for both the
        examples and the unittests.</p>

        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/anttestsetgen">project site</a>
        shows, the last update was on <b>Jan 04 2004</b>.</i> (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>ANT 1.4 (or later)</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://anttestsetgen.sourceforge.net/">http://anttestsetgen.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:m.c.jansen@planet.nl">m.c.jansen@planet.nl</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GPL</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>

        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/tiniant/">project site</a>
        shows, the last update was on <b>Mar 05 2002</b>.</i> (jhm)</p>

        <table class="externals">
          <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="Transformica">
        <p>Transformica is a versatile and extensible code generator.
           Supports multiple source models including database metadata, Java source files, grammar
           files and custom models.
        </p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Tested with Ant 1.5.x and 1.6.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/products/transformica/">http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/products/transformica/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:support@hammurapi.biz">email support</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td></td>
          </tr>
        </table>
      </subsection>

      <subsection name="Version_Tool">
        <p>A versioning tool for Ant.</p>
        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/antversiontool">project site</a>
        shows, the last update was on <b>Feb 19 2004</b>.</i> (jhm)</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://ant.ryangrier.com/">http://ant.ryangrier.com/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:version_tool@ryangrier.com">version_tool@ryangrier.com</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>BSD license</td>
          </tr>
        </table>
      </subsection>

      <subsection name="VPP">

        <p>VPP provides general file preprocessing support based on
        the Velocity Template Engine.  The core functionality is
        provided as a filter for use with tasks that supports filter
        chains.  Also included are replacement tasks for &lt;copy&gt; and
        &lt;javac&gt; that integrate support for preprocessing.</p>

        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/vpp/">project site</a>
        shows, the last update was on <b>May 06 2004</b>.</i> (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>1.5.1 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://vpp.sourceforge.net/">http://vpp.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:vpp-user@lists.sourceforge.net">vpp-user@lists.sourceforge.net</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>BSD license</td>
          </tr>
        </table>
      </subsection>

      <subsection name="WOProject">

        <p>WOProject provides a set of tools to work with
        <a href="http://webobjects.com/">WebObjects 5.1</a>
        independent from platform and IDE. It significantly
        improves developer productivity
        and makes complex project structures more flexible compared to
        traditional Makefile-based approach.
        </p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://objectstyle.org/woproject/">http://objectstyle.org/woproject/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:andrus@objectstyle.org">Andrus Adamchik</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache license</td>
          </tr>
        </table>
      </subsection>

      <subsection name="WSDLValidate">
        <p>WSDLValidate is, as it sounds, a tool to validate WSDL files.<ul>
          <li><a href="http://wiki.eclipse.org/index.php/WSDL_Validator">Overview</a></li>
          <li><a href="http://wiki.eclipse.org/Using_the_WSDL_Validator_Outside_of_Eclipse">Using the WSDL Validator Outside of Eclipse</a></li>
        </ul></p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 or later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.eclipse.org/webtools/">http://www.eclipse.org/webtools/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www.eclipse.org/webtools/">Project newsgroup and mailing list</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td><a href="http://www-124.ibm.com/developerworks/oss/CPLv1.0.htm">Common Public
            License (CPL)</a></td>
          </tr>
        </table>
      </subsection>

      <subsection name="Xcluder">
        <p>xcluder is an XML Inclusions (XInclude) task for Apache Ant.
        Offers the choice of using Xerces or Elliotte Rusty Harold's XOM API.
        </p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 or later. XInclude compliance depends on the
            underlying Xerces or XOM used. Xerces 2.5.0 and above works fine,
            but please note that 2.6.1 and 2.6.2 processed the
            http://www.w3.org/2003/XInclude, now obsolete by
            http://www.w3.org/2001/XInclude used by the latest
            Candidate Recommendation (13 April 2004).
            </td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://sourceforge.net/projects/xcluder">http://sourceforge.net/projects/xcluder</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:mbatsis@users.sf.net">mbatsis@users.sf.net</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License (GPL), GNU Library or Lesser
            General Public License (LGPL)
            </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 class="externals">
          <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>

      <subsection name="XInclude">
        <p><a href="http://www.jeckle.de/freeStuff/xia/index.html">XInclude</a> is
          a W3C standardized vocabulary for including arbitrary text or XML
          documents in other XML documents. This task performes the inclusion
          using an existing XInclude implementation</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5.2</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="http://www.jeckle.de/freeStuff/xia/index.html">http://www.jeckle.de/freeStuff/xia/index.html</a>
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:mario@jeckle.de">mario@jeckle.de</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Lesser GNU Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="XML Directory Listing Ant Task">

        <p>The XML Directory Listing task can recurse through a directory structure and produce an 
        XML representation. The resulting file can then be transformed further with Ant. </p>
        <p>The XML output is configurable through various options. The SAX parsing is fast and has a 
        low memory footprint.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6.5 or higher</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://code.google.com/p/xml-dir-listing/">http://code.google.com/p/xml-dir-listing/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:matt_at_matthaynes_dot_net">M. Haynes</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>      
	  </subsection>

      <subsection name="XMLReleaseNotes (XRN)">

        <p>This framework is a release notes framework that enables to
        generate textual release notes from an XML file. This is an
        open framework that enables to integrate the information
        coming from VSC and bug tracking solutions, for instance.</p>

        <p>Note: <i>As the Sourceforge <a href="http://sourceforge.net/projects/xmlreleasenotes">project site</a>
        shows, the last update was on <b>Sep 04 2005</b>.</i> (jhm)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://xmlreleasenotes.free.fr/">http://xmlreleasenotes.free.fr/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>Edouard Mercier</td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="XmlTask">

        <p>XmlTask provides a simple means to modify XML documents
        without having to learn XSLT. A simple path reference to an
        XML node specifies the node you want to change, and how you
        want to allow XML insertion and removal, or attribute
        changes. The emphasis is on providing the simplest means to
        perform common XML replacements</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.oopsconsultancy.com/software/xmltask/">http://www.oopsconsultancy.com/software/xmltask/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:xmltask-users@lists.sourceforge.net">xmltask-users at lists.sourceforge.net</a> </td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache Software License 1.1</td>
          </tr>
        </table>
      </subsection>

      <subsection name="yGuard">

        <p>yGuard is a free Java(TM) Bytecode Obfuscator Task that
        needs no external script or project files. It can completely
        be configured and run through the Ant build script. The task
        supports multiple Jar files at once and makes use of
        patternsets and regular expressions to specify elements, which
        should be left unobfuscated.  Additionally it can be used to
        produce patches for obfuscated applications that have already
        been deployed.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.yworks.com/en/products_yguard_about.htm">http://www.yworks.com/en/products_yguard_about.htm</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:yguard@yworks.com">yGuard@yWorks.com</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Library: LGPL, Task: Commercial</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Zelix KlassMaster">

        <p>The task ZKMTask allows the Zelix KlassMaster Java obfuscator to be integrated into an Ant build.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4.1 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.zelix.com/klassmaster/docs/buildToolApi.html">http://www.zelix.com/klassmaster/docs/buildToolApi.html</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial</td>
          </tr>
        </table>
      </subsection>

    </section>



    <section name="Build Listeners">

      <subsection name="AntUtility">

        <p>
          Wondering why your Ant build is slow? Is your continuous integration server taking too 
          long to produce your project builds? This project may help. This project includes a small 
          number of classes for use with Ant that can help you to analyze your build in a 
          non-intrusive manner.
        </p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="https://antutility.dev.java.net/">https://antutility.dev.java.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:dgreen@dev.java.net">David Green</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
            License 2.0</a></td>
          </tr>
        </table>
      </subsection>
    </section>



    <section name="Compiler Implementations">

      <subsection name="Generics (JSR14) Early-Access Compiler Adapter">

        <p>This is an Ant compiler-adapter that allows you to use the
        normal <code>&lt;javac&gt;</code> task plus Sun's early-access
        compiler to compile Generics-enabled Java code.  (This is only
        necessary until JDK1.5 is released.)</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.madbean.com/blog/3/">http://www.madbean.com/blog/3/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>Matt Quail &lt;spud[at]madbean[dot]com&gt;</td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Public Domain</td>
          </tr>
        </table>
      </subsection>

      <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 class="externals">
          <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 class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>bundles Ant 1.5</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>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="AntRunner">

        <p>An OpenTool that integrates Ant into the JBuilder IDE
        (version 5 and later).</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.2 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://antrunner.sourceforge.net/">http://antrunner.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:dirk.schnelle@web.de">Dirk Schnelle</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="CAPlex">
        <p>CA Plex is an architected RAD tool that combines the techniques of
        model-driven development, code generation and patterns to create
        business applications for multiple platforms, including Java, .NET and
        IBM System i. In its 6.0 release, CA Plex includes integrated support
        for building generated Java code with Ant.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6.5</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://wiki.plexinfo.net/index.php?title=Customizing_Plex_6.0_ANT_builds">http://wiki.plexinfo.net/index.php?title=Customizing_Plex_6.0_ANT_builds</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://www.ca.com/us/products/product.aspx?ID=258">http://www.ca.com/us/products/product.aspx?ID=258</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Eclipse">

        <p>Eclipse is a universal tool platform with Ant integration.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>
              Ant 1.3 and higher <br/>
              Bundles Ant 1.6.2 as of Eclipse 3.0.1 (tested with Ant 1.5.4 - 1.6.2) <br/>
              Eclipse 3.2 bundles Ant 1.6.5 <br/>
              Eclipse 3.3 bundles Ant 1.7.0 
            </td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="http://www.eclipse.org/">http://www.eclipse.org/</a>
              or
              <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-ant-home/index.html">
                http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-ant-home/index.html
              </a>
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="news://news.eclipse.org/eclipse.platform">news://news.eclipse.org/eclipse.platform</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Common Public License Version 1.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Gel">

        <p>Java IDE with support for Ant.  Gel is a native Microsoft Windows software.</p>
        <p>Note: The website recommends using another IDE because GEL is not longer maintained.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.4 and above</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.gexperts.com/products/gel/gel.asp">http://www.gexperts.com/products/gel/gel.asp</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://groups.yahoo.com/group/gelide/">Project Mailing List</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Freeware</td>
          </tr>
        </table>
      </subsection>


      <subsection name="IntelliJ IDEA">
      <p>Java IDE with refactoring support and Ant integration.
      The IDE has special editing and navigation support for Ant.
      </p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>bundles Ant 1.6.5</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; Academic and OpenSource licenses available.</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JBuilder">

        <p>Embarcadero JBuilder comes (as Eclipse based product) with built-in Ant support.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Bundles Ant 1.6</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.codegear.com/en/products/jbuilder">http://www.codegear.com/en/products/jbuilder</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://support.codegear.com/en">http://support.codegear.com/en</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial; Turbo JBuilder 2007 is free.</td>
          </tr>
        </table>
      </subsection>

      <subsection name="JDEE">

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

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.2 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://jdee.sourceforge.net/">http://jdee.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://jdee.sourceforge.net/developerscorner.html#MailingLists">JDEE Mailing list.</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="NetBeans">

        <p>NetBeans IDE includes integrated Ant support.
        This IDE uses Ant as its primary means of building applications,
        with custom tasks and an Ant-aware editor.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>bundles 1.8.0 starting with NetBeans 6.9; 1.8.1 for 6.9.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.netbeans.org/">http://www.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>Common Development and Distribution License / GNU General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Optistic IDX Java IDE">
        <p>Java IDE with deep Ant integration. IDX is a native Microsoft Windows program.</p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>bundles Ant 1.6</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="http://www.optistic.com/idx">http://optistic.com/idx</a>
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>
              <a href="mailto:support@optistic.com">support@optistic.com</a>
            </td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial; Academic and OpenSource licenses available.</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Oracle JDeveloper 10i">

        <p>Java IDE with support for Ant.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.oracle.com/technology/products/jdev/index.html">http://www.oracle.com/technology/products/jdev/index.html</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://forums.oracle.com/forums/forum.jspa?forumID=83">JDeveloper Forum</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Virtual Ant">
        <p>
          Instead of manually creating build scripts in XML, Virtual Ant provides a fully virtual file system
          where you can run your tasks in real time and see the results. Everything that you do is recorded and
          turned into an Ant build script.
        </p>
        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>
              Ant 1.6.5 onwards
            </td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
              <a href="http://www.placidsystems.com/virtualant/">http://www.placidsystems.com/virtualant/</a>
            </td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td>
              <a href="mailto:support@placidsystems.com">support@placidsystems.com</a>
            </td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial; OpenSource licenses available too.</td>
          </tr>
        </table>
      </subsection>

      <subsection name="WebSphere Studio Application Developer">

        <p>WSAD features Ant integrate by virtue of being built on the Eclipse tools platform.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>bundles Ant 1.4.1</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td>
            <a href="http://www.ibm.com/developerworks/websphere/">http://www.ibm.com/developerworks/websphere/</a>
            </td>
          </tr>
          <tr>
            <th>Article:</th>
            <td>Using Ant with WebSphere Studio Application Developer<ul>
              <li><a href="http://www-128.ibm.com/developerworks/websphere/library/techarticles/0203_searle/searle1.html">Part 1</a></li>
              <li><a href="http://www-128.ibm.com/developerworks/websphere/library/techarticles/0203_searle/searle2.html">Part 2</a></li>
              <li><a href="http://www-128.ibm.com/developerworks/websphere/library/techarticles/0203_searle/searle3.html">Part 3</a></li>
            </ul></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Commercial</td>
          </tr>
        </table>
      </subsection>

    </section>



    <section name="Source Control Systems">
      <p>There are several integration with SCM systems. Some are
      <a href="manual/tasksoverview.html#scm">built in</a>. But some are available as
      external libraries. Here a list of task libraries we are aware of:</p>

      <subsection name="ANT4HG">

         <p>These are tasks that allow users to access Mercurial
         functionality from within Ant build scripts.</p>

         <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.7 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://ant4hg.free.fr">http://ant4hg.free.fr</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:ant4hg@free.fr">ant4hg@free.fr</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU Lesser General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="clearAntLib">

         <p>This library is a collection of "value-add" Ant tasks for integrating 
         IBM Rational ClearCase with Apache Ant. The integration makes full use 
         of the power and capabilities of Ant, with support for nested elements 
         (such as filesets) and also supports conditions. There are a number of 
         tasks for creating XML reports on both ClearCase baselines and labels as 
         well as a task for "staging" ClearCase objects.</p>

         <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.6.1 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://clearantlib.sourceforge.net/">
            http://clearantlib.sourceforge.net/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://sourceforge.net/forum/?group_id=123764">Forum</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Surround SCM">

         <p>These are tasks that allow users to access Surround SCM
         functionality from within Ant build scripts.</p>

         <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.5 and later</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://www.seapine.com/scmresources.php#integration">
            Surround SCM Resource Center</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="mailto:support@seapine.com">Seapine Support</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>GNU Lesser General Public License</td>
          </tr>
        </table>
      </subsection>

      <subsection name="SvnAnt">

         <p>SvnAnt is an ant task that provides an interface to Subversion revision control system
         that is a compelling replacement for CVS in the open source community.</p>

         <table class="externals">
          <tr>
            <th>URL:</th>
            <td><a href="http://subclipse.tigris.org/svnant.html">
             Subclipse .: :. SvnAnt .: :. SvnClientAdapter</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://subclipse.tigris.org/servlets/ProjectProcess?pageID=t65B1R">subclipse: Issues and Help</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td><a href="http://www.eclipse.org/legal/epl-v10.html">Eclipse Public License (EPL) 1.0</a></td>
          </tr>
        </table>
      </subsection>

     <subsection name="Svn4Ant">

         <p>JWare/AntXtras Svn4Ant (Svn4Ant) is a complete set of native Ant tasks for managing Subversion working copies, 
         exported directories, and repositories from a build, test, or deployment environment. 
         Immodestly, Svn4Ant’s goal is to be the best provider of Subversion Ant components.</p>

         <table class="externals">
          <tr>
            <th>URL:</th>
            <td><a href="http://jwaresoftware.org/wiki/svn4ant/home">
             Svn4Ant</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://jwaresoftware.org/wiki/general/support">Support - JWare Free Software</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td><a href="http://jwaresoftware.org/wiki-include/svn4ant/latest/LICENSE.txt">LGPL 2.1</a></td>
          </tr>
        </table>
      </subsection>

    </section>

    <section name="Loggers">
      <subsection name="AntStatistics">

        <p><a href="http://code.google.com/p/antstatistics/">AntStatistics</a> logs execution times for
        all build targets and displays them at the end of the build. Furthermore execution times of
        past builds are collected and graphed in a chart.</p>

        <table class="externals">
          <tr>
            <th>Compatibility:</th>
            <td>Ant 1.3</td>
          </tr>
          <tr>
            <th>URL:</th>
            <td><a href="http://code.google.com/p/antstatistics/">http://code.google.com/p/antstatistics/</a></td>
          </tr>
          <tr>
            <th>Contact:</th>
            <td><a href="http://code.google.com/p/antstatistics/issues/list">issue tracker</a></td>
          </tr>
          <tr>
            <th>License:</th>
            <td>Apache License 2.0</td>
          </tr>
        </table>
      </subsection>
    </section>
  </body>
</document>
