<?xml version="1.0" encoding="UTF-8"?>
<tasks>
<task name="ant" category="control"
      classname="org.apache.tools.ant.taskdefs.Ant"
      >

  <short-description><![CDATA[Build a sub-project.]]></short-description>
  <description>
    <![CDATA[Build a sub-project.

  <pre>
  &lt;target name=&quot;foo&quot; depends=&quot;init&quot;&gt;
    &lt;ant antfile=&quot;build.xml&quot; target=&quot;bar&quot; &gt;
      &lt;property name=&quot;property1&quot; value=&quot;aaaaa&quot; /&gt;
      &lt;property name=&quot;foo&quot; value=&quot;baz&quot; /&gt;
    &lt;/ant&gt;</SPAN>
  &lt;/target&gt;</SPAN>

  &lt;target name=&quot;bar&quot; depends=&quot;init&quot;&gt;
    &lt;echo message=&quot;prop is ${property1} ${foo}&quot; /&gt;
  &lt;/target&gt;
 </pre>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="antfile" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The buildfile to use.]]></short-description>
        <description><![CDATA[
          The buildfile to use.
 Defaults to "build.xml". This file is expected to be a filename relative
 to the dir attribute given.
        ]]></description>
      </attribute>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory to use as a base directory for the new Ant project.]]></short-description>
        <description><![CDATA[
          The directory to use as a base directory for the new Ant project.
 Defaults to the current project's basedir, unless inheritall
 has been set to false, in which case it doesn't have a default
 value. This will override the basedir setting of the called project.
        ]]></description>
      </attribute>
      <attribute name="inheritall" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, pass all properties to the new Ant project.]]></short-description>
        <description><![CDATA[
          If true, pass all properties to the new Ant project.
 Defaults to true.
        ]]></description>
      </attribute>
      <attribute name="inheritrefs" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, pass all references to the new Ant project.]]></short-description>
        <description><![CDATA[
          If true, pass all references to the new Ant project.
 Defaults to false.
        ]]></description>
      </attribute>
      <attribute name="output" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Filename to write the output to.]]></short-description>
        <description><![CDATA[
          Filename to write the output to.
 This is relative to the value of the dir attribute
 if it has been set or to the base directory of the
 current project otherwise.
        ]]></description>
      </attribute>
      <attribute name="target" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The target of the new Ant project to execute.]]></short-description>
        <description><![CDATA[
          The target of the new Ant project to execute.
 Defaults to the new project's default target.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="reference" type="org.apache.tools.ant.taskdefs.Ant.Reference"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Reference element identifying a data type to carry
 over to the new project.]]></short-description>
        <description>
          <![CDATA[Reference element identifying a data type to carry
 over to the new project.]]>
        </description>
      </element>

      <element name="property" type="org.apache.tools.ant.taskdefs.Property"
               briefType="see &lt;property&gt;"
               required="NOTDEFINED">
        <short-description><![CDATA[Property to pass to the new project.]]></short-description>
        <description>
          <![CDATA[Property to pass to the new project.
 The property is passed as a 'user property']]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="antcall" category="control"
      classname="org.apache.tools.ant.taskdefs.CallTarget"
      >

  <short-description><![CDATA[Call another target in the same project.]]></short-description>
  <description>
    <![CDATA[Call another target in the same project.

  <pre>
    &lt;target name="foo"&gt;
      &lt;antcall target="bar"&gt;
        &lt;param name="property1" value="aaaaa" /&gt;
        &lt;param name="foo" value="baz" /&gt;
       &lt;/antcall&gt;
    &lt;/target&gt;

    &lt;target name="bar" depends="init"&gt;
      &lt;echo message="prop is ${property1} ${foo}" /&gt;
    &lt;/target&gt;
 </pre>

 <p>This only works as expected if neither property1 nor foo are
 defined in the project itself.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="inheritall" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, pass all properties to the new Ant project.]]></short-description>
        <description><![CDATA[
          If true, pass all properties to the new Ant project.
 Defaults to true.
        ]]></description>
      </attribute>
      <attribute name="inheritrefs" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, pass all references to the new Ant project.]]></short-description>
        <description><![CDATA[
          If true, pass all references to the new Ant project.
 Defaults to false
        ]]></description>
      </attribute>
      <attribute name="target" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Target to execute, required.]]></short-description>
        <description><![CDATA[
          Target to execute, required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="reference" type="org.apache.tools.ant.taskdefs.Ant.Reference"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Reference element identifying a data type to carry
 over to the invoked target.]]></short-description>
        <description>
          <![CDATA[Reference element identifying a data type to carry
 over to the invoked target.]]>
        </description>
      </element>

      <element name="param" type="org.apache.tools.ant.taskdefs.Property"
               briefType="see &lt;property&gt;"
               required="NOTDEFINED">
        <short-description><![CDATA[Property to pass to the invoked target.]]></short-description>
        <description>
          <![CDATA[Property to pass to the invoked target.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="antlr" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ANTLR"
      >

  <short-description><![CDATA[Invokes the ANTLR Translator generator on a grammar file.]]></short-description>
  <description>
    <![CDATA[Invokes the ANTLR Translator generator on a grammar file.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="debug" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to enable ParseView debugging.]]></short-description>
        <description><![CDATA[
          Sets a flag to enable ParseView debugging
        ]]></description>
      </attribute>
      <attribute name="diagnostic" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to emit diagnostic text.]]></short-description>
        <description><![CDATA[
          Sets a flag to emit diagnostic text
        ]]></description>
      </attribute>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The working directory of the process.]]></short-description>
        <description><![CDATA[
          The working directory of the process
        ]]></description>
      </attribute>
      <attribute name="glib" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Sets an optional super grammar file.]]></short-description>
        <description><![CDATA[
          Sets an optional super grammar file.
        ]]></description>
      </attribute>
      <attribute name="html" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, emit html.]]></short-description>
        <description><![CDATA[
          If true, emit html
        ]]></description>
      </attribute>
      <attribute name="outputdirectory" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory to write the generated files to.]]></short-description>
        <description><![CDATA[
          The directory to write the generated files to.
        ]]></description>
      </attribute>
      <attribute name="target" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The grammar file to process.]]></short-description>
        <description><![CDATA[
          The grammar file to process.
        ]]></description>
      </attribute>
      <attribute name="trace" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, enables all tracing.]]></short-description>
        <description><![CDATA[
          If true, enables all tracing.
        ]]></description>
      </attribute>
      <attribute name="tracelexer" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, enables lexer tracing.]]></short-description>
        <description><![CDATA[
          If true, enables lexer tracing.
        ]]></description>
      </attribute>
      <attribute name="traceparser" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, enables parser tracing.]]></short-description>
        <description><![CDATA[
          If true, enables parser tracing.
        ]]></description>
      </attribute>
      <attribute name="tracetreewalker" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to allow the user to enable tree walker tracing.]]></short-description>
        <description><![CDATA[
          Sets a flag to allow the user to enable tree walker tracing
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a classpath to be set
 because a directory might be given for Antlr debug.]]></short-description>
        <description>
          <![CDATA[Adds a classpath to be set
 because a directory might be given for Antlr debug.]]>
        </description>
      </element>

      <element name="jvmarg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a new JVM argument.]]></short-description>
        <description>
          <![CDATA[Adds a new JVM argument.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="antstructure" category="xml"
      classname="org.apache.tools.ant.taskdefs.AntStructure"
      >

  <short-description><![CDATA[Creates a partial DTD for Ant from the currently known tasks.]]></short-description>
  <description>
    <![CDATA[Creates a partial DTD for Ant from the currently known tasks.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="output" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The output file.]]></short-description>
        <description><![CDATA[
          The output file.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="apply" category="control"
      classname="org.apache.tools.ant.taskdefs.ExecuteOn"
      >

  <short-description><![CDATA[Executes a given command, supplying a set of files as arguments.]]></short-description>
  <description>
    <![CDATA[Executes a given command, supplying a set of files as arguments.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="append" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether output should be appended to or overwrite an existing file.]]></short-description>
        <description><![CDATA[
          Whether output should be appended to or overwrite an existing file.
 Defaults to false.
        ]]></description>
      </attribute>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory where target files are to be placed.]]></short-description>
        <description><![CDATA[
          The directory where target files are to be placed.
        ]]></description>
      </attribute>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The working directory of the process.]]></short-description>
        <description><![CDATA[
          The working directory of the process.
        ]]></description>
      </attribute>
      <attribute name="executable" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The command to execute.]]></short-description>
        <description><![CDATA[
          The command to execute.
        ]]></description>
      </attribute>
      <attribute name="failifexecutionfails" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Stop the build if program cannot be started.]]></short-description>
        <description><![CDATA[
          Stop the build if program cannot be started. Defaults to true.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Fail if the command exits with a non-zero return code.]]></short-description>
        <description><![CDATA[
          Fail if the command exits with a non-zero return code.
        ]]></description>
      </attribute>
      <attribute name="newenvironment" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Do not propagate old environment when new environment variables are specified.]]></short-description>
        <description><![CDATA[
          Do not propagate old environment when new environment variables are specified.
        ]]></description>
      </attribute>
      <attribute name="os" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[List of operating systems on which the command may be executed.]]></short-description>
        <description><![CDATA[
          List of operating systems on which the command may be executed.
        ]]></description>
      </attribute>
      <attribute name="output" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File the output of the process is redirected to.]]></short-description>
        <description><![CDATA[
          File the output of the process is redirected to.
        ]]></description>
      </attribute>
      <attribute name="outputproperty" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Property name whose value should be set to the output of
 the process.]]></short-description>
        <description><![CDATA[
          Property name whose value should be set to the output of
 the process.
        ]]></description>
      </attribute>
      <attribute name="parallel" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, run the command only once, appending all files as arguments.]]></short-description>
        <description><![CDATA[
          If true, run the command only once, appending all files as arguments.
 If false, command will be executed once for every file. Defaults to false.
        ]]></description>
      </attribute>
      <attribute name="relative" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether the filenames should be passed on the command line as
 absolute or relative pathnames.]]></short-description>
        <description><![CDATA[
          Whether the filenames should be passed on the command line as
 absolute or relative pathnames. Paths are relative to the base
 directory of the corresponding fileset for source files or the
 dest attribute for target files.
        ]]></description>
      </attribute>
      <attribute name="resultproperty" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of a property in which the return code of the
 command should be stored.]]></short-description>
        <description><![CDATA[
          The name of a property in which the return code of the
 command should be stored. Only of interest if failonerror=false.
        ]]></description>
      </attribute>
      <attribute name="skipemptyfilesets" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If no source files have been found or are newer than their
 corresponding target files, do not run the command.]]></short-description>
        <description><![CDATA[
          If no source files have been found or are newer than their
 corresponding target files, do not run the command.
        ]]></description>
      </attribute>
      <attribute name="type" type="org.apache.tools.ant.taskdefs.ExecuteOn.FileDirBoth"
                 briefType="&quot;file&quot;, &quot;dir&quot;, &quot;both&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Whether the command works only on files, directories or both?.]]></short-description>
        <description><![CDATA[
          Whether the command works only on files, directories or both?
        ]]></description>
      </attribute>
      <attribute name="vmlauncher" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, launch new process with VM, otherwise use the OS's shell.]]></short-description>
        <description><![CDATA[
          If true, launch new process with VM, otherwise use the OS's shell.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="env" type="org.apache.tools.ant.types.Environment.Variable"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an environment variable to the launched process.]]></short-description>
        <description>
          <![CDATA[Add an environment variable to the launched process.]]>
        </description>
      </element>

      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Source files to operate upon.]]></short-description>
        <description>
          <![CDATA[Source files to operate upon.]]>
        </description>
      </element>

      <element name="arg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a command-line argument.]]></short-description>
        <description>
          <![CDATA[Adds a command-line argument.]]>
        </description>
      </element>

      <element name="mapper" type="org.apache.tools.ant.types.Mapper"
               briefType="Mapper"
               required="NOTDEFINED">
        <short-description><![CDATA[Mapper to use for mapping source files to target files.]]></short-description>
        <description>
          <![CDATA[Mapper to use for mapping source files to target files.]]>
        </description>
      </element>

      <element name="srcfile" type="org.apache.tools.ant.types.Commandline.Marker"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Marker that indicates where the name of the source file should
 be put on the command line.]]></short-description>
        <description>
          <![CDATA[Marker that indicates where the name of the source file should
 be put on the command line.]]>
        </description>
      </element>

      <element name="targetfile" type="org.apache.tools.ant.types.Commandline.Marker"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Marker that indicates where the name of the target file should
 be put on the command line.]]></short-description>
        <description>
          <![CDATA[Marker that indicates where the name of the target file should
 be put on the command line.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="available" category="control"
      classname="org.apache.tools.ant.taskdefs.Available"
      >

  <short-description><![CDATA[Will set the given property if the requested resource is available at runtime.]]></short-description>
  <description>
    <![CDATA[Will set the given property if the requested resource is available at 
 runtime. This task may also be used as a condition by the condition task.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="classname" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Classname of a class which must be available to set the given 
 property.]]></short-description>
        <description><![CDATA[
          Set a classname of a class which must be available to set the given 
 property.
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used when searching for classes and resources.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used when searching for classes and resources.
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Classpath by reference.]]></short-description>
        <description><![CDATA[
          Set the classpath by reference.
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File which must be present in the file system to set the given
 property.]]></short-description>
        <description><![CDATA[
          Set the file which must be present in the file system to set the given
 property.
        ]]></description>
      </attribute>
      <attribute name="filepath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Path to use when looking for a file.]]></short-description>
        <description><![CDATA[
          Set the path to use when looking for a file.
        ]]></description>
      </attribute>
      <attribute name="ignoresystemclasses" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set whether the search for classes should ignore the runtime classes and
 just use the given classpath.]]></short-description>
        <description><![CDATA[
          Set whether the search for classes should ignore the runtime classes and
 just use the given classpath.
        ]]></description>
      </attribute>
      <attribute name="property" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the property which will be set if the particular resource
 is available.]]></short-description>
        <description><![CDATA[
          Set the name of the property which will be set if the particular resource
 is available.
        ]]></description>
      </attribute>
      <attribute name="resource" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of a Java resource which is required to set the property.]]></short-description>
        <description><![CDATA[
          Set the name of a Java resource which is required to set the property.
        ]]></description>
      </attribute>
      <attribute name="type" type="org.apache.tools.ant.taskdefs.Available.FileDir"
                 briefType="&quot;file&quot;, &quot;dir&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Set what type of file is required - either directory or file.]]></short-description>
        <description><![CDATA[
          Set what type of file is required - either directory or file.
        ]]></description>
      </attribute>
      <attribute name="value" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Value to be given to the property if the desired resource is
 available.]]></short-description>
        <description><![CDATA[
          Set the value to be given to the property if the desired resource is
 available.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used when searching for classes and resources.]]></short-description>
        <description>
          <![CDATA[Classpath to be used when searching for classes and resources.]]>
        </description>
      </element>

      <element name="filepath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Path to search for file resources.]]></short-description>
        <description>
          <![CDATA[Path to search for file resources.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="basename" category="property"
      classname="org.apache.tools.ant.taskdefs.Basename"
      >

  <short-description><![CDATA[Sets a property to the base name of a specified file, optionally minus a suffix.]]></short-description>
  <description>
    <![CDATA[Sets a property to the base name of a specified file, optionally minus a
 suffix.

 This task can accept the following attributes:
 <ul>
 <li>file
 <li>property
 <li>suffix
 </ul>
 The <b>file</b> and <b>property</b> attributes are required. The
 <b>suffix</b> attribute can be specified either with or without
 the &quot;.&quot;, and the result will be the same (ie., the
 returned file name will be minus the .suffix).
 <p>
 When this task executes, it will set the specified property to the
 value of the last element in the specified file. If file is a
 directory, the basename will be the last directory element. If file
 is a full-path filename, the basename will be the simple file name.
 If a suffix is specified, and the specified file ends in that suffix,
 the basename will be the simple file name without the suffix.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File or directory to get base name from.]]></short-description>
        <description><![CDATA[
          File or directory to get base name from.
        ]]></description>
      </attribute>
      <attribute name="property" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Property to set base name to.]]></short-description>
        <description><![CDATA[
          Property to set base name to.
        ]]></description>
      </attribute>
      <attribute name="suffix" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Optional suffix to remove from base name.]]></short-description>
        <description><![CDATA[
          Optional suffix to remove from base name.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="blgenclient" category="ejb"
      classname="org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient"
      >

  <short-description><![CDATA[Generates a Borland Application Server 4.5 client JAR using as input the EJB JAR file.]]></short-description>
  <description>
    <![CDATA[Generates a Borland Application Server 4.5 client JAR using as
 input the EJB JAR file.

 Two mode are available: java mode (default) and fork mode. With the fork mode,
 it is impossible to add classpath to the commmand line.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Path to use for classpath.]]></short-description>
        <description><![CDATA[
          Path to use for classpath.
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Reference to existing path, to use as a classpath.]]></short-description>
        <description><![CDATA[
          Reference to existing path, to use as a classpath.
        ]]></description>
      </attribute>
      <attribute name="clientjar" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Client JAR file name.]]></short-description>
        <description><![CDATA[
          Client JAR file name.
        ]]></description>
      </attribute>
      <attribute name="debug" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, turn on the debug mode for each of the Borland tools launched.]]></short-description>
        <description><![CDATA[
          If true, turn on the debug mode for each of the Borland tools launched.
        ]]></description>
      </attribute>
      <attribute name="ejbjar" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[EJB JAR file.]]></short-description>
        <description><![CDATA[
          EJB JAR file.
        ]]></description>
      </attribute>
      <attribute name="mode" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Command launching mode: java or fork.]]></short-description>
        <description><![CDATA[
          Command launching mode: java or fork.
        ]]></description>
      </attribute>
      <attribute name="version" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description><![CDATA[
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds path to the classpath.]]></short-description>
        <description>
          <![CDATA[Adds path to the classpath.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="buildnumber" category="other"
      classname="org.apache.tools.ant.taskdefs.BuildNumber"
      >

  <short-description><![CDATA[Read, increment, and write a build number in a file It will first attempt to read a build number from a file, then set the property "build.number" to the value that was read in (or 0 if no such value).]]></short-description>
  <description>
    <![CDATA[Read, increment, and write a build number in a file
 It will first
 attempt to read a build number from a file, then set the property
 "build.number" to the value that was read in (or 0 if no such value). Then
 it will increment the build number by one and write it back out into the
 file.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file in which the build number is stored.]]></short-description>
        <description><![CDATA[
          The file in which the build number is stored. Defaults to
 "build.number" if not specified.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="bunzip2" category="packaging"
      classname="org.apache.tools.ant.taskdefs.BUnzip2"
      >

  <short-description><![CDATA[Expands a file that has been compressed with the BZIP2 algorithm.]]></short-description>
  <description>
    <![CDATA[Expands a file that has been compressed with the BZIP2
 algorithm. Normally used to compress non-compressed archives such
 as TAR files.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The destination file or directory; optional.]]></short-description>
        <description><![CDATA[
          The destination file or directory; optional.
        ]]></description>
      </attribute>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file to expand; required.]]></short-description>
        <description><![CDATA[
          The file to expand; required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="bzip2" category="packaging"
      classname="org.apache.tools.ant.taskdefs.BZip2"
      >

  <short-description><![CDATA[Compresses a file with the BZIP2 algorithm.]]></short-description>
  <description>
    <![CDATA[Compresses a file with the BZIP2 algorithm. Normally used to compress
 non-compressed archives such as TAR files.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file to compress; required.]]></short-description>
        <description><![CDATA[
          the file to compress; required.
        ]]></description>
      </attribute>
      <attribute name="zipfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The required destination file.]]></short-description>
        <description><![CDATA[
          the required destination file.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="cab" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.Cab"
      matchingTask="true">

  <short-description><![CDATA[Create a CAB archive.]]></short-description>
  <description>
    <![CDATA[Create a CAB archive.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="basedir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Base directory to look in for files to CAB.]]></short-description>
        <description><![CDATA[
          Base directory to look in for files to CAB.
        ]]></description>
      </attribute>
      <attribute name="cabfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The name/location of where to create the .cab file.]]></short-description>
        <description><![CDATA[
          The name/location of where to create the .cab file.
        ]]></description>
      </attribute>
      <attribute name="compress" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, compress the files otherwise only store them.]]></short-description>
        <description><![CDATA[
          If true, compress the files otherwise only store them.
        ]]></description>
      </attribute>
      <attribute name="options" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Sets additional cabarc options that are not supported directly.]]></short-description>
        <description><![CDATA[
          Sets additional cabarc options that are not supported directly.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, display cabarc output.]]></short-description>
        <description><![CDATA[
          If true, display cabarc output.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files to archive.]]></short-description>
        <description>
          <![CDATA[Adds a set of files to archive.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="cccheckin" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.clearcase.CCCheckin"
      >

  <short-description><![CDATA[Performs ClearCase checkin.]]></short-description>
  <description>
    <![CDATA[Performs ClearCase checkin.

 <p>
 The following attributes are interpreted:
 <table border="1">
   <tr>
     <th>Attribute</th>
     <th>Values</th>
     <th>Required</th>
   </tr>
   <tr>
      <td>viewpath</td>
      <td>Path to the ClearCase view file or directory that the command will operate on</td>
      <td>No</td>
   <tr>
   <tr>
      <td>comment</td>
      <td>Specify a comment. Only one of comment or cfile may be used.</td>
      <td>No</td>
   <tr>
   <tr>
      <td>commentfile</td>
      <td>Specify a file containing a comment. Only one of comment or cfile may be used.</td>
      <td>No</td>
   <tr>
   <tr>
      <td>nowarn</td>
      <td>Suppress warning messages</td>
      <td>No</td>
   <tr>
   <tr>
      <td>preservetime</td>
      <td>Preserve the modification time</td>
      <td>No</td>
   <tr>
   <tr>
      <td>keepcopy</td>
      <td>Keeps a copy of the file with a .keep extension</td>
      <td>No</td>
   <tr>
   <tr>
      <td>identical</td>
      <td>Allows the file to be checked in even if it is identical to the original</td>
      <td>No</td>
   <tr>
 </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="cleartooldir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where the cleartool executable is located.]]></short-description>
        <description><![CDATA[
          Set the directory where the cleartool executable is located.
        ]]></description>
      </attribute>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Comment string.]]></short-description>
        <description><![CDATA[
          Sets the comment string.
        ]]></description>
      </attribute>
      <attribute name="commentfile" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies a file containing a comment.]]></short-description>
        <description><![CDATA[
          Specifies a file containing a comment.
        ]]></description>
      </attribute>
      <attribute name="identical" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, allows the file to be checked in even
 if it is identical to the original.]]></short-description>
        <description><![CDATA[
          If true, allows the file to be checked in even
 if it is identical to the original.
        ]]></description>
      </attribute>
      <attribute name="keepcopy" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, keeps a copy of the file with a .keep extension.]]></short-description>
        <description><![CDATA[
          If true, keeps a copy of the file with a .keep extension.
        ]]></description>
      </attribute>
      <attribute name="nowarn" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, suppress warning messages.]]></short-description>
        <description><![CDATA[
          If true, suppress warning messages.
        ]]></description>
      </attribute>
      <attribute name="preservetime" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, preserve the modification time.]]></short-description>
        <description><![CDATA[
          If true, preserve the modification time.
        ]]></description>
      </attribute>
      <attribute name="viewpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Path to the item in a ClearCase view to operate on.]]></short-description>
        <description><![CDATA[
          Set the path to the item in a ClearCase view to operate on.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="cccheckout" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.clearcase.CCCheckout"
      >

  <short-description><![CDATA[Performs ClearCase checkout.]]></short-description>
  <description>
    <![CDATA[Performs ClearCase checkout.

 <p>
 The following attributes are interpretted:
 <table border="1">
   <tr>
     <th>Attribute</th>
     <th>Values</th>
     <th>Required</th>
   </tr>
   <tr>
      <td>viewpath</td>
      <td>Path to the ClearCase view file or directory that the command will operate on</td>
      <td>No</td>
   <tr>
   <tr>
      <td>reserved</td>
      <td>Specifies whether to check out the file as reserved or not</td>
      <td>Yes</td>
   <tr>
   <tr>
      <td>out</td>
      <td>Creates a writable file under a different filename</td>
      <td>No</td>
   <tr>
   <tr>
      <td>nodata</td>
      <td>Checks out the file but does not create an editable file containing its data</td>
      <td>No</td>
   <tr>
   <tr>
      <td>branch</td>
      <td>Specify a branch to check out the file to</td>
      <td>No</td>
   <tr>
   <tr>
      <td>version</td>
      <td>Allows checkout of a version other than main latest</td>
      <td>No</td>
   <tr>
   <tr>
      <td>nowarn</td>
      <td>Suppress warning messages</td>
      <td>No</td>
   <tr>
   <tr>
      <td>comment</td>
      <td>Specify a comment. Only one of comment or cfile may be used.</td>
      <td>No</td>
   <tr>
   <tr>
      <td>commentfile</td>
      <td>Specify a file containing a comment. Only one of comment or cfile may be used.</td>
      <td>No</td>
   <tr>
 </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="branch" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specify a branch to check out the file to.]]></short-description>
        <description><![CDATA[
          Specify a branch to check out the file to.
        ]]></description>
      </attribute>
      <attribute name="cleartooldir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where the cleartool executable is located.]]></short-description>
        <description><![CDATA[
          Set the directory where the cleartool executable is located.
        ]]></description>
      </attribute>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Comment string.]]></short-description>
        <description><![CDATA[
          Sets the comment string.
        ]]></description>
      </attribute>
      <attribute name="commentfile" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies a file containing a comment.]]></short-description>
        <description><![CDATA[
          Specifies a file containing a comment.
        ]]></description>
      </attribute>
      <attribute name="nodata" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, checks out the file but does not create an
 editable file containing its data.]]></short-description>
        <description><![CDATA[
          If true, checks out the file but does not create an
 editable file containing its data.
        ]]></description>
      </attribute>
      <attribute name="nowarn" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, warning messages are suppressed.]]></short-description>
        <description><![CDATA[
          If true, warning messages are suppressed.
        ]]></description>
      </attribute>
      <attribute name="out" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Creates a writable file under a different filename.]]></short-description>
        <description><![CDATA[
          Creates a writable file under a different filename.
        ]]></description>
      </attribute>
      <attribute name="reserved" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, checks out the file as reserved.]]></short-description>
        <description><![CDATA[
          If true, checks out the file as reserved.
        ]]></description>
      </attribute>
      <attribute name="version" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, allows checkout of a version other than main latest.]]></short-description>
        <description><![CDATA[
          If true, allows checkout of a version other than main latest.
        ]]></description>
      </attribute>
      <attribute name="viewpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Path to the item in a ClearCase view to operate on.]]></short-description>
        <description><![CDATA[
          Set the path to the item in a ClearCase view to operate on.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="ccmcheckin" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ccm.CCMCheckin"
      >

  <short-description><![CDATA[Performs Continuus checkin command.]]></short-description>
  <description>
    <![CDATA[Performs Continuus checkin command.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="ccmdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where the ccm executable is located.]]></short-description>
        <description><![CDATA[
          Set the directory where the ccm executable is located.
        ]]></description>
      </attribute>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies a comment.]]></short-description>
        <description><![CDATA[
          Specifies a comment.
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Path to the file that the command will operate on.]]></short-description>
        <description><![CDATA[
          Sets the path to the file that the command will operate on.
        ]]></description>
      </attribute>
      <attribute name="task" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the task number used to check
 in the file (may use 'default').]]></short-description>
        <description><![CDATA[
          Specifies the task number used to check
 in the file (may use 'default').
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="ccmcheckintask" category="scm"
      classname="org.apache.tools.ant.taskdefs.optional.ccm.CCMCheckinDefault"
      >

  <short-description><![CDATA[Performs Continuus Checkin Default task command.]]></short-description>
  <description>
    <![CDATA[Performs Continuus Checkin Default task command.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="ccmdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where the ccm executable is located.]]></short-description>
        <description><![CDATA[
          Set the directory where the ccm executable is located.
        ]]></description>
      </attribute>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies a comment.]]></short-description>
        <description><![CDATA[
          Specifies a comment.
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Path to the file that the command will operate on.]]></short-description>
        <description><![CDATA[
          Sets the path to the file that the command will operate on.
        ]]></description>
      </attribute>
      <attribute name="task" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the task number used to check
 in the file (may use 'default').]]></short-description>
        <description><![CDATA[
          Specifies the task number used to check
 in the file (may use 'default').
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="ccmcheckout" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ccm.CCMCheckout"
      >

  <short-description><![CDATA[Performs Continuus checkout command.]]></short-description>
  <description>
    <![CDATA[Performs Continuus checkout command.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="ccmdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where the ccm executable is located.]]></short-description>
        <description><![CDATA[
          Set the directory where the ccm executable is located.
        ]]></description>
      </attribute>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies a comment.]]></short-description>
        <description><![CDATA[
          Specifies a comment.
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Path to the file that the command will operate on.]]></short-description>
        <description><![CDATA[
          Sets the path to the file that the command will operate on.
        ]]></description>
      </attribute>
      <attribute name="task" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the task number used to check
 in the file (may use 'default').]]></short-description>
        <description><![CDATA[
          Specifies the task number used to check
 in the file (may use 'default').
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="ccmcreatetask" category="scm"
      classname="org.apache.tools.ant.taskdefs.optional.ccm.CCMCreateTask"
      >

  <short-description><![CDATA[Creates new Continuus ccm task and sets it as the default.]]></short-description>
  <description>
    <![CDATA[Creates new Continuus ccm task and sets it as the default.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="ccmdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where the ccm executable is located.]]></short-description>
        <description><![CDATA[
          Set the directory where the ccm executable is located.
        ]]></description>
      </attribute>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies a comment.]]></short-description>
        <description><![CDATA[
          Specifies a comment.
        ]]></description>
      </attribute>
      <attribute name="platform" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the target platform.]]></short-description>
        <description><![CDATA[
          Specifies the target platform.
        ]]></description>
      </attribute>
      <attribute name="release" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specify the CCM release.]]></short-description>
        <description><![CDATA[
          Specify the CCM release.
        ]]></description>
      </attribute>
      <attribute name="resolver" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the resolver.]]></short-description>
        <description><![CDATA[
          Specifies the resolver.
        ]]></description>
      </attribute>
      <attribute name="subsystem" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the subsystem.]]></short-description>
        <description><![CDATA[
          Specifies the subsystem.
        ]]></description>
      </attribute>
      <attribute name="task" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the task number used to checkin
 the file (may use 'default').]]></short-description>
        <description><![CDATA[
          Specifies the task number used to checkin
 the file (may use 'default').
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="ccmreconfigure" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ccm.CCMReconfigure"
      >

  <short-description><![CDATA[Task allows to reconfigure a project, recurcively or not]]></short-description>
  <description>
    <![CDATA[Task allows to reconfigure a project, recurcively or not]]>
  </description>

  <structure>

    <attributes>
      <attribute name="ccmdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where the ccm executable is located.]]></short-description>
        <description><![CDATA[
          Set the directory where the ccm executable is located.
        ]]></description>
      </attribute>
      <attribute name="ccmproject" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Ccm project on which the operation is applied.]]></short-description>
        <description><![CDATA[
          Sets the ccm project on which the operation is applied.
        ]]></description>
      </attribute>
      <attribute name="recurse" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, recurse on subproject (default false).]]></short-description>
        <description><![CDATA[
          If true, recurse on subproject (default false).
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, do a verbose reconfigure operation (default false).]]></short-description>
        <description><![CDATA[
          If true, do a verbose reconfigure operation (default false).
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="ccuncheckout" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.clearcase.CCUnCheckout"
      >

  <short-description><![CDATA[Performs ClearCase UnCheckout command.]]></short-description>
  <description>
    <![CDATA[Performs ClearCase UnCheckout command.

 <p>
 The following attributes are interpretted:
 <table border="1">
   <tr>
     <th>Attribute</th>
     <th>Values</th>
     <th>Required</th>
   </tr>
   <tr>
      <td>viewpath</td>
      <td>Path to the ClearCase view file or directory that the command will operate on</td>
      <td>No</td>
   <tr>
   <tr>
      <td>keepcopy</td>
      <td>Specifies whether to keep a copy of the file with a .keep extension or not</td>
      <td>No</td>
   <tr>
 </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="cleartooldir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where the cleartool executable is located.]]></short-description>
        <description><![CDATA[
          Set the directory where the cleartool executable is located.
        ]]></description>
      </attribute>
      <attribute name="keepcopy" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, keep a copy of the file with a .keep extension.]]></short-description>
        <description><![CDATA[
          If true, keep a copy of the file with a .keep extension.
        ]]></description>
      </attribute>
      <attribute name="viewpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Path to the item in a ClearCase view to operate on.]]></short-description>
        <description><![CDATA[
          Set the path to the item in a ClearCase view to operate on.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="ccupdate" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.clearcase.CCUpdate"
      >

  <short-description><![CDATA[Performs a ClearCase Update command.]]></short-description>
  <description>
    <![CDATA[Performs a ClearCase Update command.

 <p>
 The following attributes are interpretted:
 <table border="1">
   <tr>
     <th>Attribute</th>
     <th>Values</th>
     <th>Required</th>
   </tr>
   <tr>
      <td>viewpath</td>
      <td>Path to the ClearCase view file or directory that the command will operate on</td>
      <td>No</td>
   <tr>
   <tr>
      <td>graphical</td>
      <td>Displays a graphical dialog during the update</td>
      <td>No</td>
   <tr>
   <tr>
      <td>log</td>
      <td>Specifies a log file for ClearCase to write to</td>
      <td>No</td>
   <tr>
   <tr>
      <td>overwrite</td>
      <td>Specifies whether to overwrite hijacked files or not</td>
      <td>No</td>
   <tr>
   <tr>
      <td>rename</td>
      <td>Specifies that hijacked files should be renamed with a .keep extension</td>
      <td>No</td>
   <tr>
   <tr>
      <td>currenttime</td>
      <td>Specifies that modification time should be written as the current time. Either currenttime or preservetime can be specified.</td>
      <td>No</td>
   <tr>
   <tr>
      <td>preservetime</td>
      <td>Specifies that modification time should preserved from the VOB time. Either currenttime or preservetime can be specified.</td>
      <td>No</td>
   <tr>
 </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="cleartooldir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where the cleartool executable is located.]]></short-description>
        <description><![CDATA[
          Set the directory where the cleartool executable is located.
        ]]></description>
      </attribute>
      <attribute name="currenttime" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, modification time should be written as the current time.]]></short-description>
        <description><![CDATA[
          If true, modification time should be written as the current time.
 Either currenttime or preservetime can be specified.
        ]]></description>
      </attribute>
      <attribute name="graphical" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, displays a graphical dialog during the update.]]></short-description>
        <description><![CDATA[
          If true, displays a graphical dialog during the update.
        ]]></description>
      </attribute>
      <attribute name="log" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Log file where cleartool records
 the status of the command.]]></short-description>
        <description><![CDATA[
          Sets the log file where cleartool records
 the status of the command.
        ]]></description>
      </attribute>
      <attribute name="overwrite" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, overwrite hijacked files.]]></short-description>
        <description><![CDATA[
          If true, overwrite hijacked files.
        ]]></description>
      </attribute>
      <attribute name="preservetime" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, modification time should be preserved from the VOB time.]]></short-description>
        <description><![CDATA[
          If true, modification time should be preserved from the VOB time.
 Either currenttime or preservetime can be specified.
        ]]></description>
      </attribute>
      <attribute name="rename" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, hijacked files are renamed with a .keep extension.]]></short-description>
        <description><![CDATA[
          If true, hijacked files are renamed with a .keep extension.
        ]]></description>
      </attribute>
      <attribute name="viewpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Path to the item in a ClearCase view to operate on.]]></short-description>
        <description><![CDATA[
          Set the path to the item in a ClearCase view to operate on.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="checksum" category="control"
      classname="org.apache.tools.ant.taskdefs.Checksum"
      matchingTask="true">

  <short-description><![CDATA[Used to create or verify file checksums.]]></short-description>
  <description>
    <![CDATA[Used to create or verify file checksums.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="algorithm" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the algorithm to be used to compute the checksum.]]></short-description>
        <description><![CDATA[
          Specifies the algorithm to be used to compute the checksum.
 Defaults to "MD5". Other popular algorithms like "SHA" may be used as well.
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File for which the checksum is to be calculated.]]></short-description>
        <description><![CDATA[
          Sets the file for which the checksum is to be calculated.
        ]]></description>
      </attribute>
      <attribute name="fileext" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[File extension that is be to used to
 create or identify destination file.]]></short-description>
        <description><![CDATA[
          Sets the file extension that is be to used to
 create or identify destination file.
        ]]></description>
      </attribute>
      <attribute name="forceoverwrite" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether or not to overwrite existing file irrespective of 
 whether it is newer than
 the source file.]]></short-description>
        <description><![CDATA[
          Whether or not to overwrite existing file irrespective of 
 whether it is newer than
 the source file.  Defaults to false.
        ]]></description>
      </attribute>
      <attribute name="property" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Property to hold the generated checksum.]]></short-description>
        <description><![CDATA[
          Sets the property to hold the generated checksum.
        ]]></description>
      </attribute>
      <attribute name="provider" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[MessageDigest algorithm provider to be used
 to calculate the checksum.]]></short-description>
        <description><![CDATA[
          Sets the MessageDigest algorithm provider to be used
 to calculate the checksum.
        ]]></description>
      </attribute>
      <attribute name="readbuffersize" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[The size of the read buffer to use.]]></short-description>
        <description><![CDATA[
          The size of the read buffer to use.
        ]]></description>
      </attribute>
      <attribute name="verifyproperty" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Verify property.]]></short-description>
        <description><![CDATA[
          Sets the verify property.  This project property holds
 the result of a checksum verification - "true" or "false"
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Files to generate checksums for.]]></short-description>
        <description>
          <![CDATA[Files to generate checksums for.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="chmod" category="filesystem"
      classname="org.apache.tools.ant.taskdefs.Chmod"
      >

  <short-description><![CDATA[Chmod equivalent for unix-like environments.]]></short-description>
  <description>
    <![CDATA[Chmod equivalent for unix-like environments.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="append" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether output should be appended to or overwrite an existing file.]]></short-description>
        <description><![CDATA[
          Whether output should be appended to or overwrite an existing file.
 Defaults to false.
        ]]></description>
      </attribute>
      <attribute name="defaultexcludes" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether default exclusions should be used or not.]]></short-description>
        <description><![CDATA[
          Sets whether default exclusions should be used or not.
        ]]></description>
      </attribute>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory where target files are to be placed.]]></short-description>
        <description><![CDATA[
          The directory where target files are to be placed.
        ]]></description>
      </attribute>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory which holds the files whose permissions must be changed.]]></short-description>
        <description><![CDATA[
          The directory which holds the files whose permissions must be changed.
        ]]></description>
      </attribute>
      <attribute name="excludes" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set of exclude patterns.]]></short-description>
        <description><![CDATA[
          Sets the set of exclude patterns. Patterns may be separated by a comma
 or a space.
        ]]></description>
      </attribute>
      <attribute name="executable" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The command to execute.]]></short-description>
        <description><![CDATA[
          The command to execute.
        ]]></description>
      </attribute>
      <attribute name="failifexecutionfails" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Stop the build if program cannot be started.]]></short-description>
        <description><![CDATA[
          Stop the build if program cannot be started. Defaults to true.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Fail if the command exits with a non-zero return code.]]></short-description>
        <description><![CDATA[
          Fail if the command exits with a non-zero return code.
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file or single directory of which the permissions must be changed.]]></short-description>
        <description><![CDATA[
          The file or single directory of which the permissions must be changed.
        ]]></description>
      </attribute>
      <attribute name="includes" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set of include patterns.]]></short-description>
        <description><![CDATA[
          Sets the set of include patterns. Patterns may be separated by a comma
 or a space.
        ]]></description>
      </attribute>
      <attribute name="newenvironment" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Do not propagate old environment when new environment variables are specified.]]></short-description>
        <description><![CDATA[
          Do not propagate old environment when new environment variables are specified.
        ]]></description>
      </attribute>
      <attribute name="os" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[List of operating systems on which the command may be executed.]]></short-description>
        <description><![CDATA[
          List of operating systems on which the command may be executed.
        ]]></description>
      </attribute>
      <attribute name="output" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File the output of the process is redirected to.]]></short-description>
        <description><![CDATA[
          File the output of the process is redirected to.
        ]]></description>
      </attribute>
      <attribute name="outputproperty" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Property name whose value should be set to the output of
 the process.]]></short-description>
        <description><![CDATA[
          Property name whose value should be set to the output of
 the process.
        ]]></description>
      </attribute>
      <attribute name="parallel" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, run the command only once, appending all files as arguments.]]></short-description>
        <description><![CDATA[
          If true, run the command only once, appending all files as arguments.
 If false, command will be executed once for every file. Defaults to false.
        ]]></description>
      </attribute>
      <attribute name="perm" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The new permissions.]]></short-description>
        <description><![CDATA[
          The new permissions.
        ]]></description>
      </attribute>
      <attribute name="relative" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether the filenames should be passed on the command line as
 absolute or relative pathnames.]]></short-description>
        <description><![CDATA[
          Whether the filenames should be passed on the command line as
 absolute or relative pathnames. Paths are relative to the base
 directory of the corresponding fileset for source files or the
 dest attribute for target files.
        ]]></description>
      </attribute>
      <attribute name="resultproperty" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of a property in which the return code of the
 command should be stored.]]></short-description>
        <description><![CDATA[
          The name of a property in which the return code of the
 command should be stored. Only of interest if failonerror=false.
        ]]></description>
      </attribute>
      <attribute name="skipemptyfilesets" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If no source files have been found or are newer than their
 corresponding target files, do not run the command.]]></short-description>
        <description><![CDATA[
          If no source files have been found or are newer than their
 corresponding target files, do not run the command.
        ]]></description>
      </attribute>
      <attribute name="type" type="org.apache.tools.ant.taskdefs.ExecuteOn.FileDirBoth"
                 briefType="&quot;file&quot;, &quot;dir&quot;, &quot;both&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Whether the command works only on files, directories or both?.]]></short-description>
        <description><![CDATA[
          Whether the command works only on files, directories or both?
        ]]></description>
      </attribute>
      <attribute name="vmlauncher" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, launch new process with VM, otherwise use the OS's shell.]]></short-description>
        <description><![CDATA[
          If true, launch new process with VM, otherwise use the OS's shell.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="env" type="org.apache.tools.ant.types.Environment.Variable"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an environment variable to the launched process.]]></short-description>
        <description>
          <![CDATA[Add an environment variable to the launched process.]]>
        </description>
      </element>

      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Source files to operate upon.]]></short-description>
        <description>
          <![CDATA[Source files to operate upon.]]>
        </description>
      </element>

      <element name="arg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a command-line argument.]]></short-description>
        <description>
          <![CDATA[Adds a command-line argument.]]>
        </description>
      </element>

      <element name="exclude" type="org.apache.tools.ant.types.PatternSet.NameEntry"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a name entry on the exclude list.]]></short-description>
        <description>
          <![CDATA[Add a name entry on the exclude list.]]>
        </description>
      </element>

      <element name="include" type="org.apache.tools.ant.types.PatternSet.NameEntry"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a name entry on the include list.]]></short-description>
        <description>
          <![CDATA[Add a name entry on the include list.]]>
        </description>
      </element>

      <element name="mapper" type="org.apache.tools.ant.types.Mapper"
               briefType="Mapper"
               required="NOTDEFINED">
        <short-description><![CDATA[Mapper to use for mapping source files to target files.]]></short-description>
        <description>
          <![CDATA[Mapper to use for mapping source files to target files.]]>
        </description>
      </element>

      <element name="patternset" type="org.apache.tools.ant.types.PatternSet"
               briefType="Patternset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a set of patterns.]]></short-description>
        <description>
          <![CDATA[Add a set of patterns.]]>
        </description>
      </element>

      <element name="srcfile" type="org.apache.tools.ant.types.Commandline.Marker"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Marker that indicates where the name of the source file should
 be put on the command line.]]></short-description>
        <description>
          <![CDATA[Marker that indicates where the name of the source file should
 be put on the command line.]]>
        </description>
      </element>

      <element name="targetfile" type="org.apache.tools.ant.types.Commandline.Marker"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Marker that indicates where the name of the target file should
 be put on the command line.]]></short-description>
        <description>
          <![CDATA[Marker that indicates where the name of the target file should
 be put on the command line.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="concat" category="other"
      classname="org.apache.tools.ant.taskdefs.Concat"
      >

  <short-description><![CDATA[This class contains the 'concat' task, used to concatenate a series of files into a single stream.]]></short-description>
  <description>
    <![CDATA[This class contains the 'concat' task, used to concatenate a series
 of files into a single stream. The destination of this stream may
 be the system console, or a file. The following is a sample
 invocation:

 <pre>
 &lt;concat destfile=&quot;${build.dir}/index.xml&quot;
   append=&quot;false&quot;&gt;

   &lt;fileset dir=&quot;${xml.root.dir}&quot;
     includes=&quot;*.xml&quot; /&gt;

 &lt;/concat&gt;
 </pre>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="append" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Behavior when the destination file exists.]]></short-description>
        <description><![CDATA[
          Sets the behavior when the destination file exists. If set to
 <code>true</code> the stream data will be appended to the
 existing file, otherwise the existing file will be
 overwritten. Defaults to <code>false</code>.
        ]]></description>
      </attribute>
      <attribute name="destfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination file, or uses the console if not specified.]]></short-description>
        <description><![CDATA[
          Sets the destination file, or uses the console if not specified.
        ]]></description>
      </attribute>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Encoding for the input files, used when displaying the
 data via the console.]]></short-description>
        <description><![CDATA[
          Sets the encoding for the input files, used when displaying the
 data via the console.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="filelist" type="org.apache.tools.ant.types.FileList"
               briefType="Filelist"
               required="NOTDEFINED">
        <short-description><![CDATA[List of files to concatenate.]]></short-description>
        <description>
          <![CDATA[List of files to concatenate.]]>
        </description>
      </element>

      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Set of files to concatenate.]]></short-description>
        <description>
          <![CDATA[Set of files to concatenate.]]>
        </description>
      </element>

    </elements>

      <body >
        <description><![CDATA[
          This method adds text which appears in the 'concat' element.
        ]]></description>
      </body>

  </structure>

</task>


<task name="condition" category="control"
      classname="org.apache.tools.ant.taskdefs.ConditionTask"
      >

  <short-description><![CDATA[Task to set a property conditionally using &lt;uptodate&gt;, &lt;available&gt;, and many other supported conditions.]]></short-description>
  <description>
    <![CDATA[Task to set a property conditionally using &lt;uptodate&gt;, &lt;available&gt;,
 and many other supported conditions.

 <p>This task supports boolean logic as well as pluggable conditions
 to decide, whether a property should be set.</p>

 <p>This task does not extend Task to take advantage of
 ConditionBase.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="property" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of the property to set.]]></short-description>
        <description><![CDATA[
          The name of the property to set. Required.
        ]]></description>
      </attribute>
      <attribute name="value" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The value for the property to set, if condition evaluates to true.]]></short-description>
        <description><![CDATA[
          The value for the property to set, if condition evaluates to true.
 Defaults to "true".
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="and" type="org.apache.tools.ant.taskdefs.condition.And"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;and&gt; condition "container".]]></short-description>
        <description>
          <![CDATA[Add an &lt;and&gt; condition "container".]]>
        </description>
      </element>

      <element name="available" type="org.apache.tools.ant.taskdefs.Available"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;available&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;available&gt; condition.]]>
        </description>
      </element>

      <element name="checksum" type="org.apache.tools.ant.taskdefs.Checksum"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;checksum&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;checksum&gt; condition.]]>
        </description>
      </element>

      <element name="contains" type="org.apache.tools.ant.taskdefs.condition.Contains"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a &lt;contains&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add a &lt;contains&gt; condition.]]>
        </description>
      </element>

      <element name="equals" type="org.apache.tools.ant.taskdefs.condition.Equals"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;equals&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;equals&gt; condition.]]>
        </description>
      </element>

      <element name="filesmatch" type="org.apache.tools.ant.taskdefs.condition.FilesMatch"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a &lt;filesmatch&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add a &lt;filesmatch&gt; condition.]]>
        </description>
      </element>

      <element name="http" type="org.apache.tools.ant.taskdefs.condition.Http"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;http&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;http&gt; condition.]]>
        </description>
      </element>

      <element name="isfalse" type="org.apache.tools.ant.taskdefs.condition.IsFalse"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a &lt;isfalse&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add a &lt;isfalse&gt; condition.]]>
        </description>
      </element>

      <element name="isset" type="org.apache.tools.ant.taskdefs.condition.IsSet"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;isset&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;isset&gt; condition.]]>
        </description>
      </element>

      <element name="istrue" type="org.apache.tools.ant.taskdefs.condition.IsTrue"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a &lt;istrue&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add a &lt;istrue&gt; condition.]]>
        </description>
      </element>

      <element name="not" type="org.apache.tools.ant.taskdefs.condition.Not"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;not&gt; condition "container".]]></short-description>
        <description>
          <![CDATA[Add an &lt;not&gt; condition "container".]]>
        </description>
      </element>

      <element name="or" type="org.apache.tools.ant.taskdefs.condition.Or"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;or&gt; condition "container".]]></short-description>
        <description>
          <![CDATA[Add an &lt;or&gt; condition "container".]]>
        </description>
      </element>

      <element name="os" type="org.apache.tools.ant.taskdefs.condition.Os"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;os&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;os&gt; condition.]]>
        </description>
      </element>

      <element name="socket" type="org.apache.tools.ant.taskdefs.condition.Socket"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a &lt;socket&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add a &lt;socket&gt; condition.]]>
        </description>
      </element>

      <element name="uptodate" type="org.apache.tools.ant.taskdefs.UpToDate"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;uptodate&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;uptodate&gt; condition.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="copy" category="filesystem"
      classname="org.apache.tools.ant.taskdefs.Copy"
      >

  <short-description><![CDATA[Copies a file or directory to a new file or directory.]]></short-description>
  <description>
    <![CDATA[Copies a file or directory to a new file
 or directory.  Files are only copied if the source file is newer
 than the destination file, or when the destination file does not
 exist.  It is possible to explicitly overwrite existing files.</p>

 <p>This implementation is based on Arnout Kuiper's initial design
 document, the following mailing list discussions, and the
 copyfile/copydir tasks.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Character encoding.]]></short-description>
        <description><![CDATA[
          Sets the character encoding
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If false, note errors to the output but keep going.]]></short-description>
        <description><![CDATA[
          If false, note errors to the output but keep going.
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Single source file to copy.]]></short-description>
        <description><![CDATA[
          Sets a single source file to copy.
        ]]></description>
      </attribute>
      <attribute name="filtering" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, enables filtering.]]></short-description>
        <description><![CDATA[
          If true, enables filtering.
        ]]></description>
      </attribute>
      <attribute name="flatten" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[When copying directory trees, the files can be "flattened"
 into a single directory.]]></short-description>
        <description><![CDATA[
          When copying directory trees, the files can be "flattened"
 into a single directory.  If there are multiple files with
 the same name in the source directory tree, only the first
 file will be copied into the "flattened" directory, unless
 the forceoverwrite attribute is true.
        ]]></description>
      </attribute>
      <attribute name="includeemptydirs" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Used to copy empty directories.]]></short-description>
        <description><![CDATA[
          Used to copy empty directories.
        ]]></description>
      </attribute>
      <attribute name="overwrite" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Overwrite any existing destination file(s).]]></short-description>
        <description><![CDATA[
          Overwrite any existing destination file(s).
        ]]></description>
      </attribute>
      <attribute name="preservelastmodified" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Give the copied files the same last modified time as the original files.]]></short-description>
        <description><![CDATA[
          Give the copied files the same last modified time as the original files.
        ]]></description>
      </attribute>
      <attribute name="todir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory.]]></short-description>
        <description><![CDATA[
          Sets the destination directory.
        ]]></description>
      </attribute>
      <attribute name="tofile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination file.]]></short-description>
        <description><![CDATA[
          Sets the destination file.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Used to force listing of all names of copied files.]]></short-description>
        <description><![CDATA[
          Used to force listing of all names of copied files.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files to copy.]]></short-description>
        <description>
          <![CDATA[Adds a set of files to copy.]]>
        </description>
      </element>

      <element name="filterchain" type="org.apache.tools.ant.types.FilterChain"
               briefType="FilterChain"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a FilterChain.]]></short-description>
        <description>
          <![CDATA[Adds a FilterChain.]]>
        </description>
      </element>

      <element name="filterset" type="org.apache.tools.ant.types.FilterSet"
               briefType="Filterset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a filterset.]]></short-description>
        <description>
          <![CDATA[Adds a filterset.]]>
        </description>
      </element>

      <element name="mapper" type="org.apache.tools.ant.types.Mapper"
               briefType="Mapper"
               required="NOTDEFINED">
        <short-description><![CDATA[Defines the mapper to map source to destination files.]]></short-description>
        <description>
          <![CDATA[Defines the mapper to map source to destination files.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="copydir" category="other"
      classname="org.apache.tools.ant.taskdefs.Copydir"
      deprecated="true"
      matchingTask="true">

  <short-description><![CDATA[Copies a directory.]]></short-description>
  <description>
    <![CDATA[Copies a directory.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description><![CDATA[
        ]]></description>
      </attribute>
      <attribute name="filtering" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description><![CDATA[
        ]]></description>
      </attribute>
      <attribute name="flatten" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description><![CDATA[
        ]]></description>
      </attribute>
      <attribute name="forceoverwrite" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description><![CDATA[
        ]]></description>
      </attribute>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description><![CDATA[
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="copyfile" category="other"
      classname="org.apache.tools.ant.taskdefs.Copyfile"
      deprecated="true"
      >

  <short-description><![CDATA[Copies a file.]]></short-description>
  <description>
    <![CDATA[Copies a file.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description><![CDATA[
        ]]></description>
      </attribute>
      <attribute name="filtering" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description><![CDATA[
        ]]></description>
      </attribute>
      <attribute name="forceoverwrite" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description><![CDATA[
        ]]></description>
      </attribute>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description><![CDATA[
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="csc" category="dotnet"
      classname="org.apache.tools.ant.taskdefs.optional.dotnet.CSharp"
      matchingTask="true">

  <short-description><![CDATA[Compiles C# source into executables or modules.]]></short-description>
  <description>
    <![CDATA[Compiles C# source into executables or modules.

  The task will only work on win2K until other platforms support
  csc.exe or an equivalent. CSC.exe must be on the execute path too. <p>

  All parameters are optional: &lt;csc/&gt; should suffice to produce a debug
  build of all *.cs files. References to external files do require explicit
  enumeration, so are one of the first attributes to consider adding. <p>

  The task is a directory based task, so attributes like <b>includes="*.cs"
  </b> and <b>excludes="broken.cs"</b> can be used to control the files pulled
  in. By default, all *.cs files from the project folder down are included in
  the command. When this happens the output file -if not specified- is taken
  as the first file in the list, which may be somewhat hard to control.
  Specifying the output file with <b>'outfile'</b> seems prudent. <p>

  <p>

  TODO
  <ol>
    <li> is incremental build still broken in beta-1?
    <li> is Win32Icon broken?
    <li> all the missing options
  </ol>
  <p>

  History
  <Table>

    <tr>

      <td>
        0.3
      </td>

      <td>
        Beta 1 edition
      </td>

      <td>
        To avoid having to remember which assemblies to include, the task
        automatically refers to the main dotnet libraries in Beta1.
      </tr>

      <tr>

        <td>
          0.2
        </td>

        <td>
          Slightly different
        </td>

        <td>
          Split command execution to a separate class;
        </tr>

        <tr>

          <td>
            0.1
          </td>

          <td>
            "I can't believe it's so rudimentary"
          </td>

          <td>
            First pass; minimal builds only support;
          </tr>

        </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="additionalmodules" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Semicolon separated list of modules to refer to.]]></short-description>
        <description><![CDATA[
          Semicolon separated list of modules to refer to.
        ]]></description>
      </attribute>
      <attribute name="debug" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Debug flag on or off.]]></short-description>
        <description><![CDATA[
          set the debug flag on or off.
        ]]></description>
      </attribute>
      <attribute name="definitions" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Semicolon separated list of defined constants.]]></short-description>
        <description><![CDATA[
          Semicolon separated list of defined constants.
        ]]></description>
      </attribute>
      <attribute name="destdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory of files to be compiled.]]></short-description>
        <description><![CDATA[
          Set the destination directory of files to be compiled.
        ]]></description>
      </attribute>
      <attribute name="destfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of exe/library to create.]]></short-description>
        <description><![CDATA[
          Set the name of exe/library to create.
        ]]></description>
      </attribute>
      <attribute name="docfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File for generated XML documentation.]]></short-description>
        <description><![CDATA[
          file for generated XML documentation
        ]]></description>
      </attribute>
      <attribute name="extraoptions" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Any extra options which are not explicitly supported
 by this task.]]></short-description>
        <description><![CDATA[
          Any extra options which are not explicitly supported
 by this task.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, fail on compilation errors.]]></short-description>
        <description><![CDATA[
          If true, fail on compilation errors.
        ]]></description>
      </attribute>
      <attribute name="filealign" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[File alignment.]]></short-description>
        <description><![CDATA[
          Set the file alignment.
 Valid values are 0,512, 1024, 2048, 4096, 8192,
 and 16384, 0 means 'leave to the compiler'
        ]]></description>
      </attribute>
      <attribute name="fullpaths" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, print the full path of files on errors.]]></short-description>
        <description><![CDATA[
          If true, print the full path of files on errors.
        ]]></description>
      </attribute>
      <attribute name="includedefaultreferences" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, automatically includes the common assemblies
 in dotnet, and tells the compiler to link in mscore.dll.

  set the automatic reference inclusion flag on or off this flag controls
  the string of references and the /nostdlib option in CSC.]]></short-description>
        <description><![CDATA[
          If true, automatically includes the common assemblies
 in dotnet, and tells the compiler to link in mscore.dll.

  set the automatic reference inclusion flag on or off this flag controls
  the string of references and the /nostdlib option in CSC
        ]]></description>
      </attribute>
      <attribute name="incremental" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Incremental compilation flag on or off.]]></short-description>
        <description><![CDATA[
          set the incremental compilation flag on or off.
        ]]></description>
      </attribute>
      <attribute name="mainclass" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of main class for executables.]]></short-description>
        <description><![CDATA[
          Sets the name of main class for executables.
        ]]></description>
      </attribute>
      <attribute name="noconfig" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[A flag that tells the compiler not to read in the compiler 
 settings files 'csc.rsp' in its bin directory and then the local directory.]]></short-description>
        <description><![CDATA[
          A flag that tells the compiler not to read in the compiler 
 settings files 'csc.rsp' in its bin directory and then the local directory
        ]]></description>
      </attribute>
      <attribute name="optimize" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, enables optimization flag.]]></short-description>
        <description><![CDATA[
          If true, enables optimization flag.
        ]]></description>
      </attribute>
      <attribute name="outputfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Output file.]]></short-description>
        <description><![CDATA[
          Set the output file
        ]]></description>
      </attribute>
      <attribute name="referencefiles" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Path of references to include.]]></short-description>
        <description><![CDATA[
          Path of references to include.
 Wildcards should work.
        ]]></description>
      </attribute>
      <attribute name="references" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Semicolon separated list of DLLs to refer to.]]></short-description>
        <description><![CDATA[
          Semicolon separated list of DLLs to refer to.
        ]]></description>
      </attribute>
      <attribute name="srcdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Source directory of the files to be compiled.]]></short-description>
        <description><![CDATA[
          Set the source directory of the files to be compiled.
        ]]></description>
      </attribute>
      <attribute name="targettype" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Type of target.]]></short-description>
        <description><![CDATA[
          Set the type of target.
        ]]></description>
      </attribute>
      <attribute name="unsafe" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, enables the unsafe keyword.]]></short-description>
        <description><![CDATA[
          If true, enables the unsafe keyword.
        ]]></description>
      </attribute>
      <attribute name="utf8output" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, require all compiler output to be in UTF8 format.]]></short-description>
        <description><![CDATA[
          If true, require all compiler output to be in UTF8 format.
        ]]></description>
      </attribute>
      <attribute name="warnlevel" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Level of warning currently between 1 and 4
 with 4 being the strictest.]]></short-description>
        <description><![CDATA[
          Level of warning currently between 1 and 4
 with 4 being the strictest.
        ]]></description>
      </attribute>
      <attribute name="win32icon" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Filename of icon to include.]]></short-description>
        <description><![CDATA[
          Set the filename of icon to include.
        ]]></description>
      </attribute>
      <attribute name="win32res" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Filename of a win32 resource (.RES) file to include.]]></short-description>
        <description><![CDATA[
          Sets the filename of a win32 resource (.RES) file to include.
 This is not a .NET resource, but what Windows is used to.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="cvs" category="scm"
      classname="org.apache.tools.ant.taskdefs.Cvs"
      >

  <short-description><![CDATA[Performs operations on a CVS repository. original 1.20 NOTE: This implementation has been moved to AbstractCvsTask with the addition of some accessors for extensibility.]]></short-description>
  <description>
    <![CDATA[Performs operations on a CVS repository.

 original 1.20

  NOTE: This implementation has been moved to AbstractCvsTask with
  the addition of some accessors for extensibility.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="append" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to append output/error when redirecting to a file.]]></short-description>
        <description><![CDATA[
          Whether to append output/error when redirecting to a file.
        ]]></description>
      </attribute>
      <attribute name="command" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The CVS command to execute.]]></short-description>
        <description><![CDATA[
          The CVS command to execute.
        ]]></description>
      </attribute>
      <attribute name="compression" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, this is the same as compressionlevel="3".]]></short-description>
        <description><![CDATA[
          If true, this is the same as compressionlevel="3".
        ]]></description>
      </attribute>
      <attribute name="compressionlevel" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[If set to a value 1-9 it adds -zN to the cvs command line, else
 it disables compression.]]></short-description>
        <description><![CDATA[
          If set to a value 1-9 it adds -zN to the cvs command line, else
 it disables compression.
        ]]></description>
      </attribute>
      <attribute name="cvsroot" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The CVSROOT variable.]]></short-description>
        <description><![CDATA[
          The CVSROOT variable.
        ]]></description>
      </attribute>
      <attribute name="cvsrsh" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The CVS_RSH variable.]]></short-description>
        <description><![CDATA[
          The CVS_RSH variable.
        ]]></description>
      </attribute>
      <attribute name="date" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Use the most recent revision no later than the given date.]]></short-description>
        <description><![CDATA[
          Use the most recent revision no later than the given date.
        ]]></description>
      </attribute>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory where the checked out files should be placed.]]></short-description>
        <description><![CDATA[
          The directory where the checked out files should be placed.
        ]]></description>
      </attribute>
      <attribute name="error" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file to direct standard error from the command.]]></short-description>
        <description><![CDATA[
          The file to direct standard error from the command.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Stop the build process if the command exits with
 a return code other than 0.]]></short-description>
        <description><![CDATA[
          Stop the build process if the command exits with
 a return code other than 0.
 Defaults to false.
        ]]></description>
      </attribute>
      <attribute name="noexec" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, report only and don't change any files.]]></short-description>
        <description><![CDATA[
          If true, report only and don't change any files.
        ]]></description>
      </attribute>
      <attribute name="output" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file to direct standard output from the command.]]></short-description>
        <description><![CDATA[
          The file to direct standard output from the command.
        ]]></description>
      </attribute>
      <attribute name="package" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The package/module to operate upon.]]></short-description>
        <description><![CDATA[
          The package/module to operate upon.
        ]]></description>
      </attribute>
      <attribute name="passfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Password file to read passwords from.]]></short-description>
        <description><![CDATA[
          Password file to read passwords from.
        ]]></description>
      </attribute>
      <attribute name="port" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Port used by CVS to communicate with the server.]]></short-description>
        <description><![CDATA[
          Port used by CVS to communicate with the server.
        ]]></description>
      </attribute>
      <attribute name="quiet" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, suppress informational messages.]]></short-description>
        <description><![CDATA[
          If true, suppress informational messages.
        ]]></description>
      </attribute>
      <attribute name="tag" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The tag of the package/module to operate upon.]]></short-description>
        <description><![CDATA[
          The tag of the package/module to operate upon.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="commandline" type="org.apache.tools.ant.types.Commandline"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds direct command-line to execute.]]></short-description>
        <description>
          <![CDATA[Adds direct command-line to execute.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="cvschangelog" category="other"
      classname="org.apache.tools.ant.taskdefs.cvslib.ChangeLogTask"
      >

  <short-description><![CDATA[Examines the output of cvs log and group related changes together.]]></short-description>
  <description>
    <![CDATA[Examines the output of cvs log and group related changes together.

 It produces an XML output representing the list of changes.
 <PRE>
 <FONT color=#0000ff>&lt;!-- Root element --&gt;</FONT>
 <FONT color=#6a5acd>&lt;!ELEMENT</FONT> changelog <FONT color=#ff00ff>(entry</FONT><FONT color=#ff00ff>+</FONT><FONT color=#ff00ff>)</FONT><FONT color=#6a5acd>&gt;</FONT>
 <FONT color=#0000ff>&lt;!-- CVS Entry --&gt;</FONT>
 <FONT color=#6a5acd>&lt;!ELEMENT</FONT> entry <FONT color=#ff00ff>(date,author,file</FONT><FONT color=#ff00ff>+</FONT><FONT color=#ff00ff>,msg)</FONT><FONT color=#6a5acd>&gt;</FONT>
 <FONT color=#0000ff>&lt;!-- Date of cvs entry --&gt;</FONT>
 <FONT color=#6a5acd>&lt;!ELEMENT</FONT> date <FONT color=#ff00ff>(#PCDATA)</FONT><FONT color=#6a5acd>&gt;</FONT>
 <FONT color=#0000ff>&lt;!-- Author of change --&gt;</FONT>
 <FONT color=#6a5acd>&lt;!ELEMENT</FONT> author <FONT color=#ff00ff>(#PCDATA)</FONT><FONT color=#6a5acd>&gt;</FONT>
 <FONT color=#0000ff>&lt;!-- List of files affected --&gt;</FONT>
 <FONT color=#6a5acd>&lt;!ELEMENT</FONT> msg <FONT color=#ff00ff>(#PCDATA)</FONT><FONT color=#6a5acd>&gt;</FONT>
 <FONT color=#0000ff>&lt;!-- File changed --&gt;</FONT>
 <FONT color=#6a5acd>&lt;!ELEMENT</FONT> file <FONT color=#ff00ff>(name,revision,prevrevision</FONT><FONT color=#ff00ff>?</FONT><FONT color=#ff00ff>)</FONT><FONT color=#6a5acd>&gt;</FONT>
 <FONT color=#0000ff>&lt;!-- Name of the file --&gt;</FONT>
 <FONT color=#6a5acd>&lt;!ELEMENT</FONT> name <FONT color=#ff00ff>(#PCDATA)</FONT><FONT color=#6a5acd>&gt;</FONT>
 <FONT color=#0000ff>&lt;!-- Revision number --&gt;</FONT>
 <FONT color=#6a5acd>&lt;!ELEMENT</FONT> revision <FONT color=#ff00ff>(#PCDATA)</FONT><FONT color=#6a5acd>&gt;</FONT>
 <FONT color=#0000ff>&lt;!-- Previous revision number --&gt;</FONT>
 <FONT color=#6a5acd>&lt;!ELEMENT</FONT> prevrevision <FONT color=#ff00ff>(#PCDATA)</FONT><FONT color=#6a5acd>&gt;</FONT>
 </PRE>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="daysinpast" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Number of days worth of log entries to process.]]></short-description>
        <description><![CDATA[
          Set the number of days worth of log entries to process.
        ]]></description>
      </attribute>
      <attribute name="destfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Output file for the log.]]></short-description>
        <description><![CDATA[
          Set the output file for the log.
        ]]></description>
      </attribute>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Base dir for cvs.]]></short-description>
        <description><![CDATA[
          Set the base dir for cvs.
        ]]></description>
      </attribute>
      <attribute name="end" type="java.util.Date"
                 briefType="Date" required="NOTDEFINED">
        <short-description><![CDATA[Date at which the changelog should stop.]]></short-description>
        <description><![CDATA[
          Set the date at which the changelog should stop.
        ]]></description>
      </attribute>
      <attribute name="start" type="java.util.Date"
                 briefType="Date" required="NOTDEFINED">
        <short-description><![CDATA[Date at which the changelog should start.]]></short-description>
        <description><![CDATA[
          Set the date at which the changelog should start.
        ]]></description>
      </attribute>
      <attribute name="usersfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Lookup list of user names & addresses.]]></short-description>
        <description><![CDATA[
          Set a lookup list of user names & addresses
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files about which cvs logs will be generated.]]></short-description>
        <description>
          <![CDATA[Adds a set of files about which cvs logs will be generated.]]>
        </description>
      </element>

      <element name="user" type="org.apache.tools.ant.taskdefs.cvslib.CvsUser"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a user to list changelog knows about.]]></short-description>
        <description>
          <![CDATA[Add a user to list changelog knows about.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="cvspass" category="scm"
      classname="org.apache.tools.ant.taskdefs.CVSPass"
      >

  <short-description><![CDATA[Adds an new entry to a CVS password file.]]></short-description>
  <description>
    <![CDATA[Adds an new entry to a CVS password file.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="cvsroot" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The CVS repository to add an entry for.]]></short-description>
        <description><![CDATA[
          The CVS repository to add an entry for.
        ]]></description>
      </attribute>
      <attribute name="passfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Password file to add the entry to.]]></short-description>
        <description><![CDATA[
          Password file to add the entry to.
        ]]></description>
      </attribute>
      <attribute name="password" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Password to be added to the password file.]]></short-description>
        <description><![CDATA[
          Password to be added to the password file.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="cvstagdiff" category="other"
      classname="org.apache.tools.ant.taskdefs.cvslib.CvsTagDiff"
      >

  <short-description><![CDATA[Examines the output of cvs rdiff between two tags.]]></short-description>
  <description>
    <![CDATA[Examines the output of cvs rdiff between two tags.

 It produces an XML output representing the list of changes.
 <PRE>
 &lt;!-- Root element --&gt;
 &lt;!ELEMENT tagdiff ( entry+ ) &gt;
 &lt;!-- Start tag of the report --&gt;
 &lt;!ATTLIST tagdiff startTag NMTOKEN #IMPLIED &gt;
 &lt;!-- End tag of the report --&gt;
 &lt;!ATTLIST tagdiff endTag NMTOKEN #IMPLIED &gt;
 &lt;!-- Start date of the report --&gt;
 &lt;!ATTLIST tagdiff startDate NMTOKEN #IMPLIED &gt;
 &lt;!-- End date of the report --&gt;
 &lt;!ATTLIST tagdiff endDate NMTOKEN #IMPLIED &gt;

 &lt;!-- CVS tag entry --&gt;
 &lt;!ELEMENT entry ( file ) &gt;
 &lt;!-- File added, changed or removed --&gt;
 &lt;!ELEMENT file ( name, revision?, prevrevision? ) &gt;
 &lt;!-- Name of the file --&gt;
 &lt;!ELEMENT name ( #PCDATA ) &gt;
 &lt;!-- Revision number --&gt;
 &lt;!ELEMENT revision ( #PCDATA ) &gt;
 &lt;!-- Previous revision number --&gt;
 &lt;!ELEMENT prevrevision ( #PCDATA ) &gt;
 </PRE>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="compression" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, this is the same as compressionlevel="3".]]></short-description>
        <description><![CDATA[
          If true, this is the same as compressionlevel="3".
        ]]></description>
      </attribute>
      <attribute name="compressionlevel" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[If set to a value 1-9 it adds -zN to the cvs command line, else
 it disables compression.]]></short-description>
        <description><![CDATA[
          If set to a value 1-9 it adds -zN to the cvs command line, else
 it disables compression.
        ]]></description>
      </attribute>
      <attribute name="cvsroot" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The CVSROOT variable.]]></short-description>
        <description><![CDATA[
          The CVSROOT variable.
        ]]></description>
      </attribute>
      <attribute name="cvsrsh" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The CVS_RSH variable.]]></short-description>
        <description><![CDATA[
          The CVS_RSH variable.
        ]]></description>
      </attribute>
      <attribute name="destfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Output file for the diff.]]></short-description>
        <description><![CDATA[
          Set the output file for the diff.
        ]]></description>
      </attribute>
      <attribute name="enddate" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[End date.]]></short-description>
        <description><![CDATA[
          Set the end date.
        ]]></description>
      </attribute>
      <attribute name="endtag" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[End tag.]]></short-description>
        <description><![CDATA[
          Set the end tag.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Stop the build process if the command exits with
 a return code other than 0.]]></short-description>
        <description><![CDATA[
          Stop the build process if the command exits with
 a return code other than 0.
 Defaults to false.
        ]]></description>
      </attribute>
      <attribute name="package" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The package/module to analyze.]]></short-description>
        <description><![CDATA[
          The package/module to analyze.
        ]]></description>
      </attribute>
      <attribute name="passfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Password file to read passwords from.]]></short-description>
        <description><![CDATA[
          Password file to read passwords from.
        ]]></description>
      </attribute>
      <attribute name="port" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Port used by CVS to communicate with the server.]]></short-description>
        <description><![CDATA[
          Port used by CVS to communicate with the server.
        ]]></description>
      </attribute>
      <attribute name="quiet" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, suppress informational messages.]]></short-description>
        <description><![CDATA[
          If true, suppress informational messages.
        ]]></description>
      </attribute>
      <attribute name="startdate" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Start date.]]></short-description>
        <description><![CDATA[
          Set the start date.
        ]]></description>
      </attribute>
      <attribute name="starttag" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Start tag.]]></short-description>
        <description><![CDATA[
          Set the start tag.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="ddcreator" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ejb.DDCreator"
      matchingTask="true">

  <short-description><![CDATA[Builds a serialized deployment descriptor given a text file description of the descriptor in the format supported by WebLogic.]]></short-description>
  <description>
    <![CDATA[Builds a serialized deployment descriptor given a text file description of the
 descriptor in the format supported by WebLogic.

 This ant task is a front end for the weblogic DDCreator tool.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="classpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used for this compilation.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used for this compilation.
        ]]></description>
      </attribute>
      <attribute name="descriptors" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory from where the text descriptions of the deployment descriptors are
 to be read.]]></short-description>
        <description><![CDATA[
          Set the directory from where the text descriptions of the deployment descriptors are
 to be read.
        ]]></description>
      </attribute>
      <attribute name="dest" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory into which the serialized deployment descriptors are to
 be written.]]></short-description>
        <description><![CDATA[
          Set the directory into which the serialized deployment descriptors are to
 be written.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="delete" category="filesystem"
      classname="org.apache.tools.ant.taskdefs.Delete"
      matchingTask="true">

  <short-description><![CDATA[Deletes a file or directory, or set of files defined by a fileset.]]></short-description>
  <description>
    <![CDATA[Deletes a file or directory, or set of files defined by a fileset.
 The original delete task would delete a file, or a set of files 
 using the include/exclude syntax.  The deltree task would delete a 
 directory tree.  This task combines the functionality of these two
 originally distinct tasks.
 <p>Currently Delete extends MatchingTask.  This is intend <i>only</i>
 to provide backwards compatibility for a release.  The future position
 is to use nested filesets exclusively.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="defaultexcludes" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether default exclusions should be used or not.]]></short-description>
        <description><![CDATA[
          Sets whether default exclusions should be used or not.
        ]]></description>
      </attribute>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Directory from which files are to be deleted.]]></short-description>
        <description><![CDATA[
          Set the directory from which files are to be deleted
        ]]></description>
      </attribute>
      <attribute name="excludes" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set of exclude patterns.]]></short-description>
        <description><![CDATA[
          Sets the set of exclude patterns. Patterns may be separated by a comma
 or a space.
        ]]></description>
      </attribute>
      <attribute name="excludesfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of the file containing the includes patterns.]]></short-description>
        <description><![CDATA[
          Sets the name of the file containing the includes patterns.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If false, note errors but continue.]]></short-description>
        <description><![CDATA[
          If false, note errors but continue.
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of a single file to be removed.]]></short-description>
        <description><![CDATA[
          Set the name of a single file to be removed.
        ]]></description>
      </attribute>
      <attribute name="includeemptydirs" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, delete empty directories.]]></short-description>
        <description><![CDATA[
          If true, delete empty directories.
        ]]></description>
      </attribute>
      <attribute name="includes" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set of include patterns.]]></short-description>
        <description><![CDATA[
          Sets the set of include patterns. Patterns may be separated by a comma
 or a space.
        ]]></description>
      </attribute>
      <attribute name="includesfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of the file containing the includes patterns.]]></short-description>
        <description><![CDATA[
          Sets the name of the file containing the includes patterns.
        ]]></description>
      </attribute>
      <attribute name="quiet" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true and the file does not exist, do not display a diagnostic
 message or modify the exit status to reflect an error.]]></short-description>
        <description><![CDATA[
          If true and the file does not exist, do not display a diagnostic
 message or modify the exit status to reflect an error.
 This means that if a file or directory cannot be deleted,
 then no error is reported. This setting emulates the
 -f option to the Unix &quot;rm&quot; command.
 Default is false meaning things are &quot;noisy&quot;
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, list all names of deleted files.]]></short-description>
        <description><![CDATA[
          If true, list all names of deleted files.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files to be deleted.]]></short-description>
        <description>
          <![CDATA[Adds a set of files to be deleted.]]>
        </description>
      </element>

      <element name="exclude" type="org.apache.tools.ant.types.PatternSet.NameEntry"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a name entry on the exclude list.]]></short-description>
        <description>
          <![CDATA[add a name entry on the exclude list]]>
        </description>
      </element>

      <element name="excludesfile" type="org.apache.tools.ant.types.PatternSet.NameEntry"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a name entry on the include files list.]]></short-description>
        <description>
          <![CDATA[add a name entry on the include files list]]>
        </description>
      </element>

      <element name="include" type="org.apache.tools.ant.types.PatternSet.NameEntry"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a name entry on the include list.]]></short-description>
        <description>
          <![CDATA[add a name entry on the include list]]>
        </description>
      </element>

      <element name="includesfile" type="org.apache.tools.ant.types.PatternSet.NameEntry"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a name entry on the include files list.]]></short-description>
        <description>
          <![CDATA[add a name entry on the include files list]]>
        </description>
      </element>

      <element name="patternset" type="org.apache.tools.ant.types.PatternSet"
               briefType="Patternset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a set of patterns.]]></short-description>
        <description>
          <![CDATA[add a set of patterns]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="deltree" category="other"
      classname="org.apache.tools.ant.taskdefs.Deltree"
      deprecated="true"
      >

  <short-description><![CDATA[No Description.]]></short-description>
  <description>
    <![CDATA[]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Directory to be deleted.]]></short-description>
        <description><![CDATA[
          Set the directory to be deleted
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="depend" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.depend.Depend"
      matchingTask="true">

  <short-description><![CDATA[Generates a dependency file for a given set of classes.]]></short-description>
  <description>
    <![CDATA[Generates a dependency file for a given set of classes.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="cache" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Dependency cache file.]]></short-description>
        <description><![CDATA[
          Sets the dependency cache file.
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used for this dependency check.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used for this dependency check.
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a classpath defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a classpath defined elsewhere.
        ]]></description>
      </attribute>
      <attribute name="closure" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, transitive dependencies are followed until the
 closure of the dependency set if reached.]]></short-description>
        <description><![CDATA[
          If true, transitive dependencies are followed until the
 closure of the dependency set if reached.
 When not set, the depend task will only follow
 direct dependencies between classes.
        ]]></description>
      </attribute>
      <attribute name="destdir" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory where the compiled Java files exist.]]></short-description>
        <description><![CDATA[
          Set the destination directory where the compiled Java files exist.
        ]]></description>
      </attribute>
      <attribute name="dump" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, the dependency information will be written
 to the debug level log.]]></short-description>
        <description><![CDATA[
          If true, the dependency information will be written
 to the debug level log.
        ]]></description>
      </attribute>
      <attribute name="srcdir" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Directories path to find the Java source files.]]></short-description>
        <description><![CDATA[
          Set the directories path to find the Java source files.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a classpath to be used for this dependency check.]]></short-description>
        <description>
          <![CDATA[Adds a classpath to be used for this dependency check.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="dependset" category="filesystem"
      classname="org.apache.tools.ant.taskdefs.DependSet"
      matchingTask="true">

  <short-description><![CDATA[Examines and removes out of date target files.]]></short-description>
  <description>
    <![CDATA[Examines and removes out of date target files.  If any of the target files
 are out of date with respect to any of the source files, all target
 files are removed.  This is useful where dependencies cannot be
 computed (for example, dynamically interpreted parameters or files
 that need to stay in synch but are not directly linked) or where
 the ant task in question could compute them but does not (for
 example, the linked DTD for an XML file using the style task).

 nested arguments:
 <ul>
 <li>srcfileset     (fileset describing the source files to examine)
 <li>srcfilelist    (filelist describing the source files to examine)
 <li>targetfileset  (fileset describing the target files to examine)
 <li>targetfilelist (filelist describing the target files to examine)
 </ul>
 At least one instance of either a fileset or filelist for both source and 
 target are required.
 <p>
 This task will examine each of the source files against each of the target 
 files. If any target files are out of date with respect to any of the source 
 files, all targets are removed. If any files named in a (src or target) 
 filelist do not exist, all targets are removed.
 Hint: If missing files should be ignored, specify them as include patterns 
 in filesets, rather than using filelists.
 </p><p>
 This task attempts to optimize speed of dependency checking.  It will stop 
 after the first out of date file is found and remove all targets, rather 
 than exhaustively checking every source vs target combination unnecessarily.
 </p><p>
 Example uses: 
 <ul><li>
 Record the fact that an XML file must be up to date
 with respect to its XSD (Schema file), even though the XML file
 itself includes no reference to its XSD.
 </li><li>
 Record the fact that an XSL stylesheet includes other
 sub-stylesheets
 </li><li>
 Record the fact that java files must be recompiled if the ant build
 file changes
 </li></ul>]]>
  </description>

  <structure>

    <attributes>
    </attributes>

    <elements>
      <element name="srcfilelist" type="org.apache.tools.ant.types.FileList"
               briefType="Filelist"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a list of source files.]]></short-description>
        <description>
          <![CDATA[Add a list of source files.]]>
        </description>
      </element>

      <element name="srcfileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a set of source files.]]></short-description>
        <description>
          <![CDATA[Add a set of source files.]]>
        </description>
      </element>

      <element name="targetfilelist" type="org.apache.tools.ant.types.FileList"
               briefType="Filelist"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a list of target files.]]></short-description>
        <description>
          <![CDATA[Add a list of target files.]]>
        </description>
      </element>

      <element name="targetfileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a set of target files.]]></short-description>
        <description>
          <![CDATA[Add a set of target files.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="dirname" category="property"
      classname="org.apache.tools.ant.taskdefs.Dirname"
      >

  <short-description><![CDATA[Determines the directory name of the specified file.]]></short-description>
  <description>
    <![CDATA[Determines the directory name of the specified file.

 This task can accept the following attributes:
 <ul>
 <li>file
 <li>property
 </ul>
 Both <b>file</b> and <b>property</b> are required.
 <p>
 When this task executes, it will set the specified property to the
 value of the specified file up to, but not including, the last path
 element. If file is a file, the directory will be the current
 directory.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Path to take the dirname of.]]></short-description>
        <description><![CDATA[
          Path to take the dirname of.
        ]]></description>
      </attribute>
      <attribute name="property" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of the property to set.]]></short-description>
        <description><![CDATA[
          The name of the property to set.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="ear" category="packaging"
      classname="org.apache.tools.ant.taskdefs.Ear"
      matchingTask="true">

  <short-description><![CDATA[Creates a EAR archive.]]></short-description>
  <description>
    <![CDATA[Creates a EAR archive. Based on WAR task]]>
  </description>

  <structure>

    <attributes>
      <attribute name="appxml" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File to incorporate as application.xml.]]></short-description>
        <description><![CDATA[
          File to incorporate as application.xml.
        ]]></description>
      </attribute>
      <attribute name="basedir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Directory from which to archive files; optional.]]></short-description>
        <description><![CDATA[
          Directory from which to archive files; optional.
        ]]></description>
      </attribute>
      <attribute name="compress" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether we want to compress the files or only store them;
 optional, default=true;.]]></short-description>
        <description><![CDATA[
          Whether we want to compress the files or only store them;
 optional, default=true;
        ]]></description>
      </attribute>
      <attribute name="destfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file to create; required.]]></short-description>
        <description><![CDATA[
          The file to create; required.
        ]]></description>
      </attribute>
      <attribute name="duplicate" type="org.apache.tools.ant.taskdefs.Zip.Duplicate"
                 briefType="&quot;add&quot;, &quot;preserve&quot;, &quot;fail&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Sets behavior for when a duplicate file is about to be added -
 one of <code>keep</code>, <code>skip</code> or <code>overwrite</code>.]]></short-description>
        <description><![CDATA[
          Sets behavior for when a duplicate file is about to be added -
 one of <code>keep</code>, <code>skip</code> or <code>overwrite</code>.
 Possible values are: <code>keep</code> (keep both
 of the files); <code>skip</code> (keep the first version
 of the file found); <code>overwrite</code> overwrite the file
 with the new file
 Default for zip tasks is <code>keep</code>
        ]]></description>
      </attribute>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Encoding to use for filenames, defaults to the platform's
 default encoding.]]></short-description>
        <description><![CDATA[
          Encoding to use for filenames, defaults to the platform's
 default encoding.

 <p>For a list of possible values see <a
 href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html">http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html</a>.</p>
        ]]></description>
      </attribute>
      <attribute name="filesonly" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.]]></short-description>
        <description><![CDATA[
          If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.
        ]]></description>
      </attribute>
      <attribute name="index" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set whether or not to create an index list for classes.]]></short-description>
        <description><![CDATA[
          Set whether or not to create an index list for classes.
 This may speed up classloading in some cases.
        ]]></description>
      </attribute>
      <attribute name="manifest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The manifest file to use.]]></short-description>
        <description><![CDATA[
          The manifest file to use. This can be either the location of a manifest,
 or the name of a jar added through a fileset. If its the name of an added
 jar, the task expects the manifest to be in the jar at META-INF/MANIFEST.MF.
        ]]></description>
      </attribute>
      <attribute name="update" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.]]></short-description>
        <description><![CDATA[
          If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.
        ]]></description>
      </attribute>
      <attribute name="whenempty" type="org.apache.tools.ant.taskdefs.Zip.WhenEmpty"
                 briefType="&quot;fail&quot;, &quot;skip&quot;, &quot;create&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Sets behavior of the task when no files match.]]></short-description>
        <description><![CDATA[
          Sets behavior of the task when no files match.
 Possible values are: <code>fail</code> (throw an exception
 and halt the build); <code>skip</code> (do not create
 any archive, but issue a warning); <code>create</code>
 (make an archive with no entries).
 Default for zip tasks is <code>skip</code>;
 for jar tasks, <code>create</code>.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="archives" type="org.apache.tools.ant.types.ZipFileSet"
               briefType="ZipFileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds zipfileset.]]></short-description>
        <description>
          <![CDATA[Adds zipfileset.]]>
        </description>
      </element>

      <element name="manifest" type="org.apache.tools.ant.taskdefs.Manifest"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Allows the manifest for the archive file to be provided inline
 in the buildfile rather than in an external file.]]></short-description>
        <description>
          <![CDATA[Allows the manifest for the archive file to be provided inline
 in the buildfile rather than in an external file.]]>
        </description>
      </element>

      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files.]]></short-description>
        <description>
          <![CDATA[Adds a set of files.]]>
        </description>
      </element>

      <element name="metainf" type="org.apache.tools.ant.types.ZipFileSet"
               briefType="ZipFileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a zipfileset to include in the META-INF directory.]]></short-description>
        <description>
          <![CDATA[Adds a zipfileset to include in the META-INF directory.]]>
        </description>
      </element>

      <element name="zipgroupfileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a group of zip files.]]></short-description>
        <description>
          <![CDATA[Adds a group of zip files.]]>
        </description>
      </element>

      <element name="zipfileset" type="org.apache.tools.ant.types.ZipFileSet"
               briefType="ZipFileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files that can be
 read from an archive and be given a prefix/fullpath.]]></short-description>
        <description>
          <![CDATA[Adds a set of files that can be
 read from an archive and be given a prefix/fullpath.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="echo" category="utility"
      classname="org.apache.tools.ant.taskdefs.Echo"
      >

  <short-description><![CDATA[Writes a message to the Ant logging facilities.]]></short-description>
  <description>
    <![CDATA[Writes a message to the Ant logging facilities.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="append" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, append to existing file.]]></short-description>
        <description><![CDATA[
          If true, append to existing file.
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File to write to.]]></short-description>
        <description><![CDATA[
          File to write to.
        ]]></description>
      </attribute>
      <attribute name="level" type="org.apache.tools.ant.taskdefs.Echo.EchoLevel"
                 briefType="&quot;error&quot;, &quot;warning&quot;, &quot;info&quot;, &quot;verbose&quot;, &quot;debug&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Logging level.]]></short-description>
        <description><![CDATA[
          Set the logging level. Level should be one of
 <ul>
  <li>error</li>
  <li>warning</li>
  <li>info</li>
  <li>verbose</li>
  <li>debug</li>
 </ul>
 <p>The default is &quot;warning&quot; to ensure that messages are
 displayed by default when using the -quiet command line option.</p>
        ]]></description>
      </attribute>
      <attribute name="message" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Message to write.]]></short-description>
        <description><![CDATA[
          Message to write.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

      <body >
        <description><![CDATA[
          Set a multiline message.
        ]]></description>
      </body>

  </structure>

</task>


<task name="echoproperties" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.EchoProperties"
      >

  <short-description><![CDATA[Displays all the current properties in the build.]]></short-description>
  <description>
    <![CDATA[Displays all the current properties in the build. The output can be sent to
  a file if desired. <P>

  Attribute "destfile" defines a file to send the properties to. This can be
  processed as a standard property file later. <P>

  Attribute "prefix" defines a prefix which is used to filter the properties
  only those properties starting with this prefix will be echoed. <P>

  By default, the "failonerror" attribute is enabled. If an error occurs while
  writing the properties to a file, and this attribute is enabled, then a
  BuildException will be thrown. If disabled, then IO errors will be reported
  as a log statement, but no error will be thrown. <P>

  Examples: <pre>
  &lt;echoproperties  /&gt;
 </pre> Report the current properties to the log. <P>

  <pre>
  &lt;echoproperties destfile="my.properties" /&gt;
 </pre> Report the current properties to the file "my.properties", and will
  fail the build if the file could not be created or written to. <P>

  <pre>
  &lt;echoproperties destfile="my.properties" failonerror="false"
      prefix="ant" /&gt;
 </pre> Report all properties beginning with 'ant' to the file
  "my.properties", and will log a message if the file could not be created or
  written to, but will still allow the build to continue.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="destfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File to store the property output.]]></short-description>
        <description><![CDATA[
          Set a file to store the property output.  If this is never specified,
  then the output will be sent to the Ant log.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, the task will fail if an error occurs writing the properties
 file, otherwise errors are just logged.]]></short-description>
        <description><![CDATA[
          If true, the task will fail if an error occurs writing the properties
 file, otherwise errors are just logged.
        ]]></description>
      </attribute>
      <attribute name="prefix" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[If the prefix is set, then only properties which start with this
  prefix string will be recorded.]]></short-description>
        <description><![CDATA[
          If the prefix is set, then only properties which start with this
  prefix string will be recorded.  If this is never set, or it is set
  to an empty string or <tt>null</tt>, then all properties will be
  recorded. <P>

  For example, if the property is set as:
    <PRE>&lt;echoproperties  prefix="ant." /&gt;</PRE>
  then the property "ant.home" will be recorded, but "ant-example"
  will not.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="ejbc" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ejb.Ejbc"
      matchingTask="true">

  <short-description><![CDATA[Builds EJB support classes using WebLogic's ejbc tool from a directory containing a set of deployment descriptors.]]></short-description>
  <description>
    <![CDATA[Builds EJB support classes using WebLogic's ejbc tool from a directory containing
 a set of deployment descriptors.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="classpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used for this compilation.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used for this compilation.
        ]]></description>
      </attribute>
      <attribute name="descriptors" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory from where the serialized deployment descriptors are
 to be read.]]></short-description>
        <description><![CDATA[
          Set the directory from where the serialized deployment descriptors are
 to be read.
        ]]></description>
      </attribute>
      <attribute name="dest" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory into which the support classes, RMI stubs, etc are to be written.]]></short-description>
        <description><![CDATA[
          Set the directory into which the support classes, RMI stubs, etc are to be written.
        ]]></description>
      </attribute>
      <attribute name="keepgenerated" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[If true, ejbc will keep the
 intermediate Java files used to build the class files.]]></short-description>
        <description><![CDATA[
          If true, ejbc will keep the
 intermediate Java files used to build the class files.
 This can be useful when debugging.
        ]]></description>
      </attribute>
      <attribute name="manifest" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the generated manifest file.]]></short-description>
        <description><![CDATA[
          Set the name of the generated manifest file.

 For each EJB that is processed an entry is created in this file. This can then be used
 to create a jar file for dploying the beans.
        ]]></description>
      </attribute>
      <attribute name="src" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory containing the source code for the home interface, remote interface
 and public key class definitions.]]></short-description>
        <description><![CDATA[
          Set the directory containing the source code for the home interface, remote interface
 and public key class definitions.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="ejbjar" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ejb.EjbJar"
      matchingTask="true">

  <short-description><![CDATA[Provides automated EJB JAR file creation.]]></short-description>
  <description>
    <![CDATA[Provides automated EJB JAR file creation.
 <p>
 Extends the
 MatchingTask class provided in the default ant distribution to provide a
 directory scanning EJB jarfile generator.
 </p>

 <p>
 The task works by taking the deployment descriptors one at a time and
 parsing them to locate the names of the classes which should be placed in
 the jar. The classnames are translated to java.io.Files by replacing
 periods with File.separatorChar and resolving the generated filename as a
 relative path under the srcDir attribute. All necessary files are then
 assembled into a jarfile. One jarfile is constructed for each deployment
 descriptor found.
 </p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="basejarname" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Base name of the EJB JAR that is to be created if it is not
 to be determined from the name of the deployment descriptor files.]]></short-description>
        <description><![CDATA[
          Set the base name of the EJB JAR that is to be created if it is not
 to be determined from the name of the deployment descriptor files.
        ]]></description>
      </attribute>
      <attribute name="basenameterminator" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The string which terminates the bean name.]]></short-description>
        <description><![CDATA[
          The string which terminates the bean name.
 The convention used by this task is
 that bean descriptors are named as the BeanName with some suffix. The
 baseNameTerminator string separates the bean name and the suffix and
 is used to determine the bean name.
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to use when resolving classes for inclusion in the jar.]]></short-description>
        <description><![CDATA[
          Set the classpath to use when resolving classes for inclusion in the jar.
        ]]></description>
      </attribute>
      <attribute name="dependency" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Analyzer to use when adding in dependencies to the JAR.]]></short-description>
        <description><![CDATA[
          Set the analyzer to use when adding in dependencies to the JAR.
        ]]></description>
      </attribute>
      <attribute name="descriptordir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Descriptor directory.]]></short-description>
        <description><![CDATA[
          Set the descriptor directory. The descriptor directory contains the
 EJB deployment descriptors. These are XML files that declare the
 properties of a bean in a particular deployment scenario. Such
 properties include, for example, the transactional nature of the bean
 and the security access control to the bean's methods.
        ]]></description>
      </attribute>
      <attribute name="destdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory.]]></short-description>
        <description><![CDATA[
          Set the destination directory. The EJB jar files will be written into
 this directory. The jar files that exist in this directory are also
 used when determining if the contents of the jar file have changed.
 Note that this parameter is only used if no deployment tools are
 specified. Typically each deployment tool will specify its own
 destination directory.
        ]]></description>
      </attribute>
      <attribute name="flatdestdir" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Controls whether the
 destination JARs are written out in the destination directory with
 the same hierarchical structure from which the deployment descriptors
 have been read.]]></short-description>
        <description><![CDATA[
          Controls whether the
 destination JARs are written out in the destination directory with
 the same hierarchical structure from which the deployment descriptors
 have been read. If this is set to true the generated EJB jars are
 written into the root of the destination directory, otherwise they
 are written out in the same relative position as the deployment
 descriptors in the descriptor directory.
        ]]></description>
      </attribute>
      <attribute name="genericjarsuffix" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Suffix for the generated jar file.]]></short-description>
        <description><![CDATA[
          Set the suffix for the generated jar file. When generic jars are
 generated, they have a suffix which is appended to the the bean name
 to create the name of the jar file. Note that this suffix includes
 the extension fo te jar file and should therefore end with an
 appropriate extension such as .jar or .ear
        ]]></description>
      </attribute>
      <attribute name="manifest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Manifest file to use when jarring.]]></short-description>
        <description><![CDATA[
          Set the Manifest file to use when jarring. As of EJB 1.1, manifest
 files are no longer used to configure the EJB. However, they still
 have a vital importance if the EJB is intended to be packaged in an
 EAR file. By adding "Class-Path" settings to a Manifest file, the EJB
 can look for classes inside the EAR file itself, allowing for easier
 deployment. This is outlined in the J2EE specification, and all J2EE
 components are meant to support it.
        ]]></description>
      </attribute>
      <attribute name="naming" type="org.apache.tools.ant.taskdefs.optional.ejb.EjbJar.NamingScheme"
                 briefType="&quot;ejb-name&quot;, &quot;directory&quot;, &quot;descriptor&quot;, &quot;basejarname&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Naming scheme used to determine the name of the generated jars
 from the deployment descriptor.]]></short-description>
        <description><![CDATA[
          Set the naming scheme used to determine the name of the generated jars
 from the deployment descriptor
        ]]></description>
      </attribute>
      <attribute name="srcdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Source directory, which is the directory that
 contains the classes that will be added to the EJB jar.]]></short-description>
        <description><![CDATA[
          Sets the source directory, which is the directory that
 contains the classes that will be added to the EJB jar. Typically
 this will include the home and remote interfaces and the bean class.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="borland" type="org.apache.tools.ant.taskdefs.optional.ejb.BorlandDeploymentTool"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a deployment tool for Borland server.]]></short-description>
        <description>
          <![CDATA[Adds a deployment tool for Borland server.]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds to the classpath used to locate the super classes and
 interfaces of the classes that will make up the EJB JAR.]]></short-description>
        <description>
          <![CDATA[Adds to the classpath used to locate the super classes and
 interfaces of the classes that will make up the EJB JAR.]]>
        </description>
      </element>

      <element name="dtd" type="org.apache.tools.ant.taskdefs.optional.ejb.EjbJar.DTDLocation"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Create a DTD location record.]]></short-description>
        <description>
          <![CDATA[Create a DTD location record. This stores the location of a DTD. The
 DTD is identified by its public Id. The location may either be a file
 location or a resource location.]]>
        </description>
      </element>

      <element name="iplanet" type="org.apache.tools.ant.taskdefs.optional.ejb.IPlanetDeploymentTool"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a deployment tool for iPlanet Application Server.]]></short-description>
        <description>
          <![CDATA[Adds a deployment tool for iPlanet Application Server.]]>
        </description>
      </element>

      <element name="jboss" type="org.apache.tools.ant.taskdefs.optional.ejb.JbossDeploymentTool"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a deployment tool for JBoss server.]]></short-description>
        <description>
          <![CDATA[Adds a deployment tool for JBoss server.]]>
        </description>
      </element>

      <element name="jonas" type="org.apache.tools.ant.taskdefs.optional.ejb.JonasDeploymentTool"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a deployment tool for JOnAS server.]]></short-description>
        <description>
          <![CDATA[Adds a deployment tool for JOnAS server.]]>
        </description>
      </element>

      <element name="support" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a fileset for support elements.]]></short-description>
        <description>
          <![CDATA[Adds a fileset for support elements.]]>
        </description>
      </element>

      <element name="weblogic" type="org.apache.tools.ant.taskdefs.optional.ejb.WeblogicDeploymentTool"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a deployment tool for Weblogic server.]]></short-description>
        <description>
          <![CDATA[Adds a deployment tool for Weblogic server.]]>
        </description>
      </element>

      <element name="weblogictoplink" type="org.apache.tools.ant.taskdefs.optional.ejb.WeblogicTOPLinkDeploymentTool"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a deployment tool for Weblogic when using the Toplink
 Object-Relational mapping.]]></short-description>
        <description>
          <![CDATA[Adds a deployment tool for Weblogic when using the Toplink
 Object-Relational mapping.]]>
        </description>
      </element>

      <element name="websphere" type="org.apache.tools.ant.taskdefs.optional.ejb.WebsphereDeploymentTool"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a deployment tool for Websphere 4.0 server.]]></short-description>
        <description>
          <![CDATA[Adds a deployment tool for Websphere 4.0 server.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="exec" category="control"
      classname="org.apache.tools.ant.taskdefs.ExecTask"
      >

  <short-description><![CDATA[Executes a given command if the os platform is appropriate.]]></short-description>
  <description>
    <![CDATA[Executes a given command if the os platform is appropriate.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="append" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether output should be appended to or overwrite an existing file.]]></short-description>
        <description><![CDATA[
          Whether output should be appended to or overwrite an existing file.
 Defaults to false.
        ]]></description>
      </attribute>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The working directory of the process.]]></short-description>
        <description><![CDATA[
          The working directory of the process.
        ]]></description>
      </attribute>
      <attribute name="executable" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The command to execute.]]></short-description>
        <description><![CDATA[
          The command to execute.
        ]]></description>
      </attribute>
      <attribute name="failifexecutionfails" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Stop the build if program cannot be started.]]></short-description>
        <description><![CDATA[
          Stop the build if program cannot be started. Defaults to true.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Fail if the command exits with a non-zero return code.]]></short-description>
        <description><![CDATA[
          Fail if the command exits with a non-zero return code.
        ]]></description>
      </attribute>
      <attribute name="newenvironment" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Do not propagate old environment when new environment variables are specified.]]></short-description>
        <description><![CDATA[
          Do not propagate old environment when new environment variables are specified.
        ]]></description>
      </attribute>
      <attribute name="os" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[List of operating systems on which the command may be executed.]]></short-description>
        <description><![CDATA[
          List of operating systems on which the command may be executed.
        ]]></description>
      </attribute>
      <attribute name="output" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File the output of the process is redirected to.]]></short-description>
        <description><![CDATA[
          File the output of the process is redirected to.
        ]]></description>
      </attribute>
      <attribute name="outputproperty" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Property name whose value should be set to the output of
 the process.]]></short-description>
        <description><![CDATA[
          Property name whose value should be set to the output of
 the process.
        ]]></description>
      </attribute>
      <attribute name="resultproperty" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of a property in which the return code of the
 command should be stored.]]></short-description>
        <description><![CDATA[
          The name of a property in which the return code of the
 command should be stored. Only of interest if failonerror=false.
        ]]></description>
      </attribute>
      <attribute name="vmlauncher" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, launch new process with VM, otherwise use the OS's shell.]]></short-description>
        <description><![CDATA[
          If true, launch new process with VM, otherwise use the OS's shell.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="env" type="org.apache.tools.ant.types.Environment.Variable"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an environment variable to the launched process.]]></short-description>
        <description>
          <![CDATA[Add an environment variable to the launched process.]]>
        </description>
      </element>

      <element name="arg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a command-line argument.]]></short-description>
        <description>
          <![CDATA[Adds a command-line argument.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="fail" category="control"
      classname="org.apache.tools.ant.taskdefs.Exit"
      >

  <short-description><![CDATA[Exits the active build, giving an additional message if available.]]></short-description>
  <description>
    <![CDATA[Exits the active build, giving an additional message
 if available.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="if" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Only fail if a property of the given name exists in the current project.]]></short-description>
        <description><![CDATA[
          Only fail if a property of the given name exists in the current project.
        ]]></description>
      </attribute>
      <attribute name="message" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[A message giving further information on why the build exited.]]></short-description>
        <description><![CDATA[
          A message giving further information on why the build exited.
        ]]></description>
      </attribute>
      <attribute name="unless" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Only fail if a property of the given name does not
 exist in the current project.]]></short-description>
        <description><![CDATA[
          Only fail if a property of the given name does not
 exist in the current project.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

      <body >
        <description><![CDATA[
          Set a multiline message.
        ]]></description>
      </body>

  </structure>

</task>


<task name="filter" category="filesystem"
      classname="org.apache.tools.ant.taskdefs.Filter"
      >

  <short-description><![CDATA[Sets a token filter that is used by the file copy tasks to do token substitution.]]></short-description>
  <description>
    <![CDATA[Sets a token filter that is used by the file copy tasks
 to do token substitution. Sets mutiple tokens by
 reading these from a file.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="filtersfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file from which the filters must be read.]]></short-description>
        <description><![CDATA[
          The file from which the filters must be read.
 This file must be a formatted as a property file.
        ]]></description>
      </attribute>
      <attribute name="token" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The token string without @ delimiters.]]></short-description>
        <description><![CDATA[
          The token string without @ delimiters.
        ]]></description>
      </attribute>
      <attribute name="value" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The string that should replace the token during filtered copies.]]></short-description>
        <description><![CDATA[
          The string that should replace the token during filtered copies.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="fixcrlf" category="filesystem"
      classname="org.apache.tools.ant.taskdefs.FixCRLF"
      matchingTask="true">

  <short-description><![CDATA[Converts text source files to local OS formatting conventions, as well as repair text files damaged by misconfigured or misguided editors or file transfer programs.]]></short-description>
  <description>
    <![CDATA[Converts text source files to local OS formatting conventions, as
 well as repair text files damaged by misconfigured or misguided editors or
 file transfer programs.
 <p>
 This task can take the following arguments:
 <ul>
 <li>srcdir
 <li>destdir
 <li>include
 <li>exclude
 <li>cr
 <li>eol
 <li>tab
 <li>eof
 <li>encoding
 </ul>
 Of these arguments, only <b>sourcedir</b> is required.
 <p>
 When this task executes, it will scan the srcdir based on the include
 and exclude properties.
 <p>
 This version generalises the handling of EOL characters, and allows
 for CR-only line endings (which I suspect is the standard on Macs.)
 Tab handling has also been generalised to accommodate any tabwidth
 from 2 to 80, inclusive.  Importantly, it will leave untouched any
 literal TAB characters embedded within string or character constants.
 <p>
 <em>Warning:</em> do not run on binary files.
 <em>Caution:</em> run with care on carefully formatted files.
 This may sound obvious, but if you don't specify asis, presume that
 your files are going to be modified.  If "tabs" is "add" or "remove",
 whitespace characters may be added or removed as necessary.  Similarly,
 for CR's - in fact "eol"="crlf" or cr="add" can result in cr
 characters being removed in one special case accommodated, i.e.,
 CRCRLF is regarded as a single EOL to handle cases where other
 programs have converted CRLF into CRCRLF.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="destdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination where the fixed files should be placed.]]></short-description>
        <description><![CDATA[
          Set the destination where the fixed files should be placed.
 Default is to replace the original file.
        ]]></description>
      </attribute>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the encoding Ant expects the files to be in -
 defaults to the platforms default encoding.]]></short-description>
        <description><![CDATA[
          Specifies the encoding Ant expects the files to be in -
 defaults to the platforms default encoding.
        ]]></description>
      </attribute>
      <attribute name="eof" type="org.apache.tools.ant.taskdefs.FixCRLF.AddAsisRemove"
                 briefType="&quot;add&quot;, &quot;asis&quot;, &quot;remove&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Specify how DOS EOF (control-z) characters are to be handled.]]></short-description>
        <description><![CDATA[
          Specify how DOS EOF (control-z) characters are to be handled.
        ]]></description>
      </attribute>
      <attribute name="eol" type="org.apache.tools.ant.taskdefs.FixCRLF.CrLf"
                 briefType="&quot;asis&quot;, &quot;cr&quot;, &quot;lf&quot;, &quot;crlf&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Specify how EndOfLine characters are to be handled.]]></short-description>
        <description><![CDATA[
          Specify how EndOfLine characters are to be handled.
        ]]></description>
      </attribute>
      <attribute name="javafiles" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set to true if modifying Java source files.]]></short-description>
        <description><![CDATA[
          Set to true if modifying Java source files.
        ]]></description>
      </attribute>
      <attribute name="srcdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Source dir to find the source text files.]]></short-description>
        <description><![CDATA[
          Set the source dir to find the source text files.
        ]]></description>
      </attribute>
      <attribute name="tab" type="org.apache.tools.ant.taskdefs.FixCRLF.AddAsisRemove"
                 briefType="&quot;add&quot;, &quot;asis&quot;, &quot;remove&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Specify how tab characters are to be handled.]]></short-description>
        <description><![CDATA[
          Specify how tab characters are to be handled.
        ]]></description>
      </attribute>
      <attribute name="tablength" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Specify tab length in characters.]]></short-description>
        <description><![CDATA[
          Specify tab length in characters.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="ftp" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.net.FTP"
      >

  <short-description><![CDATA[Basic FTP client.]]></short-description>
  <description>
    <![CDATA[Basic FTP client. Performs the following actions:
 <ul>
   <li> <strong>send</strong> - send files to a remote server. This is the
   default action.</li>
   <li> <strong>get</strong> - retrive files from a remote server.</li>
   <li> <strong>del</strong> - delete files from a remote server.</li>
   <li> <strong>list</strong> - create a file listing.</li>
   <li> <strong>chmod</strong> - change unix file permissions.</li>
 </ul>
 <strong>Note:</strong> Some FTP servers - notably the Solaris server - seem
 to hold data ports open after a "retr" operation, allowing them to timeout
 instead of shutting them down cleanly. This happens in active or passive
 mode, and the ports will remain open even after ending the FTP session. FTP
 "send" operations seem to close ports immediately. This behavior may cause
 problems on some systems when downloading large sets of files.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="action" type="org.apache.tools.ant.taskdefs.optional.net.FTP.Action"
                 briefType="&quot;send&quot;, &quot;put&quot;, &quot;recv&quot;, &quot;get&quot;, &quot;del&quot;, &quot;delete&quot;, &quot;list&quot;, &quot;mkdir&quot;, &quot;chmod&quot;" required="NOTDEFINED">
        <short-description><![CDATA[FTP action to be taken.]]></short-description>
        <description><![CDATA[
          Sets the FTP action to be taken. Currently accepts "put", "get", "del",
 "mkdir", "chmod" and "list".
        ]]></description>
      </attribute>
      <attribute name="binary" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, uses binary mode, otherwise text mode (default is binary).]]></short-description>
        <description><![CDATA[
          If true, uses binary mode, otherwise text mode (default is binary).
        ]]></description>
      </attribute>
      <attribute name="chmod" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[File permission mode (Unix only) for files sent to the server.]]></short-description>
        <description><![CDATA[
          Sets the file permission mode (Unix only) for files sent to the server.
        ]]></description>
      </attribute>
      <attribute name="depends" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set to true to transmit only files that are new or changed from their
 remote counterparts.]]></short-description>
        <description><![CDATA[
          Set to true to transmit only files that are new or changed from their
 remote counterparts. The default is to transmit all files.
        ]]></description>
      </attribute>
      <attribute name="ignorenoncriticalerrors" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to skip errors on directory creation.
 (and maybe later other server specific errors).]]></short-description>
        <description><![CDATA[
          set the flag to skip errors on directory creation.
 (and maybe later other server specific errors)
        ]]></description>
      </attribute>
      <attribute name="listing" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The output file for the "list" action.]]></short-description>
        <description><![CDATA[
          The output file for the "list" action. This attribute is ignored for
 any other actions.
        ]]></description>
      </attribute>
      <attribute name="newer" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[A synonym for <tt>depends</tt>.]]></short-description>
        <description><![CDATA[
          A synonym for <tt>depends</tt>. Set to true to transmit only new or changed
 files.
        ]]></description>
      </attribute>
      <attribute name="passive" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Specifies whether to use passive mode.]]></short-description>
        <description><![CDATA[
          Specifies whether to use passive mode. Set to true if you are behind a
 firewall and cannot connect without it. Passive mode is disabled by
 default.
        ]]></description>
      </attribute>
      <attribute name="password" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Login password for the given user id.]]></short-description>
        <description><![CDATA[
          Sets the login password for the given user id.
        ]]></description>
      </attribute>
      <attribute name="port" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[FTP port used by the remote server.]]></short-description>
        <description><![CDATA[
          Sets the FTP port used by the remote server.
        ]]></description>
      </attribute>
      <attribute name="remotedir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Remote directory where files will be placed.]]></short-description>
        <description><![CDATA[
          Sets the remote directory where files will be placed. This may be a
 relative or absolute path, and must be in the path syntax expected by
 the remote server. No correction of path syntax will be performed.
        ]]></description>
      </attribute>
      <attribute name="separator" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Remote file separator character.]]></short-description>
        <description><![CDATA[
          Sets the remote file separator character. This normally defaults to the
 Unix standard forward slash, but can be manually overridden using this
 call if the remote server requires some other separator. Only the first
 character of the string is used.
        ]]></description>
      </attribute>
      <attribute name="server" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[FTP server to send files to.]]></short-description>
        <description><![CDATA[
          Sets the FTP server to send files to.
        ]]></description>
      </attribute>
      <attribute name="skipfailedtransfers" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, enables unsuccessful file put, delete and get
 operations to be skipped with a warning and the remainder
 of the files still transferred.]]></short-description>
        <description><![CDATA[
          If true, enables unsuccessful file put, delete and get
 operations to be skipped with a warning and the remainder
 of the files still transferred.
        ]]></description>
      </attribute>
      <attribute name="umask" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Default mask for file creation on a unix server.]]></short-description>
        <description><![CDATA[
          Sets the default mask for file creation on a unix server.
        ]]></description>
      </attribute>
      <attribute name="userid" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Login user id to use on the specified server.]]></short-description>
        <description><![CDATA[
          Sets the login user id to use on the specified server.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set to true to receive notification about each file as it is
 transferred.]]></short-description>
        <description><![CDATA[
          Set to true to receive notification about each file as it is
 transferred.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[A set of files to upload or download.]]></short-description>
        <description>
          <![CDATA[A set of files to upload or download]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="genkey" category="java"
      classname="org.apache.tools.ant.taskdefs.GenerateKey"
      >

  <short-description><![CDATA[Generates a key in a keystore.]]></short-description>
  <description>
    <![CDATA[Generates a key in a keystore.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="alias" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The alias to add under.]]></short-description>
        <description><![CDATA[
          The alias to add under.
        ]]></description>
      </attribute>
      <attribute name="dname" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The distinguished name for entity.]]></short-description>
        <description><![CDATA[
          The distinguished name for entity.
        ]]></description>
      </attribute>
      <attribute name="keyalg" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The method to use when generating name-value pair.]]></short-description>
        <description><![CDATA[
          The method to use when generating name-value pair.
        ]]></description>
      </attribute>
      <attribute name="keypass" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Password for private key (if different).]]></short-description>
        <description><![CDATA[
          Password for private key (if different).
        ]]></description>
      </attribute>
      <attribute name="keysize" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Indicates the size of key generated.]]></short-description>
        <description><![CDATA[
          Indicates the size of key generated.
        ]]></description>
      </attribute>
      <attribute name="keystore" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Keystore location.]]></short-description>
        <description><![CDATA[
          Keystore location.
        ]]></description>
      </attribute>
      <attribute name="sigalg" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The algorithm to use in signing.]]></short-description>
        <description><![CDATA[
          The algorithm to use in signing.
        ]]></description>
      </attribute>
      <attribute name="storepass" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Password for keystore integrity.]]></short-description>
        <description><![CDATA[
          Password for keystore integrity.
 Must be at least 6 characters long.
        ]]></description>
      </attribute>
      <attribute name="storetype" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Keystore type.]]></short-description>
        <description><![CDATA[
          Keystore type.
        ]]></description>
      </attribute>
      <attribute name="validity" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Indicates how many days certificate is valid.]]></short-description>
        <description><![CDATA[
          Indicates how many days certificate is valid.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, verbose output when signing.]]></short-description>
        <description><![CDATA[
          If true, verbose output when signing.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="dname" type="org.apache.tools.ant.taskdefs.GenerateKey.DistinguishedName"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Distinguished name list.]]></short-description>
        <description>
          <![CDATA[Distinguished name list.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="get" category="network"
      classname="org.apache.tools.ant.taskdefs.Get"
      >

  <short-description><![CDATA[Gets a particular file from a URL source.]]></short-description>
  <description>
    <![CDATA[Gets a particular file from a URL source.
 Options include verbose reporting, timestamp based fetches and controlling
 actions on failures. NB: access through a firewall only works if the whole
 Java runtime is correctly configured.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Where to copy the source file.]]></short-description>
        <description><![CDATA[
          Where to copy the source file.
        ]]></description>
      </attribute>
      <attribute name="ignoreerrors" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, log errors but do not treat as fatal.]]></short-description>
        <description><![CDATA[
          If true, log errors but do not treat as fatal.
        ]]></description>
      </attribute>
      <attribute name="password" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Password for the basic authentication.]]></short-description>
        <description><![CDATA[
          password for the basic authentication.
        ]]></description>
      </attribute>
      <attribute name="src" type="java.net.URL"
                 briefType="URL" required="NOTDEFINED">
        <short-description><![CDATA[URL to get.]]></short-description>
        <description><![CDATA[
          Set the URL to get.
        ]]></description>
      </attribute>
      <attribute name="usetimestamp" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, conditionally download a file based on the timestamp
 of the local copy.]]></short-description>
        <description><![CDATA[
          If true, conditionally download a file based on the timestamp
 of the local copy.

 <p>In this situation, the if-modified-since header is set so
 that the file is only fetched if it is newer than the local
 file (or there is no local file) This flag is only valid on
 HTTP connections, it is ignored in other cases.  When the flag
 is set, the local copy of the downloaded file will also have
 its timestamp set to the remote file time.</p>

 <p>Note that remote files of date 1/1/1970 (GMT) are treated as
 'no timestamp', and web servers often serve files with a
 timestamp in the future by replacing their timestamp with that
 of the current time. Also, inter-computer clock differences can
 cause no end of grief.</p>
        ]]></description>
      </attribute>
      <attribute name="username" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Username for basic auth.]]></short-description>
        <description><![CDATA[
          Username for basic auth.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, show verbose progress information.]]></short-description>
        <description><![CDATA[
          If true, show verbose progress information.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="gunzip" category="packaging"
      classname="org.apache.tools.ant.taskdefs.GUnzip"
      >

  <short-description><![CDATA[Expands a file that has been compressed with the GZIP algorithm.]]></short-description>
  <description>
    <![CDATA[Expands a file that has been compressed with the GZIP
 algorithm. Normally used to compress non-compressed archives such
 as TAR files.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The destination file or directory; optional.]]></short-description>
        <description><![CDATA[
          The destination file or directory; optional.
        ]]></description>
      </attribute>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file to expand; required.]]></short-description>
        <description><![CDATA[
          The file to expand; required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="gzip" category="packaging"
      classname="org.apache.tools.ant.taskdefs.GZip"
      >

  <short-description><![CDATA[Compresses a file with the GZIP algorithm.]]></short-description>
  <description>
    <![CDATA[Compresses a file with the GZIP algorithm. Normally used to compress
 non-compressed archives such as TAR files.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file to compress; required.]]></short-description>
        <description><![CDATA[
          the file to compress; required.
        ]]></description>
      </attribute>
      <attribute name="zipfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The required destination file.]]></short-description>
        <description><![CDATA[
          the required destination file.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="icontract" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.IContract"
      matchingTask="true">

  <short-description><![CDATA[Instruments Java classes with iContract DBC preprocessor.]]></short-description>
  <description>
    <![CDATA[Instruments Java classes with iContract DBC preprocessor.
 <br/>
 The task can generate a properties file for <a href="http://hjem.sol.no/hellesoy/icontrol.html">iControl</a>,
 a graphical user interface that lets you turn on/off assertions. iControl generates a control file that you can refer to
 from this task using the controlfile attribute.
 iContract is at <a href="http://www.reliable-systems.com/tools/">http://www.reliable-systems.com/tools/</a>
 <p/>
 Thanks to Rainer Schmitz for enhancements and comments.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="builddir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Build directory for instrumented classes.]]></short-description>
        <description><![CDATA[
          Sets the build directory for instrumented classes.
        ]]></description>
      </attribute>
      <attribute name="classdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Class directory (uninstrumented classes).]]></short-description>
        <description><![CDATA[
          Sets the class directory (uninstrumented classes).
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used for invocation of iContract.]]></short-description>
        <description><![CDATA[
          Sets the classpath to be used for invocation of iContract.
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a classpath defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a classpath defined elsewhere.
        ]]></description>
      </attribute>
      <attribute name="controlfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Control file to pass to iContract.]]></short-description>
        <description><![CDATA[
          Sets the control file to pass to iContract.
        ]]></description>
      </attribute>
      <attribute name="failthrowable" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Throwable (Exception) to be thrown on assertion violation.]]></short-description>
        <description><![CDATA[
          Sets the Throwable (Exception) to be thrown on assertion violation.
        ]]></description>
      </attribute>
      <attribute name="instrumentdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Instrumentation directory.]]></short-description>
        <description><![CDATA[
          Sets the instrumentation directory.
        ]]></description>
      </attribute>
      <attribute name="invariant" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Turns on/off invariant instrumentation.]]></short-description>
        <description><![CDATA[
          Turns on/off invariant instrumentation.
        ]]></description>
      </attribute>
      <attribute name="post" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Turns on/off postcondition instrumentation.]]></short-description>
        <description><![CDATA[
          Turns on/off postcondition instrumentation.
        ]]></description>
      </attribute>
      <attribute name="pre" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Turns on/off precondition instrumentation.]]></short-description>
        <description><![CDATA[
          Turns on/off precondition instrumentation.
        ]]></description>
      </attribute>
      <attribute name="quiet" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Tells iContract to be quiet.]]></short-description>
        <description><![CDATA[
          Tells iContract to be quiet.
        ]]></description>
      </attribute>
      <attribute name="repbuilddir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Build directory for instrumented classes.]]></short-description>
        <description><![CDATA[
          Sets the build directory for instrumented classes.
        ]]></description>
      </attribute>
      <attribute name="repositorydir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Build directory for repository classes.]]></short-description>
        <description><![CDATA[
          Sets the build directory for repository classes.
        ]]></description>
      </attribute>
      <attribute name="srcdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Source directory.]]></short-description>
        <description><![CDATA[
          Sets the source directory.
        ]]></description>
      </attribute>
      <attribute name="targets" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of the file where targets will be written.]]></short-description>
        <description><![CDATA[
          Sets the name of the file where targets will be written. That is the
 file that tells iContract what files to process.
        ]]></description>
      </attribute>
      <attribute name="updateicontrol" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, updates iControl properties file.]]></short-description>
        <description><![CDATA[
          If true, updates iControl properties file
        ]]></description>
      </attribute>
      <attribute name="verbosity" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Verbosity level of iContract.]]></short-description>
        <description><![CDATA[
          Sets the verbosity level of iContract. Any combination of
 error*,warning*,note*,info*,progress*,debug* (comma separated) can be
 used. Defaults to error*,warning*
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Classpath.]]></short-description>
        <description>
          <![CDATA[Sets the classpath.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="ilasm" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.dotnet.Ilasm"
      matchingTask="true">

  <short-description><![CDATA[Assembles .NET Intermediate Language files.]]></short-description>
  <description>
    <![CDATA[Assembles .NET Intermediate Language files. The task will only work
  on win2K until other platforms support csc.exe or an equivalent. ilasm.exe
  must be on the execute path too. <p>

  <p>

  All parameters are optional: &lt;il/&gt; should suffice to produce a debug
  build of all *.il files. The option set is roughly compatible with the
  CSharp class; even though the command line options are only vaguely
  equivalent. [The low level commands take things like /OUT=file, csc wants
  /out:file ... /verbose is used some places; /quiet here in ildasm... etc.]
  It would be nice if someone made all the command line tools consistent (and
  not as brittle as the java cmdline tools) <p>

  The task is a directory based task, so attributes like <b>includes="*.il"
  </b> and <b>excludes="broken.il"</b> can be used to control the files pulled
  in. Each file is built on its own, producing an appropriately named output
  file unless manually specified with <b>outfile</b>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="debug" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Debug flag on or off.]]></short-description>
        <description><![CDATA[
          set the debug flag on or off.
        ]]></description>
      </attribute>
      <attribute name="extraoptions" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Any extra options which are not explicitly
 supported by this task.]]></short-description>
        <description><![CDATA[
          Any extra options which are not explicitly
 supported by this task.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, fails if ilasm tool fails.]]></short-description>
        <description><![CDATA[
          If true, fails if ilasm tool fails.
        ]]></description>
      </attribute>
      <attribute name="keyfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The name of a file containing a private key.]]></short-description>
        <description><![CDATA[
          the name of a file containing a private key.
        ]]></description>
      </attribute>
      <attribute name="listing" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, produce a listing (off by default).]]></short-description>
        <description><![CDATA[
          If true, produce a listing (off by default).
        ]]></description>
      </attribute>
      <attribute name="outputfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Output file.]]></short-description>
        <description><![CDATA[
          Set the output file.
        ]]></description>
      </attribute>
      <attribute name="resourcefile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of resource file to include.]]></short-description>
        <description><![CDATA[
          name of resource file to include.
        ]]></description>
      </attribute>
      <attribute name="srcdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Source directory containing the files to be compiled.]]></short-description>
        <description><![CDATA[
          Set the source directory containing the files to be compiled.
        ]]></description>
      </attribute>
      <attribute name="targettype" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Type of target, either "exe" or "library".]]></short-description>
        <description><![CDATA[
          Sets the type of target, either "exe" or "library".
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, enable verbose ILASM output.]]></short-description>
        <description><![CDATA[
          If true, enable verbose ILASM output.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="input" category="control"
      classname="org.apache.tools.ant.taskdefs.Input"
      >

  <short-description><![CDATA[Reads an input line from the console.]]></short-description>
  <description>
    <![CDATA[Reads an input line from the console.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="addproperty" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Defines the name of a property to be created from input.]]></short-description>
        <description><![CDATA[
          Defines the name of a property to be created from input. Behaviour is
 according to property task which means that existing properties
 cannot be overriden.
        ]]></description>
      </attribute>
      <attribute name="message" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Message which gets displayed to the user during the build run.]]></short-description>
        <description><![CDATA[
          Sets the Message which gets displayed to the user during the build run.
        ]]></description>
      </attribute>
      <attribute name="validargs" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Defines valid input parameters as comma separated strings.]]></short-description>
        <description><![CDATA[
          Defines valid input parameters as comma separated strings. If set, input
 task will reject any input not defined as accepted and requires the user
 to reenter it. Validargs are case sensitive. If you want 'a' and 'A' to
 be accepted you need to define both values as accepted arguments.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

      <body >
        <description><![CDATA[
          Set a multiline message.
        ]]></description>
      </body>

  </structure>

</task>


<task name="iplanet-ejbc" category="ejb"
      classname="org.apache.tools.ant.taskdefs.optional.ejb.IPlanetEjbcTask"
      >

  <short-description><![CDATA[Compiles EJB stubs and skeletons for the iPlanet Application Server.]]></short-description>
  <description>
    <![CDATA[Compiles EJB stubs and skeletons for the iPlanet Application Server.
 The EJBs to be processed are specified by the EJB 1.1 standard XML
 descriptor, and additional attributes are obtained from the iPlanet Application
 Server-specific XML descriptor.  Since the XML descriptors can include
 multiple EJBs, this is a convenient way of specifying many EJBs in a single
 Ant task.  The following attributes are allowed:
   <ul>
     <li><i>ejbdescriptor</i> -- Standard EJB 1.1 XML descriptor (typically
                                 titled "ejb-jar.xml").  This attribute is
                                 required.
     <li><i>iasdescriptor</i> -- EJB XML descriptor for iPlanet Application
                                 Server (typically titled "ias-ejb-jar.xml).
                                 This attribute is required.
     <li><i>dest</i> -- The is the base directory where the RMI stubs and
                        skeletons are written.  In addition, the class files
                        for each bean (home interface, remote interface, and
                        EJB implementation) must be found in this directory.
                        This attribute is required.
     <li><i>classpath</i> -- The classpath used when generating EJB stubs and
                             skeletons.  This is an optional attribute (if
                             omitted, the classpath specified when Ant was
                             started will be used).  Nested "classpath"
                             elements may also be used.
     <li><i>keepgenerated</i> -- Indicates whether or not the Java source
                                 files which are generated by ejbc will be
                                 saved or automatically deleted.  If "yes",
                                 the source files will be retained.  This is
                                 an optional attribute (if omitted, it
                                 defaults to "no").
     <li><i>debug</i> -- Indicates whether or not the ejbc utility should
                         log additional debugging statements to the standard
                         output.  If "yes", the additional debugging statements
                         will be generated (if omitted, it defaults to "no").
     <li><i>iashome</i> -- May be used to specify the "home" directory for
                           this iPlanet Application Server installation.  This
                           is used to find the ejbc utility if it isn't
                           included in the user's system path.  This is an
                           optional attribute (if specified, it should refer
                           to the <code>[install-location]/iplanet/ias6/ias
                           </code> directory).  If omitted, the ejbc utility
                           must be on the user's system path.
   </ul>
 <p>
 For each EJB specified, this task will locate the three classes that comprise
 the EJB.  If these class files cannot be located in the <code>dest</code>
 directory, the task will fail.  The task will also attempt to locate the EJB
 stubs and skeletons in this directory.  If found, the timestamps on the
 stubs and skeletons will be checked to ensure they are up to date.  Only if
 these files cannot be found or if they are out of date will ejbc be called
 to generate new stubs and skeletons.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used when compiling the EJB stubs and skeletons.]]></short-description>
        <description><![CDATA[
          Sets the classpath to be used when compiling the EJB stubs and skeletons.
        ]]></description>
      </attribute>
      <attribute name="debug" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, debugging output will be generated when ejbc is
 executed.]]></short-description>
        <description><![CDATA[
          If true, debugging output will be generated when ejbc is
 executed.
        ]]></description>
      </attribute>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory where the EJB source classes must exist
 and where the stubs and skeletons will be written.]]></short-description>
        <description><![CDATA[
          Sets the destination directory where the EJB source classes must exist
 and where the stubs and skeletons will be written.  The destination
 directory must exist before this task is executed.
        ]]></description>
      </attribute>
      <attribute name="ejbdescriptor" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Location of the standard XML EJB descriptor.]]></short-description>
        <description><![CDATA[
          Sets the location of the standard XML EJB descriptor.  Typically, this
 file is named "ejb-jar.xml".
        ]]></description>
      </attribute>
      <attribute name="iasdescriptor" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Location of the iAS-specific XML EJB descriptor.]]></short-description>
        <description><![CDATA[
          Sets the location of the iAS-specific XML EJB descriptor.  Typically,
 this file is named "ias-ejb-jar.xml".
        ]]></description>
      </attribute>
      <attribute name="iashome" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[May be used to specify the "home" directory for this iAS installation.]]></short-description>
        <description><![CDATA[
          May be used to specify the "home" directory for this iAS installation.
 The directory specified should typically be
 <code>[install-location]/iplanet/ias6/ias</code>.
        ]]></description>
      </attribute>
      <attribute name="keepgenerated" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, the Java source files which are generated by ejbc will be saved .]]></short-description>
        <description><![CDATA[
          If true, the Java source files which are generated by ejbc will be saved .
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds to the classpath used when compiling the EJB stubs and skeletons.]]></short-description>
        <description>
          <![CDATA[Adds to the classpath used when compiling the EJB stubs and skeletons.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="jar" category="packaging"
      classname="org.apache.tools.ant.taskdefs.Jar"
      matchingTask="true">

  <short-description><![CDATA[Creates a JAR archive.]]></short-description>
  <description>
    <![CDATA[Creates a JAR archive.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="basedir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Directory from which to archive files; optional.]]></short-description>
        <description><![CDATA[
          Directory from which to archive files; optional.
        ]]></description>
      </attribute>
      <attribute name="compress" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether we want to compress the files or only store them;
 optional, default=true;.]]></short-description>
        <description><![CDATA[
          Whether we want to compress the files or only store them;
 optional, default=true;
        ]]></description>
      </attribute>
      <attribute name="destfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file to create; required.]]></short-description>
        <description><![CDATA[
          The file to create; required.
        ]]></description>
      </attribute>
      <attribute name="duplicate" type="org.apache.tools.ant.taskdefs.Zip.Duplicate"
                 briefType="&quot;add&quot;, &quot;preserve&quot;, &quot;fail&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Sets behavior for when a duplicate file is about to be added -
 one of <code>keep</code>, <code>skip</code> or <code>overwrite</code>.]]></short-description>
        <description><![CDATA[
          Sets behavior for when a duplicate file is about to be added -
 one of <code>keep</code>, <code>skip</code> or <code>overwrite</code>.
 Possible values are: <code>keep</code> (keep both
 of the files); <code>skip</code> (keep the first version
 of the file found); <code>overwrite</code> overwrite the file
 with the new file
 Default for zip tasks is <code>keep</code>
        ]]></description>
      </attribute>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Encoding to use for filenames, defaults to the platform's
 default encoding.]]></short-description>
        <description><![CDATA[
          Encoding to use for filenames, defaults to the platform's
 default encoding.

 <p>For a list of possible values see <a
 href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html">http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html</a>.</p>
        ]]></description>
      </attribute>
      <attribute name="filesonly" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.]]></short-description>
        <description><![CDATA[
          If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.
        ]]></description>
      </attribute>
      <attribute name="index" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set whether or not to create an index list for classes.]]></short-description>
        <description><![CDATA[
          Set whether or not to create an index list for classes.
 This may speed up classloading in some cases.
        ]]></description>
      </attribute>
      <attribute name="manifest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The manifest file to use.]]></short-description>
        <description><![CDATA[
          The manifest file to use. This can be either the location of a manifest,
 or the name of a jar added through a fileset. If its the name of an added
 jar, the task expects the manifest to be in the jar at META-INF/MANIFEST.MF.
        ]]></description>
      </attribute>
      <attribute name="update" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.]]></short-description>
        <description><![CDATA[
          If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.
        ]]></description>
      </attribute>
      <attribute name="whenempty" type="org.apache.tools.ant.taskdefs.Zip.WhenEmpty"
                 briefType="&quot;fail&quot;, &quot;skip&quot;, &quot;create&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Sets behavior of the task when no files match.]]></short-description>
        <description><![CDATA[
          Sets behavior of the task when no files match.
 Possible values are: <code>fail</code> (throw an exception
 and halt the build); <code>skip</code> (do not create
 any archive, but issue a warning); <code>create</code>
 (make an archive with no entries).
 Default for zip tasks is <code>skip</code>;
 for jar tasks, <code>create</code>.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="manifest" type="org.apache.tools.ant.taskdefs.Manifest"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Allows the manifest for the archive file to be provided inline
 in the buildfile rather than in an external file.]]></short-description>
        <description>
          <![CDATA[Allows the manifest for the archive file to be provided inline
 in the buildfile rather than in an external file.]]>
        </description>
      </element>

      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files.]]></short-description>
        <description>
          <![CDATA[Adds a set of files.]]>
        </description>
      </element>

      <element name="metainf" type="org.apache.tools.ant.types.ZipFileSet"
               briefType="ZipFileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a zipfileset to include in the META-INF directory.]]></short-description>
        <description>
          <![CDATA[Adds a zipfileset to include in the META-INF directory.]]>
        </description>
      </element>

      <element name="zipgroupfileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a group of zip files.]]></short-description>
        <description>
          <![CDATA[Adds a group of zip files.]]>
        </description>
      </element>

      <element name="zipfileset" type="org.apache.tools.ant.types.ZipFileSet"
               briefType="ZipFileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files that can be
 read from an archive and be given a prefix/fullpath.]]></short-description>
        <description>
          <![CDATA[Adds a set of files that can be
 read from an archive and be given a prefix/fullpath.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="jarlib-available" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.extension.JarLibAvailableTask"
      >

  <short-description><![CDATA[Checks whether an extension is present in a fileset or an extensionSet.]]></short-description>
  <description>
    <![CDATA[Checks whether an extension is present in a fileset or an extensionSet.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The JAR library to check.]]></short-description>
        <description><![CDATA[
          The JAR library to check.
        ]]></description>
      </attribute>
      <attribute name="property" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of property to set if extensions are available.]]></short-description>
        <description><![CDATA[
          The name of property to set if extensions are available.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="extension" type="org.apache.tools.ant.taskdefs.optional.extension.ExtensionAdapter"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Extension looking for.]]></short-description>
        <description>
          <![CDATA[Set the Extension looking for.]]>
        </description>
      </element>

      <element name="extensionset" type="org.apache.tools.ant.taskdefs.optional.extension.ExtensionSet"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of extensions to search in.]]></short-description>
        <description>
          <![CDATA[Adds a set of extensions to search in.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="jarlib-display" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.extension.JarLibDisplayTask"
      >

  <short-description><![CDATA[Displays the "Optional Package" and "Package Specification" information contained within the specified JARs.]]></short-description>
  <description>
    <![CDATA[Displays the "Optional Package" and "Package Specification" information
 contained within the specified JARs.

 <p>Prior to JDK1.3, an "Optional Package" was known as an Extension.
 The specification for this mechanism is available in the JDK1.3
 documentation in the directory
 $JDK_HOME/docs/guide/extensions/versioning.html. Alternatively it is
 available online at <a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html">
 http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html</a>.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The JAR library to display information for.]]></short-description>
        <description><![CDATA[
          The JAR library to display information for.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files about which library data will be displayed.]]></short-description>
        <description>
          <![CDATA[Adds a set of files about which library data will be displayed.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="jarlib-manifest" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.extension.JarLibManifestTask"
      >

  <short-description><![CDATA[Generates a manifest that declares all the dependencies.]]></short-description>
  <description>
    <![CDATA[Generates a manifest that declares all the dependencies.
 The dependencies are determined by looking in the
 specified path and searching for Extension / "Optional Package"
 specifications in the manifests of the jars.

 <p>Prior to JDK1.3, an "Optional Package" was known as an Extension.
 The specification for this mechanism is available in the JDK1.3
 documentation in the directory
 $JDK_HOME/docs/guide/extensions/versioning.html. Alternatively it is
 available online at <a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html">
 http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html</a>.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="destfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The location where generated manifest is placed.]]></short-description>
        <description><![CDATA[
          The location where generated manifest is placed.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="attribute" type="org.apache.tools.ant.taskdefs.optional.extension.ExtraAttribute"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds an attribute that is to be put in main section of manifest.]]></short-description>
        <description>
          <![CDATA[Adds an attribute that is to be put in main section of manifest.]]>
        </description>
      </element>

      <element name="depends" type="org.apache.tools.ant.taskdefs.optional.extension.ExtensionSet"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of extensions that this library requires.]]></short-description>
        <description>
          <![CDATA[Adds a set of extensions that this library requires.]]>
        </description>
      </element>

      <element name="extension" type="org.apache.tools.ant.taskdefs.optional.extension.ExtensionAdapter"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds an extension that this library implements.]]></short-description>
        <description>
          <![CDATA[Adds an extension that this library implements.]]>
        </description>
      </element>

      <element name="options" type="org.apache.tools.ant.taskdefs.optional.extension.ExtensionSet"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of extensions that this library optionally requires.]]></short-description>
        <description>
          <![CDATA[Adds a set of extensions that this library optionally requires.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="jarlib-resolve" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.extension.JarLibResolveTask"
      >

  <short-description><![CDATA[Tries to locate a JAR to satisfy an extension and place location of JAR into property.]]></short-description>
  <description>
    <![CDATA[Tries to locate a JAR to satisfy an extension and place
 location of JAR into property.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="checkextension" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, libraries returned by nested resolvers should be
 checked to see if they supply extension.]]></short-description>
        <description><![CDATA[
          If true, libraries returned by nested resolvers should be
 checked to see if they supply extension.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, failure to locate library should fail build.]]></short-description>
        <description><![CDATA[
          If true, failure to locate library should fail build.
        ]]></description>
      </attribute>
      <attribute name="property" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of the property in which the location of
 library is stored.]]></short-description>
        <description><![CDATA[
          The name of the property in which the location of
 library is stored.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="ant" type="org.apache.tools.ant.taskdefs.optional.extension.resolvers.AntResolver"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds Ant resolver to run an Ant buildfile to generate a library.]]></short-description>
        <description>
          <![CDATA[Adds Ant resolver to run an Ant buildfile to generate a library.]]>
        </description>
      </element>

      <element name="extension" type="org.apache.tools.ant.taskdefs.optional.extension.ExtensionAdapter"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Extension looking for.]]></short-description>
        <description>
          <![CDATA[Set the Extension looking for.]]>
        </description>
      </element>

      <element name="location" type="org.apache.tools.ant.taskdefs.optional.extension.resolvers.LocationResolver"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds location resolver to look for a library in a location
 relative to project directory.]]></short-description>
        <description>
          <![CDATA[Adds location resolver to look for a library in a location
 relative to project directory.]]>
        </description>
      </element>

      <element name="url" type="org.apache.tools.ant.taskdefs.optional.extension.resolvers.URLResolver"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a URL resolver to download a library from a URL
 to a local file.]]></short-description>
        <description>
          <![CDATA[Adds a URL resolver to download a library from a URL
 to a local file.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="java" category="java"
      classname="org.apache.tools.ant.taskdefs.Java"
      >

  <short-description><![CDATA[Launcher for Java applications.]]></short-description>
  <description>
    <![CDATA[Launcher for Java applications. Allows use of
 the same JVM for the called application thus resulting in much
 faster operation.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="append" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, append output to existing file.]]></short-description>
        <description><![CDATA[
          If true, append output to existing file.
        ]]></description>
      </attribute>
      <attribute name="classname" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Java class to execute.]]></short-description>
        <description><![CDATA[
          Sets the Java class to execute.
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used when running the Java class.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used when running the Java class
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to use, by reference.]]></short-description>
        <description><![CDATA[
          Classpath to use, by reference.
        ]]></description>
      </attribute>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The working directory of the process.]]></short-description>
        <description><![CDATA[
          The working directory of the process
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, then fail if the command exits with a
 returncode other than 0.]]></short-description>
        <description><![CDATA[
          If true, then fail if the command exits with a
 returncode other than 0
        ]]></description>
      </attribute>
      <attribute name="fork" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, execute in a new VM.]]></short-description>
        <description><![CDATA[
          If true, execute in a new VM.
        ]]></description>
      </attribute>
      <attribute name="jvmversion" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[JVM version.]]></short-description>
        <description><![CDATA[
          Sets the JVM version.
        ]]></description>
      </attribute>
      <attribute name="jar" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The location of the JAR file to execute.]]></short-description>
        <description><![CDATA[
          The location of the JAR file to execute.
        ]]></description>
      </attribute>
      <attribute name="jvm" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Command used to start the VM (only if not forking).]]></short-description>
        <description><![CDATA[
          Set the command used to start the VM (only if not forking).
        ]]></description>
      </attribute>
      <attribute name="jvmargs" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Command line arguments for the JVM.]]></short-description>
        <description><![CDATA[
          Set the command line arguments for the JVM.
        ]]></description>
      </attribute>
      <attribute name="maxmemory" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Corresponds to -mx or -Xmx depending on VM version.]]></short-description>
        <description><![CDATA[
          Corresponds to -mx or -Xmx depending on VM version.
        ]]></description>
      </attribute>
      <attribute name="newenvironment" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, use a completely new environment.]]></short-description>
        <description><![CDATA[
          If true, use a completely new environment.

 <p>Will be ignored if we are not forking a new VM.
        ]]></description>
      </attribute>
      <attribute name="output" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File the output of the process is redirected to.]]></short-description>
        <description><![CDATA[
          File the output of the process is redirected to.
        ]]></description>
      </attribute>
      <attribute name="timeout" type="java.lang.Long"
                 briefType="long" required="NOTDEFINED">
        <short-description><![CDATA[Timeout in milliseconds after which the process will be killed.]]></short-description>
        <description><![CDATA[
          Timeout in milliseconds after which the process will be killed.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="env" type="org.apache.tools.ant.types.Environment.Variable"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds an environment variable.]]></short-description>
        <description>
          <![CDATA[Adds an environment variable.

 <p>Will be ignored if we are not forking a new VM.]]>
        </description>
      </element>

      <element name="sysproperty" type="org.apache.tools.ant.types.Environment.Variable"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a system property.]]></short-description>
        <description>
          <![CDATA[Adds a system property.]]>
        </description>
      </element>

      <element name="arg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a command-line argument.]]></short-description>
        <description>
          <![CDATA[Adds a command-line argument.]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a path to the classpath.]]></short-description>
        <description>
          <![CDATA[Adds a path to the classpath.]]>
        </description>
      </element>

      <element name="jvmarg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a JVM argument.]]></short-description>
        <description>
          <![CDATA[Adds a JVM argument.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="javac" category="java"
      classname="org.apache.tools.ant.taskdefs.Javac"
      matchingTask="true">

  <!-- javac task -->
<external>
<description>

<p>Compiles a Java source tree.</p>

<p>The source and destination directory will be recursively scanned for Java
source files to compile. Only Java files that have no corresponding class file
or where the class file is older than the java file will be compiled.</p>

<p>Note: Ant uses only the names of the source and class files to find
the classes that need a rebuild. It will not scan the source and therefor
will have no knowledge about nested classes, classes that are named different
from the source file and so on.</p>

<p>The directory structure of the source tree should follow the package
hierarchy.</p>

<p>It is possible to refine the set of files that are being compiled/copied.
This can be done with the <i>includes</i>, <i>includesfile</i>, <i>excludes</i>, <i>excludesfile</i> and <i>defaultexcludes</i>
attributes. With the <i>includes</i> or <i>includesfile</i> attribute you specify the files you want to
have included by using patterns. The <i>exclude</i> or <i>excludesfile</i> attribute is used to specify
the files you want to have excluded. This is also done with patterns. And
finally with the <i>defaultexcludes</i> attribute, you can specify whether you
want to use default exclusions or not. See the section on <a
href="../dirtasks.html#directorybasedtasks">directory based tasks</a>, on how the
inclusion/exclusion of files works, and how to write patterns.</p>

<p>It is possible to use different compilers. This can be selected with the
&quot;build.compiler&quot; property or the compiler attribute. Here are the choices:-</p>
<ul>
  <li>classic (the standard compiler of JDK 1.1/1.2) - javac1.1 and
     javac1.2 can be used as aliases</li>
  <li>modern (the standard compiler of JDK 1.3/1.4) - javac1.3 and
     javac1.4 can be used as aliases</li>
  <li>jikes (the <a
    href="http://oss.software.ibm.com/developerworks/opensource/jikes/project" target="_top">Jikes</a>
    compiler)</li>
  <li>jvc (the Command-Line Compiler from Microsoft's SDK for Java /
    Visual J++) - microsoft can be used as an alias</li>
  <li>kjc (the <a href="http://www.dms.at/kopi/" target="_top">kopi</a>
    compiler)</li>
  <li>gcj (the gcj compiler from gcc)</li>
  <li>sj (Symantec java compiler) - symantec can be used as an alias</li>
  <li>extJavac (run either modern or classic in a JVM of its own)</li>
</ul>
<p>For JDK 1.1/1.2, classic is the default. For JDK 1.3/1.4, modern is the default.
If you wish to use a different compiler interface than those
supplied, write a class that implements the CompilerAdapter interface
(package org.apache.tools.ant.taskdefs.compilers). Supply the full
classname in the &quot;build.compiler&quot; property.</p>

<p>The fork attribute overrides the build.compiler setting and expects
a JDK1.1 or higher to be set in java.home.</p>

<p>This task will drop all entries that point to non-existent
files/directories from the CLASSPATH it passes to the compiler.</p>

<p><strong>Windows Note:</strong>When the modern compiler is used
in unforked mode on Windows, it locks up the files present in the
classpath of the &lt;javac&gt; task, and does not release them.  The side
effect of this is that you will not be able to delete or move
those files later on in the build.  The workaround is to fork when
invoking the compiler.</p>

</description>

<section anchor="examples" name="Examples">
<pre>  &lt;javac srcdir=&quot;${src}&quot;
         destdir=&quot;${build}&quot;
         classpath=&quot;xyz.jar&quot;
         debug=&quot;on&quot;
  /&gt;</pre>
<p>compiles all <code>.java</code> files under the <code>${src}</code>
directory, and stores
the <code>.class</code> files in the <code>${build}</code> directory.
The classpath used contains <code>xyz.jar</code>, and debug information is on.</p>

<pre>  &lt;javac srcdir=&quot;${src}&quot;
         destdir=&quot;${build}&quot;
         fork=&quot;true&quot;
  /&gt;</pre>
<p>compiles all <code>.java</code> files under the <code>${src}</code>
directory, and stores the <code>.class</code> files in the
<code>${build}</code> directory.  This will fork off the javac
compiler using the default javac executable.</p>

<pre>  &lt;javac srcdir=&quot;${src}&quot;
         destdir=&quot;${build}&quot;
         fork=&quot;java$$javac.exe&quot;
  /&gt;</pre>
<p>compiles all <code>.java</code> files under the <code>${src}</code>
directory, and stores the <code>.class</code> files in the
<code>${build}</code> directory.  This will fork off the javac
compiler using the executable named <code>java$javac.exe</code>.  Note
that the <code>$</code> sign needs to be escaped by a second one.</p>

<pre>  &lt;javac srcdir=&quot;${src}&quot;
         destdir=&quot;${build}&quot;
         includes=&quot;mypackage/p1/**,mypackage/p2/**&quot;
         excludes=&quot;mypackage/p1/testpackage/**&quot;
         classpath=&quot;xyz.jar&quot;
         debug=&quot;on&quot;
  /&gt;</pre>
<p>compiles <code>.java</code> files under the <code>${src}</code>
directory, and stores the
<code>.class</code> files in the <code>${build}</code> directory.
The classpath used contains <code>xyz.jar</code>, and debug information is on.
Only files under <code>mypackage/p1</code> and <code>mypackage/p2</code> are
used. Files in the <code>mypackage/p1/testpackage</code> directory are excluded
from compilation.</p>

<pre>  &lt;javac srcdir=&quot;${src}:${src2}&quot;
         destdir=&quot;${build}&quot;
         includes=&quot;mypackage/p1/**,mypackage/p2/**&quot;
         excludes=&quot;mypackage/p1/testpackage/**&quot;
         classpath=&quot;xyz.jar&quot;
         debug=&quot;on&quot;
  /&gt;</pre>

<p>is the same as the previous example, with the addition of a second
source path, defined by
the property <code>src2</code>. This can also be represented using nested
<code>&lt;src&gt;</code> elements as follows:</p>

<pre>  &lt;javac destdir=&quot;${build}&quot;
         classpath=&quot;xyz.jar&quot;
         debug=&quot;on&quot;&gt;
    &lt;src path=&quot;${src}&quot;/&gt;
    &lt;src path=&quot;${src2}&quot;/&gt;
    &lt;include name=&quot;mypackage/p1/**&quot;/&gt;
    &lt;include name=&quot;mypackage/p2/**&quot;/&gt;
    &lt;exclude name=&quot;mypackage/p1/testpackage/**&quot;/&gt;
  &lt;/javac&gt;</pre>

<p><b>Note:</b> If you are using Ant on Windows and a new DOS window pops up
for every use of an external compiler, this may be a problem of the JDK you are using.
This problem may occur with all JDKs &lt; 1.2.</p>

<p><b>Note:</b> If you wish to compile only source-files located in some packages below a
common root you should not include these packages in the srcdir-attribute. Use include/exclude-attributes
or elements to filter for these packages. If you include part of your package-structure inside the srcdir-attribute
(or nested src-elements) Ant will start to recompile your sources every time you call it.</p>

</section>

<section anchor="jikes" name="Jikes Notes">

<p>Jikes supports some extra options, which can be set be defining
properties prior to invoking the task. The ant developers are aware that
this is ugly and inflexible -expect a better solution in the future. All
the options are boolean, and must be set to &quot;true&quot; or &quot;yes&quot; to be
interpreted as anything other than false; by default
build.compiler.warnings is &quot;true&quot; while all others are &quot;false&quot;</p>

<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top">
	build.compiler.emacs
	</td>
	<td valign="top">
	Enable emacs compatible error messages
    </td>
  </tr>
  <tr>
    <td valign="top">
	build.compiler.warnings<br />
        <b>This property has been deprecated, use the nowarn attribute
          instead</b>
	</td>
	<td valign="top">
	don't disable warning messages
    </td>
  </tr>
  <tr>
    <td valign="top">
	build.compiler.pedantic
	</td>
	<td valign="top">
	enable pedantic warnings
    </td>
  </tr>
  <tr>
    <td valign="top">
	build.compiler.fulldepend
	</td>
	<td valign="top">
	enable full dependency checking,<br />
	&quot;+F&quot; in the jikes manual.
    </td>
  </tr>
</table>

</section>
</external>

  <short-description><![CDATA[Compiles Java source files.]]></short-description>
  <description>
    <![CDATA[Compiles Java source files. This task can take the following
 arguments:
 <ul>
 <li>sourcedir
 <li>destdir
 <li>deprecation
 <li>classpath
 <li>bootclasspath
 <li>extdirs
 <li>optimize
 <li>debug
 <li>encoding
 <li>target
 <li>depend
 <li>vebose
 <li>failonerror
 <li>includeantruntime
 <li>includejavaruntime
 <li>source
 <li>compiler
 </ul>
 Of these arguments, the <b>sourcedir</b> and <b>destdir</b> are required.
 <p>
 When this task executes, it will recursively scan the sourcedir and
 destdir looking for Java source files to compile. This task makes its
 compile decision based on timestamp.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="bootclasspathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a classpath defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a classpath defined elsewhere.
        ]]></description>
      </attribute>
      <attribute name="bootclasspath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Bootclasspath that will be used to compile the classes
 against.]]></short-description>
        <description><![CDATA[
          Sets the bootclasspath that will be used to compile the classes
 against.
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used for this compilation.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used for this compilation.
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a classpath defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a classpath defined elsewhere.
        ]]></description>
      </attribute>
      <attribute name="compiler" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Choose the implementation for this particular task.]]></short-description>
        <description><![CDATA[
          Choose the implementation for this particular task.
        ]]></description>
      </attribute>
      <attribute name="debug" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicates whether source should be compiled
 with debug information; defaults to off.]]></short-description>
        <description><![CDATA[
          Indicates whether source should be compiled
 with debug information; defaults to off.
        ]]></description>
      </attribute>
      <attribute name="debuglevel" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Keyword list to be appended to the -g command-line switch.]]></short-description>
        <description><![CDATA[
          Keyword list to be appended to the -g command-line switch.

 This will be ignored by all implementations except modern
 and classic(ver >= 1.2). Legal values are none or a
 comma-separated list of the following keywords: lines, vars,
 and source. If debuglevel is not specified, by default, :none
 will be appended to -g. If debug is not turned on, this attribute
 will be ignored.
        ]]></description>
      </attribute>
      <attribute name="depend" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Enables dependency-tracking for compilers
 that support this (jikes and classic).]]></short-description>
        <description><![CDATA[
          Enables dependency-tracking for compilers
 that support this (jikes and classic).
        ]]></description>
      </attribute>
      <attribute name="deprecation" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicates whether source should be
 compiled with deprecation information; defaults to off.]]></short-description>
        <description><![CDATA[
          Indicates whether source should be
 compiled with deprecation information; defaults to off.
        ]]></description>
      </attribute>
      <attribute name="destdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory into which the Java source
 files should be compiled.]]></short-description>
        <description><![CDATA[
          Set the destination directory into which the Java source
 files should be compiled.
        ]]></description>
      </attribute>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Java source file encoding name.]]></short-description>
        <description><![CDATA[
          Set the Java source file encoding name.
        ]]></description>
      </attribute>
      <attribute name="executable" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of the javac executable.]]></short-description>
        <description><![CDATA[
          Sets the the name of the javac executable.

 <p>Ignored unless fork is true or extJavac has been specified
 as the compiler.</p>
        ]]></description>
      </attribute>
      <attribute name="extdirs" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Extension directories that will be used during the
 compilation.]]></short-description>
        <description><![CDATA[
          Sets the extension directories that will be used during the
 compilation.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicates whether the build will continue
 even if there are compilation errors; defaults to true.]]></short-description>
        <description><![CDATA[
          Indicates whether the build will continue
 even if there are compilation errors; defaults to true.
        ]]></description>
      </attribute>
      <attribute name="fork" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, forks the javac compiler.]]></short-description>
        <description><![CDATA[
          If true, forks the javac compiler.
        ]]></description>
      </attribute>
      <attribute name="includeantruntime" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, includes Ant's own classpath in the classpath.]]></short-description>
        <description><![CDATA[
          If true, includes Ant's own classpath in the classpath.
        ]]></description>
      </attribute>
      <attribute name="includejavaruntime" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, includes the Java runtime libraries in the classpath.]]></short-description>
        <description><![CDATA[
          If true, includes the Java runtime libraries in the classpath.
        ]]></description>
      </attribute>
      <attribute name="listfiles" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, list the source files being handed off to the compiler.]]></short-description>
        <description><![CDATA[
          If true, list the source files being handed off to the compiler.
        ]]></description>
      </attribute>
      <attribute name="memoryinitialsize" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The initial size of the memory for the underlying VM
 if javac is run externally; ignored otherwise.]]></short-description>
        <description><![CDATA[
          The initial size of the memory for the underlying VM
 if javac is run externally; ignored otherwise.
 Defaults to the standard VM memory setting.
 (Examples: 83886080, 81920k, or 80m)
        ]]></description>
      </attribute>
      <attribute name="memorymaximumsize" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The maximum size of the memory for the underlying VM
 if javac is run externally; ignored otherwise.]]></short-description>
        <description><![CDATA[
          The maximum size of the memory for the underlying VM
 if javac is run externally; ignored otherwise.
 Defaults to the standard VM memory setting.
 (Examples: 83886080, 81920k, or 80m)
        ]]></description>
      </attribute>
      <attribute name="nowarn" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, enables the -nowarn option.]]></short-description>
        <description><![CDATA[
          If true, enables the -nowarn option.
        ]]></description>
      </attribute>
      <attribute name="optimize" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, compiles with optimization enabled.]]></short-description>
        <description><![CDATA[
          If true, compiles with optimization enabled.
        ]]></description>
      </attribute>
      <attribute name="source" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Value of the -source command-line switch; will be ignored
 by all implementations except modern and jikes.]]></short-description>
        <description><![CDATA[
          Value of the -source command-line switch; will be ignored
 by all implementations except modern and jikes.

 If you use this attribute together with jikes, you must
 make sure that your version of jikes supports the -source switch.
 Legal values are 1.3 and 1.4 - by default, no -source argument
 will be used at all.
        ]]></description>
      </attribute>
      <attribute name="sourcepath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Sourcepath to be used for this compilation.]]></short-description>
        <description><![CDATA[
          Set the sourcepath to be used for this compilation.
        ]]></description>
      </attribute>
      <attribute name="sourcepathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a source path defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a source path defined elsewhere.
        ]]></description>
      </attribute>
      <attribute name="srcdir" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Source directories to find the source Java files.]]></short-description>
        <description><![CDATA[
          Set the source directories to find the source Java files.
        ]]></description>
      </attribute>
      <attribute name="target" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Target VM that the classes will be compiled for.]]></short-description>
        <description><![CDATA[
          Sets the target VM that the classes will be compiled for. Valid
 strings are "1.1", "1.2", and "1.3".
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, asks the compiler for verbose output.]]></short-description>
        <description><![CDATA[
          If true, asks the compiler for verbose output.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="bootclasspath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a path to the bootclasspath.]]></short-description>
        <description>
          <![CDATA[Adds a path to the bootclasspath.]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a path to the classpath.]]></short-description>
        <description>
          <![CDATA[Adds a path to the classpath.]]>
        </description>
      </element>

      <element name="compilerarg" type="org.apache.tools.ant.taskdefs.Javac.ImplementationSpecificArgument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds an implementation specific command-line argument.]]></short-description>
        <description>
          <![CDATA[Adds an implementation specific command-line argument.]]>
        </description>
      </element>

      <element name="extdirs" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a path to extdirs.]]></short-description>
        <description>
          <![CDATA[Adds a path to extdirs.]]>
        </description>
      </element>

      <element name="sourcepath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a path to sourcepath.]]></short-description>
        <description>
          <![CDATA[Adds a path to sourcepath.]]>
        </description>
      </element>

      <element name="src" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a path for source compilation.]]></short-description>
        <description>
          <![CDATA[Adds a path for source compilation.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="javacc" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.javacc.JavaCC"
      >

  <short-description><![CDATA[JavaCC compiler compiler task.]]></short-description>
  <description>
    <![CDATA[JavaCC compiler compiler task.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="buildparser" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[BUILD_PARSER grammar option.]]></short-description>
        <description><![CDATA[
          Sets the BUILD_PARSER grammar option.
        ]]></description>
      </attribute>
      <attribute name="buildtokenmanager" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[BUILD_TOKEN_MANAGER grammar option.]]></short-description>
        <description><![CDATA[
          Sets the BUILD_TOKEN_MANAGER grammar option.
        ]]></description>
      </attribute>
      <attribute name="cachetokens" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[CACHE_TOKENS grammar option.]]></short-description>
        <description><![CDATA[
          Sets the CACHE_TOKENS grammar option.
        ]]></description>
      </attribute>
      <attribute name="choiceambiguitycheck" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[CHOICE_AMBIGUITY_CHECK grammar option.]]></short-description>
        <description><![CDATA[
          Sets the CHOICE_AMBIGUITY_CHECK grammar option.
        ]]></description>
      </attribute>
      <attribute name="commontokenaction" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[COMMON_TOKEN_ACTION grammar option.]]></short-description>
        <description><![CDATA[
          Sets the COMMON_TOKEN_ACTION grammar option.
        ]]></description>
      </attribute>
      <attribute name="debuglookahead" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[DEBUG_LOOKAHEAD grammar option.]]></short-description>
        <description><![CDATA[
          Sets the DEBUG_LOOKAHEAD grammar option.
        ]]></description>
      </attribute>
      <attribute name="debugparser" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[DEBUG_PARSER grammar option.]]></short-description>
        <description><![CDATA[
          Sets the DEBUG_PARSER grammar option.
        ]]></description>
      </attribute>
      <attribute name="debugtokenmanager" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[DEBUG_TOKEN_MANAGER grammar option.]]></short-description>
        <description><![CDATA[
          Sets the DEBUG_TOKEN_MANAGER grammar option.
        ]]></description>
      </attribute>
      <attribute name="errorreporting" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[ERROR_REPORTING grammar option.]]></short-description>
        <description><![CDATA[
          Sets the ERROR_REPORTING grammar option.
        ]]></description>
      </attribute>
      <attribute name="forcelacheck" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[FORCE_LA_CHECK grammar option.]]></short-description>
        <description><![CDATA[
          Sets the FORCE_LA_CHECK grammar option.
        ]]></description>
      </attribute>
      <attribute name="ignorecase" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[IGNORE_CASE grammar option.]]></short-description>
        <description><![CDATA[
          Sets the IGNORE_CASE grammar option.
        ]]></description>
      </attribute>
      <attribute name="javacchome" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory containing the JavaCC distribution.]]></short-description>
        <description><![CDATA[
          The directory containing the JavaCC distribution.
        ]]></description>
      </attribute>
      <attribute name="javaunicodeescape" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[JAVA_UNICODE_ESCAPE grammar option.]]></short-description>
        <description><![CDATA[
          Sets the JAVA_UNICODE_ESCAPE grammar option.
        ]]></description>
      </attribute>
      <attribute name="lookahead" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[LOOKAHEAD grammar option.]]></short-description>
        <description><![CDATA[
          Sets the LOOKAHEAD grammar option.
        ]]></description>
      </attribute>
      <attribute name="optimizetokenmanager" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[OPTIMIZE_TOKEN_MANAGER grammar option.]]></short-description>
        <description><![CDATA[
          Sets the OPTIMIZE_TOKEN_MANAGER grammar option.
        ]]></description>
      </attribute>
      <attribute name="otherambiguitycheck" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[OTHER_AMBIGUITY_CHECK grammar option.]]></short-description>
        <description><![CDATA[
          Sets the OTHER_AMBIGUITY_CHECK grammar option.
        ]]></description>
      </attribute>
      <attribute name="outputdirectory" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory to write the generated files to.]]></short-description>
        <description><![CDATA[
          The directory to write the generated files to.
 If not set, the files are written to the directory
 containing the grammar file.
        ]]></description>
      </attribute>
      <attribute name="sanitycheck" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[SANITY_CHECK grammar option.]]></short-description>
        <description><![CDATA[
          Sets the SANITY_CHECK grammar option.
        ]]></description>
      </attribute>
      <attribute name="static" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[STATIC grammar option.]]></short-description>
        <description><![CDATA[
          Sets the STATIC grammar option.
        ]]></description>
      </attribute>
      <attribute name="target" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The grammar file to process.]]></short-description>
        <description><![CDATA[
          The grammar file to process.
        ]]></description>
      </attribute>
      <attribute name="unicodeinput" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[UNICODE_INPUT grammar option.]]></short-description>
        <description><![CDATA[
          Sets the UNICODE_INPUT grammar option.
        ]]></description>
      </attribute>
      <attribute name="usercharstream" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[USER_CHAR_STREAM grammar option.]]></short-description>
        <description><![CDATA[
          Sets the USER_CHAR_STREAM grammar option.
        ]]></description>
      </attribute>
      <attribute name="usertokenmanager" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[USER_TOKEN_MANAGER grammar option.]]></short-description>
        <description><![CDATA[
          Sets the USER_TOKEN_MANAGER grammar option.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="javadoc" category="java"
      classname="org.apache.tools.ant.taskdefs.Javadoc"
      >

  <!-- javadoc task -->
<external>
<description>

<p>Generates code documentation using the javadoc tool.</p>

<p>The source directory will be recursively scanned for Java source files to process
but only those matching the inclusion rules, and not matching the exclusions rules
will be passed to the javadoc tool. This
allows wildcards to be used to choose between package names, reducing verbosity
and management costs over time. This task, however, has no notion of
&quot;changed&quot; files, unlike the <a href="javac.html">javac</a> task. This means
all packages will be processed each time this task is run. In general, however,
this task is used much less frequently.</p>

<p>This task works seamlessly between different javadoc versions (1.1 and 1.2),
with the obvious restriction that the 1.2 attributes will be ignored if run in a
1.1 VM.</p>

<p>NOTE: since javadoc calls System.exit(), javadoc cannot be run inside the
same VM as ant without breaking functionality. For this reason, this task
always forks the VM. This overhead is not significant since javadoc is normally a heavy
application and will be called infrequently.</p>

<p>NOTE: the packagelist attribute allows you to specify the list of packages to
document outside of the Ant file. It's a much better practice to include everything
inside the build.xml file. This option was added in order to make it easier to
migrate from regular makefiles, where you would use this option of javadoc.
The packages listed in packagelist are not checked, so the task performs even
if some packages are missing or broken. Use this option if you wish to convert from
an existing makefile. Once things are running you should then switch to the regular
notation. </p>

<p><i><b>DEPRECATION:</b> the javadoc2 task simply points to the javadoc task and it's
there for back compatibility reasons. Since this task will be removed in future
versions, you are strongly encouraged to use <a href="javadoc.html">javadoc</a>
instead.</i></p>
</description>

<section anchor="examples" name="Example">
<pre>  &lt;javadoc packagenames=&quot;com.dummy.test.*&quot;
           sourcepath=&quot;src&quot;
           excludepackagenames=&quot;com.dummy.test.doc-files.*&quot;
           defaultexcludes=&quot;yes&quot;
           destdir=&quot;docs/api&quot;
           author=&quot;true&quot;
           version=&quot;true&quot;
           use=&quot;true&quot;
           windowtitle=&quot;Test API&quot;&gt;
    &lt;doctitle&gt;&lt;![CDATA[&lt;h1&gt;Test&lt;/h1&gt;]]&gt;&lt;/doctitle&gt;
    &lt;bottom&gt;&lt;![CDATA[&lt;i&gt;Copyright &amp;#169; 2000 Dummy Corp. All Rights Reserved.&lt;/i&gt;]]&gt;&lt;/bottom&gt;
    &lt;tag name=&quot;todo&quot; scope=&quot;all&quot; description=&quot;To do:&quot; /&gt;
    &lt;group title=&quot;Group 1 Packages&quot; packages=&quot;com.dummy.test.a*&quot;/&gt;
    &lt;group title=&quot;Group 2 Packages&quot; packages=&quot;com.dummy.test.b*:com.dummy.test.c*&quot;/&gt;
    &lt;link offline=&quot;true&quot; href=&quot;http://java.sun.com/products/jdk/1.2/docs/api/&quot; packagelistLoc=&quot;C:\tmp&quot;/&gt;
    &lt;link href=&quot;http://developer.java.sun.com/developer/products/xml/docs/api/&quot;/&gt;
  &lt;/javadoc&gt;</pre>
</section>
</external>

  <short-description><![CDATA[Generates Javadoc documentation for a collection of source code.]]></short-description>
  <description>
    <![CDATA[Generates Javadoc documentation for a collection
 of source code.

 <P>Current known limitations are:

 <P><UL>
    <LI>patterns must be of the form "xxx.*", every other pattern doesn't
        work.
    <LI>there is no control on arguments sanity since they are left
        to the javadoc implementation.
    <LI>argument J in javadoc1 is not supported (what is that for anyway?)
 </UL>

 <P>If no <CODE>doclet</CODE> is set, then the <CODE>version</CODE> and
 <CODE>author</CODE> are by default <CODE>"yes"</CODE>.

 <P>Note: This task is run on another VM because the Javadoc code calls
 <CODE>System.exit()</CODE> which would break Ant functionality.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="access" type="org.apache.tools.ant.taskdefs.Javadoc.AccessType"
                 briefType="&quot;protected&quot;, &quot;public&quot;, &quot;package&quot;, &quot;private&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Scope to be processed.]]></short-description>
        <description><![CDATA[
          Set the scope to be processed. This is an alternative to the
 use of the setPublic, setPrivate, etc methods. It gives better build
 file control over what scope is processed.
        ]]></description>
      </attribute>
      <attribute name="additionalparam" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set an additional parameter on the command line.]]></short-description>
        <description><![CDATA[
          Set an additional parameter on the command line
        ]]></description>
      </attribute>
      <attribute name="author" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Include the author tag in the generated documentation.]]></short-description>
        <description><![CDATA[
          Include the author tag in the generated documentation.
        ]]></description>
      </attribute>
      <attribute name="bootclasspathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a CLASSPATH defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a CLASSPATH defined elsewhere.
        ]]></description>
      </attribute>
      <attribute name="bootclasspath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Boot classpath to use.]]></short-description>
        <description><![CDATA[
          Set the boot classpath to use.
        ]]></description>
      </attribute>
      <attribute name="bottom" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Text to be placed at the bottom of each output file.]]></short-description>
        <description><![CDATA[
          Set the text to be placed at the bottom of each output file.
        ]]></description>
      </attribute>
      <attribute name="charset" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Charset for cross-platform viewing of generated documentation.]]></short-description>
        <description><![CDATA[
          Charset for cross-platform viewing of generated documentation.
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used for this javadoc run.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used for this javadoc run.
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a CLASSPATH defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a CLASSPATH defined elsewhere.
        ]]></description>
      </attribute>
      <attribute name="defaultexcludes" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether default exclusions should be used or not.]]></short-description>
        <description><![CDATA[
          Sets whether default exclusions should be used or not.
        ]]></description>
      </attribute>
      <attribute name="destdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Directory where the Javadoc output will be generated.]]></short-description>
        <description><![CDATA[
          Set the directory where the Javadoc output will be generated.
        ]]></description>
      </attribute>
      <attribute name="docencoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Output file encoding name.]]></short-description>
        <description><![CDATA[
          Output file encoding name.
        ]]></description>
      </attribute>
      <attribute name="doclet" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Class that starts the doclet used in generating the 
 documentation.]]></short-description>
        <description><![CDATA[
          Set the class that starts the doclet used in generating the 
 documentation.
        ]]></description>
      </attribute>
      <attribute name="docletpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath used to find the doclet class.]]></short-description>
        <description><![CDATA[
          Set the classpath used to find the doclet class.
        ]]></description>
      </attribute>
      <attribute name="docletpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Classpath used to find the doclet class by reference.]]></short-description>
        <description><![CDATA[
          Set the classpath used to find the doclet class by reference.
        ]]></description>
      </attribute>
      <attribute name="doctitle" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Title of the generated overview page.]]></short-description>
        <description><![CDATA[
          Set the title of the generated overview page.
        ]]></description>
      </attribute>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Encoding name of the source files,.]]></short-description>
        <description><![CDATA[
          Set the encoding name of the source files,
        ]]></description>
      </attribute>
      <attribute name="excludepackagenames" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[List of packages to be excluded.]]></short-description>
        <description><![CDATA[
          Set the list of packages to be excluded.
        ]]></description>
      </attribute>
      <attribute name="extdirs" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Location of the extensions directories.]]></short-description>
        <description><![CDATA[
          Set the location of the extensions directories.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Should the build process fail if javadoc fails (as indicated by
 a non zero return code)?.]]></short-description>
        <description><![CDATA[
          Should the build process fail if javadoc fails (as indicated by
 a non zero return code)?

 <p>Default is false.</p>
        ]]></description>
      </attribute>
      <attribute name="footer" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Footer text to be placed at the bottom of each output file.]]></short-description>
        <description><![CDATA[
          Set the footer text to be placed at the bottom of each output file.
        ]]></description>
      </attribute>
      <attribute name="group" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Group specified packages together in overview page.]]></short-description>
        <description><![CDATA[
          Group specified packages together in overview page.
        ]]></description>
      </attribute>
      <attribute name="header" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Header text to be placed at the top of each output file.]]></short-description>
        <description><![CDATA[
          Set the header text to be placed at the top of each output file.
        ]]></description>
      </attribute>
      <attribute name="helpfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the HTML help file to use.]]></short-description>
        <description><![CDATA[
          Specifies the HTML help file to use.
        ]]></description>
      </attribute>
      <attribute name="link" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Create links to javadoc output at the given URL.]]></short-description>
        <description><![CDATA[
          Create links to javadoc output at the given URL.
        ]]></description>
      </attribute>
      <attribute name="linkoffline" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Link to docs at "url" using package list at "url2"
 - separate the URLs by using a space character.]]></short-description>
        <description><![CDATA[
          Link to docs at "url" using package list at "url2"
 - separate the URLs by using a space character.
        ]]></description>
      </attribute>
      <attribute name="locale" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Local to use in documentation generation.]]></short-description>
        <description><![CDATA[
          Set the local to use in documentation generation.
        ]]></description>
      </attribute>
      <attribute name="maxmemory" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Maximum memory to be used by the javadoc process.]]></short-description>
        <description><![CDATA[
          Set the maximum memory to be used by the javadoc process
        ]]></description>
      </attribute>
      <attribute name="nodeprecated" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, do not include @deprecated information.]]></short-description>
        <description><![CDATA[
          If true, do not include @deprecated information.
        ]]></description>
      </attribute>
      <attribute name="nodeprecatedlist" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, do not generate deprecated list.]]></short-description>
        <description><![CDATA[
          If true, do not generate deprecated list.
        ]]></description>
      </attribute>
      <attribute name="nohelp" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, do not generate help link.]]></short-description>
        <description><![CDATA[
          If true, do not generate help link
        ]]></description>
      </attribute>
      <attribute name="noindex" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, do not generate index.]]></short-description>
        <description><![CDATA[
          If true, do not generate index.
        ]]></description>
      </attribute>
      <attribute name="nonavbar" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, do not generate navigation bar.]]></short-description>
        <description><![CDATA[
          If true, do not generate navigation bar.
        ]]></description>
      </attribute>
      <attribute name="notree" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, do not generate class hierarchy.]]></short-description>
        <description><![CDATA[
          If true, do not generate class hierarchy.
        ]]></description>
      </attribute>
      <attribute name="old" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicate whether Javadoc should produce old style (JDK 1.1) 
 documentation.]]></short-description>
        <description><![CDATA[
          Indicate whether Javadoc should produce old style (JDK 1.1) 
 documentation.

 This is not supported by JDK 1.1 and has been phased out in JDK 1.4
        ]]></description>
      </attribute>
      <attribute name="overview" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Specify the file containing the overview to be included in the generated
 documentation.]]></short-description>
        <description><![CDATA[
          Specify the file containing the overview to be included in the generated
 documentation.
        ]]></description>
      </attribute>
      <attribute name="package" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicate whether only package, protected and public classes and 
 members are to be included in the scope processed.]]></short-description>
        <description><![CDATA[
          Indicate whether only package, protected and public classes and 
 members are to be included in the scope processed
        ]]></description>
      </attribute>
      <attribute name="packagelist" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of a file containing the packages to process.]]></short-description>
        <description><![CDATA[
          The name of a file containing the packages to process.
        ]]></description>
      </attribute>
      <attribute name="packagenames" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Package names to be processed.]]></short-description>
        <description><![CDATA[
          Set the package names to be processed.
        ]]></description>
      </attribute>
      <attribute name="private" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicate whether all classes and 
 members are to be included in the scope processed.]]></short-description>
        <description><![CDATA[
          Indicate whether all classes and 
 members are to be included in the scope processed
        ]]></description>
      </attribute>
      <attribute name="protected" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicate whether only protected and public classes and members are to 
 be included in the scope processed.]]></short-description>
        <description><![CDATA[
          Indicate whether only protected and public classes and members are to 
 be included in the scope processed
        ]]></description>
      </attribute>
      <attribute name="public" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicate whether only public classes and members are to be included in 
 the scope processed.]]></short-description>
        <description><![CDATA[
          Indicate whether only public classes and members are to be included in 
 the scope processed
        ]]></description>
      </attribute>
      <attribute name="serialwarn" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, generate warning about @serial tag.]]></short-description>
        <description><![CDATA[
          If true, generate warning about @serial tag.
        ]]></description>
      </attribute>
      <attribute name="source" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Enables the -source switch, will be ignored if javadoc is not
 the 1.4 version or a different doclet than the standard doclet
 is used.]]></short-description>
        <description><![CDATA[
          Enables the -source switch, will be ignored if javadoc is not
 the 1.4 version or a different doclet than the standard doclet
 is used.
        ]]></description>
      </attribute>
      <attribute name="sourcefiles" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[List of source files to process.]]></short-description>
        <description><![CDATA[
          Set the list of source files to process.
        ]]></description>
      </attribute>
      <attribute name="sourcepath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Specify where to find source file.]]></short-description>
        <description><![CDATA[
          Specify where to find source file
        ]]></description>
      </attribute>
      <attribute name="sourcepathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a CLASSPATH defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a CLASSPATH defined elsewhere.
        ]]></description>
      </attribute>
      <attribute name="splitindex" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Generate a split index.]]></short-description>
        <description><![CDATA[
          Generate a split index
        ]]></description>
      </attribute>
      <attribute name="stylesheetfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the CSS stylesheet file to use.]]></short-description>
        <description><![CDATA[
          Specifies the CSS stylesheet file to use.
        ]]></description>
      </attribute>
      <attribute name="use" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Generate the &quot;use&quot page for each package.]]></short-description>
        <description><![CDATA[
          Generate the &quot;use&quot page for each package.
        ]]></description>
      </attribute>
      <attribute name="useexternalfile" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Work around command line length limit by using an external file
 for the sourcefiles.]]></short-description>
        <description><![CDATA[
          Work around command line length limit by using an external file
 for the sourcefiles.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Run javadoc in verbose mode.]]></short-description>
        <description><![CDATA[
          Run javadoc in verbose mode
        ]]></description>
      </attribute>
      <attribute name="version" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Include the version tag in the generated documentation.]]></short-description>
        <description><![CDATA[
          Include the version tag in the generated documentation.
        ]]></description>
      </attribute>
      <attribute name="windowtitle" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Title to be placed in the HTML &lt;title&gt; tag of the 
 generated documentation.]]></short-description>
        <description><![CDATA[
          Set the title to be placed in the HTML &lt;title&gt; tag of the 
 generated documentation.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="bottom" type="org.apache.tools.ant.taskdefs.Javadoc.Html"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Text to be placed at the bottom of each output file.]]></short-description>
        <description>
          <![CDATA[Set the text to be placed at the bottom of each output file.]]>
        </description>
      </element>

      <element name="doctitle" type="org.apache.tools.ant.taskdefs.Javadoc.Html"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a document title to use for the overview page.]]></short-description>
        <description>
          <![CDATA[Add a document title to use for the overview page.]]>
        </description>
      </element>

      <element name="excludepackage" type="org.apache.tools.ant.taskdefs.Javadoc.PackageName"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a package to be excluded from the javadoc run.]]></short-description>
        <description>
          <![CDATA[Add a package to be excluded from the javadoc run.]]>
        </description>
      </element>

      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a fileset.]]></short-description>
        <description>
          <![CDATA[Adds a fileset.

 <p>All included files will be added as sourcefiles.  The task
 will automatically add
 <code>includes=&quot;**&#47;*.java&quot;</code> to the
 fileset.</p>]]>
        </description>
      </element>

      <element name="footer" type="org.apache.tools.ant.taskdefs.Javadoc.Html"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Footer text to be placed at the bottom of each output file.]]></short-description>
        <description>
          <![CDATA[Set the footer text to be placed at the bottom of each output file.]]>
        </description>
      </element>

      <element name="header" type="org.apache.tools.ant.taskdefs.Javadoc.Html"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Header text to be placed at the top of each output file.]]></short-description>
        <description>
          <![CDATA[Set the header text to be placed at the top of each output file.]]>
        </description>
      </element>

      <element name="package" type="org.apache.tools.ant.taskdefs.Javadoc.PackageName"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a single package to be processed.]]></short-description>
        <description>
          <![CDATA[Add a single package to be processed.

 If the package name ends with &quot;.*&quot; the Javadoc task
 will find and process all subpackages.]]>
        </description>
      </element>

      <element name="packageset" type="org.apache.tools.ant.types.DirSet"
               briefType="Dirset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a packageset.]]></short-description>
        <description>
          <![CDATA[Adds a packageset.

 <p>All included directories will be translated into package
 names be converting the directory separator into dots.</p>]]>
        </description>
      </element>

      <element name="source" type="org.apache.tools.ant.taskdefs.Javadoc.SourceFile"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a single source file.]]></short-description>
        <description>
          <![CDATA[Add a single source file.]]>
        </description>
      </element>

      <element name="taglet" type="org.apache.tools.ant.taskdefs.Javadoc.ExtensionInfo"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a taglet.]]></short-description>
        <description>
          <![CDATA[Add a taglet]]>
        </description>
      </element>

      <element name="bootclasspath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Create a Path to be configured with the boot classpath.]]></short-description>
        <description>
          <![CDATA[Create a Path to be configured with the boot classpath]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Create a Path to be configured with the classpath to use.]]></short-description>
        <description>
          <![CDATA[Create a Path to be configured with the classpath to use]]>
        </description>
      </element>

      <element name="doclet" type="org.apache.tools.ant.taskdefs.Javadoc.DocletInfo"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Create a doclet to be used in the documentation generation.]]></short-description>
        <description>
          <![CDATA[Create a doclet to be used in the documentation generation.]]>
        </description>
      </element>

      <element name="group" type="org.apache.tools.ant.taskdefs.Javadoc.GroupArgument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Separates packages on the overview page into whatever
 groups you specify, one group per table.]]></short-description>
        <description>
          <![CDATA[Separates packages on the overview page into whatever
 groups you specify, one group per table.]]>
        </description>
      </element>

      <element name="link" type="org.apache.tools.ant.taskdefs.Javadoc.LinkArgument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Create link to javadoc output at the given URL.]]></short-description>
        <description>
          <![CDATA[Create link to javadoc output at the given URL.]]>
        </description>
      </element>

      <element name="sourcepath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Create a path to be configured with the locations of the source
 files.]]></short-description>
        <description>
          <![CDATA[Create a path to be configured with the locations of the source
 files.]]>
        </description>
      </element>

      <element name="tag" type="org.apache.tools.ant.taskdefs.Javadoc.TagArgument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Creates and adds a -tag argument.]]></short-description>
        <description>
          <![CDATA[Creates and adds a -tag argument. This is used to specify
 custom tags. This argument is only available for JavaDoc 1.4,
 and will generate a verbose message (and then be ignored)
 when run on Java versions below 1.4.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="javah" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.Javah"
      >

  <short-description><![CDATA[Generates JNI header files using javah.]]></short-description>
  <description>
    <![CDATA[Generates JNI header files using javah.

 This task can take the following arguments:
 <ul>
 <li>classname - the fully-qualified name of a class</li>
 <li>outputFile - Concatenates the resulting header or source files for all
     the classes listed into this file</li>
 <li>destdir - Sets the directory where javah saves the header files or the
     stub files</li>
 <li>classpath</li>
 <li>bootclasspath</li>
 <li>force - Specifies that output files should always be written
(JDK1.2 only)</li>
 <li>old - Specifies that old JDK1.0-style header files should be generated
     (otherwise output file contain JNI-style native method
      function prototypes) (JDK1.2 only)</li>
 <li>stubs - generate C declarations from the Java object file (used with old)</li>
 <li>verbose - causes javah to print a message to stdout concerning the status
     of the generated files</li>
 <li>extdirs - Override location of installed extensions</li>
 </ul>
 Of these arguments, either <b>outputFile</b> or <b>destdir</b> is required,
 but not both. More than one classname may be specified, using a comma-separated
 list or by using <code>&lt;class name="xxx"&gt;</code> elements within the task.
 <p>
 When this task executes, it will generate C header and source files that
 are needed to implement native methods.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="bootclasspathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a classpath defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a classpath defined elsewhere.
        ]]></description>
      </attribute>
      <attribute name="bootclasspath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Location of bootstrap class files.]]></short-description>
        <description><![CDATA[
          location of bootstrap class files.
        ]]></description>
      </attribute>
      <attribute name="class" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The fully-qualified name of the class (or classes, separated by commas).]]></short-description>
        <description><![CDATA[
          the fully-qualified name of the class (or classes, separated by commas).
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[The classpath to use.]]></short-description>
        <description><![CDATA[
          the classpath to use.
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a classpath defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a classpath defined elsewhere.
        ]]></description>
      </attribute>
      <attribute name="destdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory into which the Java source
 files should be compiled.]]></short-description>
        <description><![CDATA[
          Set the destination directory into which the Java source
 files should be compiled.
        ]]></description>
      </attribute>
      <attribute name="force" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, output files should always be written (JDK1.2 only).]]></short-description>
        <description><![CDATA[
          If true, output files should always be written (JDK1.2 only).
        ]]></description>
      </attribute>
      <attribute name="old" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, specifies that old JDK1.0-style header files should be
 generated.
 (otherwise output file contain JNI-style native method function prototypes) (JDK1.2 only).]]></short-description>
        <description><![CDATA[
          If true, specifies that old JDK1.0-style header files should be
 generated.
 (otherwise output file contain JNI-style native method function prototypes) (JDK1.2 only)
        ]]></description>
      </attribute>
      <attribute name="outputfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Concatenates the resulting header or source files for all
 the classes listed into this file.]]></short-description>
        <description><![CDATA[
          Concatenates the resulting header or source files for all
 the classes listed into this file.
        ]]></description>
      </attribute>
      <attribute name="stubs" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, generate C declarations from the Java object file (used with old).]]></short-description>
        <description><![CDATA[
          If true, generate C declarations from the Java object file (used with old).
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, causes Javah to print a message concerning
 the status of the generated files.]]></short-description>
        <description><![CDATA[
          If true, causes Javah to print a message concerning
 the status of the generated files.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="bootclasspath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds path to bootstrap class files.]]></short-description>
        <description>
          <![CDATA[Adds path to bootstrap class files.]]>
        </description>
      </element>

      <element name="class" type="org.apache.tools.ant.taskdefs.optional.Javah.ClassArgument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds class to process.]]></short-description>
        <description>
          <![CDATA[Adds class to process.]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Path to use for classpath.]]></short-description>
        <description>
          <![CDATA[Path to use for classpath.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="jdepend" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.jdepend.JDependTask"
      >

  <short-description><![CDATA[Runs JDepend tests.]]></short-description>
  <description>
    <![CDATA[Runs JDepend tests.

 <p>JDepend is a tool to generate design quality metrics for each Java package.
 It has been initially created by Mike Clark. JDepend can be found at <a
 href="http://www.clarkware.com/software/JDepend.html">http://www.clarkware.com/software/JDepend.html</a>.

 The current implementation spawn a new Java VM.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used for this compilation.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used for this compilation.
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a classpath defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a classpath defined elsewhere.
        ]]></description>
      </attribute>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory to invoke the VM in.]]></short-description>
        <description><![CDATA[
          The directory to invoke the VM in. Ignored if no JVM is forked.
        ]]></description>
      </attribute>
      <attribute name="fork" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, forks into a new JVM.]]></short-description>
        <description><![CDATA[
          If true, forks into a new JVM. Default: false.
        ]]></description>
      </attribute>
      <attribute name="format" type="org.apache.tools.ant.taskdefs.optional.jdepend.JDependTask.FormatAttribute"
                 briefType="&quot;xml&quot;, &quot;text&quot;" required="NOTDEFINED">
        <short-description><![CDATA[The format to write the output in, "xml" or "text".]]></short-description>
        <description><![CDATA[
          The format to write the output in, "xml" or "text".
        ]]></description>
      </attribute>
      <attribute name="haltonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether or not to halt on failure.]]></short-description>
        <description><![CDATA[
          Whether or not to halt on failure. Default: false.
        ]]></description>
      </attribute>
      <attribute name="jvm" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The command used to invoke a forked Java Virtual Machine.]]></short-description>
        <description><![CDATA[
          The command used to invoke a forked Java Virtual Machine.

 Default is <tt>java</tt>. Ignored if no JVM is forked.
        ]]></description>
      </attribute>
      <attribute name="outputfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The output file name.]]></short-description>
        <description><![CDATA[
          The output file name.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a path to the classpath.]]></short-description>
        <description>
          <![CDATA[Adds a path to the classpath.]]>
        </description>
      </element>

      <element name="sourcespath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a path to source code to analyze.]]></short-description>
        <description>
          <![CDATA[Adds a path to source code to analyze.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="jjtree" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.javacc.JJTree"
      >

  <short-description><![CDATA[Runs the JJTree compiler compiler.]]></short-description>
  <description>
    <![CDATA[Runs the JJTree compiler compiler.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="buildnodefiles" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[BUILD_NODE_FILES grammar option.]]></short-description>
        <description><![CDATA[
          Sets the BUILD_NODE_FILES grammar option.
        ]]></description>
      </attribute>
      <attribute name="javacchome" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory containing the JavaCC distribution.]]></short-description>
        <description><![CDATA[
          The directory containing the JavaCC distribution.
        ]]></description>
      </attribute>
      <attribute name="multi" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[MULTI grammar option.]]></short-description>
        <description><![CDATA[
          Sets the MULTI grammar option.
        ]]></description>
      </attribute>
      <attribute name="nodedefaultvoid" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[NODE_DEFAULT_VOID grammar option.]]></short-description>
        <description><![CDATA[
          Sets the NODE_DEFAULT_VOID grammar option.
        ]]></description>
      </attribute>
      <attribute name="nodefactory" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[NODE_FACTORY grammar option.]]></short-description>
        <description><![CDATA[
          Sets the NODE_FACTORY grammar option.
        ]]></description>
      </attribute>
      <attribute name="nodepackage" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[NODE_PACKAGE grammar option.]]></short-description>
        <description><![CDATA[
          Sets the NODE_PACKAGE grammar option.
        ]]></description>
      </attribute>
      <attribute name="nodeprefix" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[NODE_PREFIX grammar option.]]></short-description>
        <description><![CDATA[
          Sets the NODE_PREFIX grammar option.
        ]]></description>
      </attribute>
      <attribute name="nodescopehook" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[NODE_SCOPE_HOOK grammar option.]]></short-description>
        <description><![CDATA[
          Sets the NODE_SCOPE_HOOK grammar option.
        ]]></description>
      </attribute>
      <attribute name="nodeusesparser" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[NODE_USES_PARSER grammar option.]]></short-description>
        <description><![CDATA[
          Sets the NODE_USES_PARSER grammar option.
        ]]></description>
      </attribute>
      <attribute name="outputdirectory" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory to write the generated file to.]]></short-description>
        <description><![CDATA[
          The directory to write the generated file to.
 If not set, the files are written to the directory
 containing the grammar file.
        ]]></description>
      </attribute>
      <attribute name="static" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[STATIC grammar option.]]></short-description>
        <description><![CDATA[
          Sets the STATIC grammar option.
        ]]></description>
      </attribute>
      <attribute name="target" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The jjtree grammar file to process.]]></short-description>
        <description><![CDATA[
          The jjtree grammar file to process.
        ]]></description>
      </attribute>
      <attribute name="visitor" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[VISITOR grammar option.]]></short-description>
        <description><![CDATA[
          Sets the VISITOR grammar option.
        ]]></description>
      </attribute>
      <attribute name="visitorexception" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[VISITOR_EXCEPTION grammar option.]]></short-description>
        <description><![CDATA[
          Sets the VISITOR_EXCEPTION grammar option.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="jpcoverage" category="metrics"
      classname="org.apache.tools.ant.taskdefs.optional.sitraka.Coverage"
      >

  <short-description><![CDATA[Runs Sitraka JProbe Coverage.]]></short-description>
  <description>
    <![CDATA[Runs Sitraka JProbe Coverage.

 Options are pretty numerous, you'd better check the manual for a full
 descriptions of options. (not that simple since they differ from the online
 help, from the usage command line and from the examples...)
 <p>
 For additional information, visit <a href="http://www.sitraka.com">www.sitraka.com</a>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="applet" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, run an applet.]]></short-description>
        <description><![CDATA[
          If true, run an applet.
        ]]></description>
      </attribute>
      <attribute name="classname" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Classname to run as standalone or runner for filesets.]]></short-description>
        <description><![CDATA[
          classname to run as standalone or runner for filesets.
        ]]></description>
      </attribute>
      <attribute name="exitprompt" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Toggles display of the console prompt: always, error, never.]]></short-description>
        <description><![CDATA[
          Toggles display of the console prompt: always, error, never
        ]]></description>
      </attribute>
      <attribute name="finalsnapshot" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Type of snapshot to send at program termination: none, coverage, all.]]></short-description>
        <description><![CDATA[
          Type of snapshot to send at program termination: none, coverage, all.
 Can be null, default to none
        ]]></description>
      </attribute>
      <attribute name="home" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory where JProbe is installed.]]></short-description>
        <description><![CDATA[
          The directory where JProbe is installed.
        ]]></description>
      </attribute>
      <attribute name="javaexe" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Path to the java executable.]]></short-description>
        <description><![CDATA[
          Path to the java executable.
        ]]></description>
      </attribute>
      <attribute name="recordfromstart" type="org.apache.tools.ant.taskdefs.optional.sitraka.Coverage.Recordfromstart"
                 briefType="&quot;coverage&quot;, &quot;none&quot;, &quot;all&quot;" required="NOTDEFINED">
        <short-description><![CDATA["all", "coverage",  or "none".]]></short-description>
        <description><![CDATA[
          "all", "coverage",  or "none".
        ]]></description>
      </attribute>
      <attribute name="seedname" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Seed name for snapshot file.]]></short-description>
        <description><![CDATA[
          seed name for snapshot file. Can be null, default to snap
        ]]></description>
      </attribute>
      <attribute name="snapshotdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The path to the directory where snapshot files are stored.]]></short-description>
        <description><![CDATA[
          The path to the directory where snapshot files are stored.
 Choose a directory that is reachable by both the remote
 and local computers, and enter the same path on the command-line
 and in the viewer.
        ]]></description>
      </attribute>
      <attribute name="tracknatives" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, track native methods.]]></short-description>
        <description><![CDATA[
          If true, track native methods.
        ]]></description>
      </attribute>
      <attribute name="vm" type="org.apache.tools.ant.taskdefs.optional.sitraka.Coverage.Javavm"
                 briefType="&quot;java2&quot;, &quot;jdk118&quot;, &quot;jdk117&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Indicates which virtual machine to run: "jdk117", "jdk118" or "java2".]]></short-description>
        <description><![CDATA[
          Indicates which virtual machine to run: "jdk117", "jdk118" or "java2".
 Can be null, default to "java2".
        ]]></description>
      </attribute>
      <attribute name="warnlevel" type="java.lang.Integer"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Set warning level (0-3, where 0 is the least amount of warnings).]]></short-description>
        <description><![CDATA[
          Set warning level (0-3, where 0 is the least amount of warnings).
        ]]></description>
      </attribute>
      <attribute name="workingdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The physical path to the working directory for the VM.]]></short-description>
        <description><![CDATA[
          The physical path to the working directory for the VM.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[The classnames to execute.]]></short-description>
        <description>
          <![CDATA[the classnames to execute.]]>
        </description>
      </element>

      <element name="arg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a command argument.]]></short-description>
        <description>
          <![CDATA[Adds a command argument.]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Classpath to run the files.]]></short-description>
        <description>
          <![CDATA[classpath to run the files.]]>
        </description>
      </element>

      <element name="filters" type="org.apache.tools.ant.taskdefs.optional.sitraka.Filters"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Defines class/method filters based on pattern matching.]]></short-description>
        <description>
          <![CDATA[Defines class/method filters based on pattern matching.
 The syntax is filters is similar to a fileset.]]>
        </description>
      </element>

      <element name="jvmarg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a JVM argument.]]></short-description>
        <description>
          <![CDATA[Adds a JVM argument.]]>
        </description>
      </element>

      <element name="socket" type="org.apache.tools.ant.taskdefs.optional.sitraka.Socket"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Define a host and port to connect to if you want to do
 remote viewing.]]></short-description>
        <description>
          <![CDATA[Define a host and port to connect to if you want to do
 remote viewing.]]>
        </description>
      </element>

      <element name="triggers" type="org.apache.tools.ant.taskdefs.optional.sitraka.Triggers"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Defines events to use for interacting with the
 collection of data performed during coverage.]]></short-description>
        <description>
          <![CDATA[Defines events to use for interacting with the
 collection of data performed during coverage.

 For example you may run a whole application but only decide
 to collect data once it reaches a certain method and once it
 exits another one.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="jpcovmerge" category="metrics"
      classname="org.apache.tools.ant.taskdefs.optional.sitraka.CovMerge"
      >

  <short-description><![CDATA[Runs the snapshot merge utility for JProbe Coverage.]]></short-description>
  <description>
    <![CDATA[Runs the snapshot merge utility for JProbe Coverage.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="home" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory where JProbe is installed.]]></short-description>
        <description><![CDATA[
          The directory where JProbe is installed.
        ]]></description>
      </attribute>
      <attribute name="tofile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Output snapshot file.]]></short-description>
        <description><![CDATA[
          Set the output snapshot file.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, perform the merge in verbose mode giving details
 about the snapshot processing.]]></short-description>
        <description><![CDATA[
          If true, perform the merge in verbose mode giving details
 about the snapshot processing.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a fileset containing the snapshots to include.]]></short-description>
        <description>
          <![CDATA[add a fileset containing the snapshots to include.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="jpcovreport" category="metrics"
      classname="org.apache.tools.ant.taskdefs.optional.sitraka.CovReport"
      >

  <short-description><![CDATA[Runs the JProbe Coverage 3.0 snapshot merge utility.]]></short-description>
  <description>
    <![CDATA[Runs the JProbe Coverage 3.0 snapshot merge utility.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="format" type="org.apache.tools.ant.taskdefs.optional.sitraka.CovReport.ReportFormat"
                 briefType="&quot;html&quot;, &quot;text&quot;, &quot;xml&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Format of the report: "html", "text", or "xml".]]></short-description>
        <description><![CDATA[
          set the format of the report: "html", "text", or "xml"
        ]]></description>
      </attribute>
      <attribute name="home" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory where JProbe is installed.]]></short-description>
        <description><![CDATA[
          The directory where JProbe is installed.
        ]]></description>
      </attribute>
      <attribute name="includesource" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, include text of the source code lines.]]></short-description>
        <description><![CDATA[
          If true, include text of the source code lines.
 Only applies to format="xml" and type="verydetailed"
        ]]></description>
      </attribute>
      <attribute name="percent" type="java.lang.Integer"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[A numeric value for the threshold for printing methods.]]></short-description>
        <description><![CDATA[
          A numeric value for the threshold for printing methods.
 Must be between 0 and 100.
        ]]></description>
      </attribute>
      <attribute name="snapshot" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The name of the snapshot file that is the source to the report.]]></short-description>
        <description><![CDATA[
          The name of the snapshot file that is the source to the report.
        ]]></description>
      </attribute>
      <attribute name="tofile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The name of the generated output file.]]></short-description>
        <description><![CDATA[
          The name of the generated output file.
        ]]></description>
      </attribute>
      <attribute name="type" type="org.apache.tools.ant.taskdefs.optional.sitraka.CovReport.ReportType"
                 briefType="&quot;executive&quot;, &quot;summary&quot;, &quot;detailed&quot;, &quot;verydetailed&quot;" required="NOTDEFINED">
        <short-description><![CDATA[The type of report to be generated: "executive", "summary",
 "detailed" or "verydetailed".]]></short-description>
        <description><![CDATA[
          The type of report to be generated: "executive", "summary",
 "detailed" or "verydetailed".
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="reference" type="org.apache.tools.ant.taskdefs.optional.sitraka.CovReport.Reference"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of classes whose coverage information will be
 checked against.]]></short-description>
        <description>
          <![CDATA[Adds a set of classes whose coverage information will be
 checked against.]]>
        </description>
      </element>

      <element name="sourcepath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a path to source files.]]></short-description>
        <description>
          <![CDATA[Adds a path to source files.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="jspc" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.jsp.JspC"
      matchingTask="true">

  <short-description><![CDATA[Runs a JSP compiler.]]></short-description>
  <description>
    <![CDATA[Runs a JSP compiler.

 <p> This task takes the given jsp files and compiles them into java
 files. It is then up to the user to compile the java files into classes.

 <p> The task requires the srcdir and destdir attributes to be
 set. This Task is a MatchingTask, so the files to be compiled can be
 specified using includes/excludes attributes or nested include/exclude
 elements. Optional attributes are verbose (set the verbosity level passed
 to jasper), package (name of the destination package for generated java
 classes and classpath (the classpath to use when running the jsp
 compiler).
 <p> This task supports the nested elements classpath (A Path) and
 classpathref (A Reference) which can be used in preference to the
 attribute classpath, if the jsp compiler is not already in the ant
 classpath.

 <p><h4>Usage</h4>
 <pre>
 &lt;jspc srcdir="${basedir}/src/war"
       destdir="${basedir}/gensrc"
       package="com.i3sp.jsp"
       verbose="9"&gt;
   &lt;include name="**\/*.jsp" /&gt;
 &lt;/jspc&gt;
 </pre>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used for this compilation.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used for this compilation.
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a classpath defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a classpath defined elsewhere
        ]]></description>
      </attribute>
      <attribute name="compiler" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Class name of a JSP compiler adapter.]]></short-description>
        <description><![CDATA[
          Class name of a JSP compiler adapter.
        ]]></description>
      </attribute>
      <attribute name="compilerclasspath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used to find this compiler adapter.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used to find this compiler adapter
        ]]></description>
      </attribute>
      <attribute name="destdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory into which the JSP source
 files should be compiled.]]></short-description>
        <description><![CDATA[
          Set the destination directory into which the JSP source
 files should be compiled.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether or not the build should halt if compilation fails.]]></short-description>
        <description><![CDATA[
          Whether or not the build should halt if compilation fails.
 Defaults to <code>true</code>.
        ]]></description>
      </attribute>
      <attribute name="ieplugin" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Java Plugin CLASSID for Internet Explorer.]]></short-description>
        <description><![CDATA[
          Java Plugin CLASSID for Internet Explorer
        ]]></description>
      </attribute>
      <attribute name="mapped" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, generate separate write() calls for each HTML line
 in the JSP.]]></short-description>
        <description><![CDATA[
          If true, generate separate write() calls for each HTML line
 in the JSP.
        ]]></description>
      </attribute>
      <attribute name="package" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the package the compiled jsp files should be in.]]></short-description>
        <description><![CDATA[
          Set the name of the package the compiled jsp files should be in.
        ]]></description>
      </attribute>
      <attribute name="srcdir" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Path for source JSP files.]]></short-description>
        <description><![CDATA[
          Path for source JSP files.
        ]]></description>
      </attribute>
      <attribute name="uribase" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The URI context of relative URI references in the JSP pages.]]></short-description>
        <description><![CDATA[
          The URI context of relative URI references in the JSP pages.
 If it does not exist then it is derived from the location
 of the file relative to the declared or derived value of uriroot.
        ]]></description>
      </attribute>
      <attribute name="uriroot" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The root directory that uri files should be resolved
  against.]]></short-description>
        <description><![CDATA[
          The root directory that uri files should be resolved
  against. (Default is the directory jspc is invoked from)
        ]]></description>
      </attribute>
      <attribute name="verbose" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Verbose level of the compiler.]]></short-description>
        <description><![CDATA[
          Set the verbose level of the compiler
        ]]></description>
      </attribute>
      <attribute name="webinc" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Output filename for the fraction of web.xml that lists
  servlets.]]></short-description>
        <description><![CDATA[
          output filename for the fraction of web.xml that lists
  servlets.
        ]]></description>
      </attribute>
      <attribute name="webxml" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Filename for web.xml.]]></short-description>
        <description><![CDATA[
          Filename for web.xml.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="webapp" type="org.apache.tools.ant.taskdefs.optional.jsp.JspC.WebAppParameter"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a single webapp.]]></short-description>
        <description>
          <![CDATA[Adds a single webapp.]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a path to the classpath.]]></short-description>
        <description>
          <![CDATA[Adds a path to the classpath.]]>
        </description>
      </element>

      <element name="compilerclasspath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Support nested compiler classpath, used to locate compiler adapter.]]></short-description>
        <description>
          <![CDATA[Support nested compiler classpath, used to locate compiler adapter]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="junit" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask"
      >

  <short-description><![CDATA[Runs JUnit tests.]]></short-description>
  <description>
    <![CDATA[Runs JUnit tests.

 <p> JUnit is a framework to create unit test. It has been initially
 created by Erich Gamma and Kent Beck.  JUnit can be found at <a
 href="http://www.junit.org">http://www.junit.org</a>.

 <p> <code>JUnitTask</code> can run a single specific
 <code>JUnitTest</code> using the <code>test</code> element.</p>
 For example, the following target <code><pre>
   &lt;target name="test-int-chars" depends="jar-test"&gt;
       &lt;echo message="testing international characters"/&gt;
       &lt;junit printsummary="no" haltonfailure="yes" fork="false"&gt;
           &lt;classpath refid="classpath"/&gt;
           &lt;formatter type="plain" usefile="false" /&gt;
           &lt;test name="org.apache.ecs.InternationalCharTest" /&gt;
       &lt;/junit&gt;
   &lt;/target&gt;
 </pre></code>
 <p>runs a single junit test
 (<code>org.apache.ecs.InternationalCharTest</code>) in the current
 VM using the path with id <code>classpath</code> as classpath and
 presents the results formatted using the standard
 <code>plain</code> formatter on the command line.</p>

 <p> This task can also run batches of tests.  The
 <code>batchtest</code> element creates a <code>BatchTest</code>
 based on a fileset.  This allows, for example, all classes found in
 directory to be run as testcases.</p>

 <p>For example,</p><code><pre>
 &lt;target name="run-tests" depends="dump-info,compile-tests" if="junit.present"&gt;
   &lt;junit printsummary="no" haltonfailure="yes" fork="${junit.fork}"&gt;
     &lt;jvmarg value="-classic"/&gt;
     &lt;classpath refid="tests-classpath"/&gt;
     &lt;sysproperty key="build.tests" value="${build.tests}"/&gt;
     &lt;formatter type="brief" usefile="false" /&gt;
     &lt;batchtest&gt;
       &lt;fileset dir="${tests.dir}"&gt;
         &lt;include name="**&#047;*Test*" /&gt;
       &lt;/fileset&gt;
     &lt;/batchtest&gt;
   &lt;/junit&gt;
 &lt;/target&gt;
 </pre></code>
 <p>this target finds any classes with a <code>test</code> directory
 anywhere in their path (under the top <code>${tests.dir}</code>, of
 course) and creates <code>JUnitTest</code>'s for each one.</p>

 <p> Of course, <code>&lt;junit&gt;</code> and
 <code>&lt;batch&gt;</code> elements can be combined for more
 complex tests. For an example, see the ant <code>build.xml</code>
 target <code>run-tests</code> (the second example is an edited
 version).</p>

 <p> To spawn a new Java VM to prevent interferences between
 different testcases, you need to enable <code>fork</code>.  A
 number of attributes and elements allow you to set up how this JVM
 runs.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory to invoke the VM in.]]></short-description>
        <description><![CDATA[
          The directory to invoke the VM in. Ignored if no JVM is forked.
        ]]></description>
      </attribute>
      <attribute name="errorproperty" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Property to set to "true" if there is a error in a test.]]></short-description>
        <description><![CDATA[
          Property to set to "true" if there is a error in a test.

 <p>This property is applied on all BatchTest (batchtest) and
 JUnitTest (test), however, it can possibly be overriden by
 their own properties.</p>
        ]]></description>
      </attribute>
      <attribute name="failureproperty" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Property to set to "true" if there is a failure in a test.]]></short-description>
        <description><![CDATA[
          Property to set to "true" if there is a failure in a test.

 <p>This property is applied on all BatchTest (batchtest) and
 JUnitTest (test), however, it can possibly be overriden by
 their own properties.</p>
        ]]></description>
      </attribute>
      <attribute name="filtertrace" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, smartly filter the stack frames of
 JUnit errors and failures before reporting them.]]></short-description>
        <description><![CDATA[
          If true, smartly filter the stack frames of
 JUnit errors and failures before reporting them.

 <p>This property is applied on all BatchTest (batchtest) and
 JUnitTest (test) however it can possibly be overridden by their
 own properties.</p>
        ]]></description>
      </attribute>
      <attribute name="fork" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, JVM should be forked for each test.]]></short-description>
        <description><![CDATA[
          If true, JVM should be forked for each test.

 <p>It avoids interference between testcases and possibly avoids
 hanging the build.  this property is applied on all BatchTest
 (batchtest) and JUnitTest (test) however it can possibly be
 overridden by their own properties.</p>
        ]]></description>
      </attribute>
      <attribute name="haltonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, stop the build process when there is an error in a test.]]></short-description>
        <description><![CDATA[
          If true, stop the build process when there is an error in a test.
 This property is applied on all BatchTest (batchtest) and JUnitTest
 (test) however it can possibly be overridden by their own
 properties.
        ]]></description>
      </attribute>
      <attribute name="haltonfailure" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, stop the build process if a test fails
 (errors are considered failures as well).]]></short-description>
        <description><![CDATA[
          If true, stop the build process if a test fails
 (errors are considered failures as well).
 This property is applied on all BatchTest (batchtest) and
 JUnitTest (test) however it can possibly be overridden by their
 own properties.
        ]]></description>
      </attribute>
      <attribute name="includeantruntime" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, include ant.jar, optional.jar and junit.jar in the forked VM.]]></short-description>
        <description><![CDATA[
          If true, include ant.jar, optional.jar and junit.jar in the forked VM.
        ]]></description>
      </attribute>
      <attribute name="jvm" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The command used to invoke the Java Virtual Machine,
 default is 'java'.]]></short-description>
        <description><![CDATA[
          The command used to invoke the Java Virtual Machine,
 default is 'java'. The command is resolved by
 java.lang.Runtime.exec(). Ignored if fork is disabled.
        ]]></description>
      </attribute>
      <attribute name="maxmemory" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Maximum memory to be used by all forked JVMs.]]></short-description>
        <description><![CDATA[
          Set the maximum memory to be used by all forked JVMs.
        ]]></description>
      </attribute>
      <attribute name="newenvironment" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, use a new environment when forked.]]></short-description>
        <description><![CDATA[
          If true, use a new environment when forked.

 <p>Will be ignored if we are not forking a new VM.</p>
        ]]></description>
      </attribute>
      <attribute name="printsummary" type="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.SummaryAttribute"
                 briefType="&quot;true&quot;, &quot;yes&quot;, &quot;false&quot;, &quot;no&quot;, &quot;on&quot;, &quot;off&quot;, &quot;withOutAndErr&quot;" required="NOTDEFINED">
        <short-description><![CDATA[If true, print one-line statistics for each test, or "withOutAndErr"
 to also show standard output and error.]]></short-description>
        <description><![CDATA[
          If true, print one-line statistics for each test, or "withOutAndErr"
 to also show standard output and error.

 Can take the values on, off, and withOutAndErr.
        ]]></description>
      </attribute>
      <attribute name="showoutput" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, send any output generated by tests to Ant's logging system
 as well as to the formatters.]]></short-description>
        <description><![CDATA[
          If true, send any output generated by tests to Ant's logging system
 as well as to the formatters.
 By default only the formatters receive the output.

 <p>Output will always be passed to the formatters and not by
 shown by default.  This option should for example be set for
 tests that are interactive and prompt the user to do
 something.</p>
        ]]></description>
      </attribute>
      <attribute name="timeout" type="java.lang.Integer"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Timeout value (in milliseconds).]]></short-description>
        <description><![CDATA[
          Set the timeout value (in milliseconds).

 <p>If the test is running for more than this value, the test
 will be canceled. (works only when in 'fork' mode).</p>
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="env" type="org.apache.tools.ant.types.Environment.Variable"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds an environment variable; used when forking.]]></short-description>
        <description>
          <![CDATA[Adds an environment variable; used when forking.

 <p>Will be ignored if we are not forking a new VM.</p>]]>
        </description>
      </element>

      <element name="formatter" type="org.apache.tools.ant.taskdefs.optional.junit.FormatterElement"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a new formatter to all tests of this task.]]></short-description>
        <description>
          <![CDATA[Add a new formatter to all tests of this task.]]>
        </description>
      </element>

      <element name="sysproperty" type="org.apache.tools.ant.types.Environment.Variable"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a system property that tests can access.]]></short-description>
        <description>
          <![CDATA[Adds a system property that tests can access.
 This might be useful to tranfer Ant properties to the
 testcases when JVM forking is not enabled.]]>
        </description>
      </element>

      <element name="test" type="org.apache.tools.ant.taskdefs.optional.junit.JUnitTest"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a new single testcase.]]></short-description>
        <description>
          <![CDATA[Add a new single testcase.]]>
        </description>
      </element>

      <element name="batchtest" type="org.apache.tools.ant.taskdefs.optional.junit.BatchTest"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of tests based on pattern matching.]]></short-description>
        <description>
          <![CDATA[Adds a set of tests based on pattern matching.]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds path to classpath used for tests.]]></short-description>
        <description>
          <![CDATA[Adds path to classpath used for tests.]]>
        </description>
      </element>

      <element name="jvmarg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a JVM argument; ignored if not forking.]]></short-description>
        <description>
          <![CDATA[Adds a JVM argument; ignored if not forking.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="junitreport" category="testing"
      classname="org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator"
      >

  <short-description><![CDATA[Aggregates all &lt;junit&gt; XML formatter testsuite data under a specific directory and transforms the results via XSLT.]]></short-description>
  <description>
    <![CDATA[Aggregates all &lt;junit&gt; XML formatter testsuite data under
 a specific directory and transforms the results via XSLT.
 It is not particulary clean but
 should be helpful while I am thinking about another technique.

 <p> The main problem is due to the fact that a JVM can be forked for a testcase
 thus making it impossible to aggregate all testcases since the listener is
 (obviously) in the forked JVM. A solution could be to write a
 TestListener that will receive events from the TestRunner via sockets. This
 is IMHO the simplest way to do it to avoid this file hacking thing.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="todir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory where the results should be written.]]></short-description>
        <description><![CDATA[
          Set the destination directory where the results should be written. If not
 set if will use {@link #DEFAULT_DIR}. When given a relative directory
 it will resolve it from the project directory.
        ]]></description>
      </attribute>
      <attribute name="tofile" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the aggregegated results file.]]></short-description>
        <description><![CDATA[
          Set the name of the aggregegated results file. It must be relative
 from the <tt>todir</tt> attribute. If not set it will use {@link #DEFAULT_FILENAME}
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a new fileset containing the XML results to aggregate.]]></short-description>
        <description>
          <![CDATA[Add a new fileset containing the XML results to aggregate]]>
        </description>
      </element>

      <element name="report" type="org.apache.tools.ant.taskdefs.optional.junit.AggregateTransformer"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Generate a report based on the document created by the merge.]]></short-description>
        <description>
          <![CDATA[Generate a report based on the document created by the merge.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="keysubst" category="other"
      classname="org.apache.tools.ant.taskdefs.KeySubst"
      deprecated="true"
      >

  <short-description><![CDATA[Keyword substitution.]]></short-description>
  <description>
    <![CDATA[Keyword substitution. Input file is written to output file.
 Do not make input file same as output file.
 Keywords in input files look like this: @foo@. See the docs for the 
 setKeys method to understand how to do the substitutions.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination file.]]></short-description>
        <description><![CDATA[
          Set the destination file.
        ]]></description>
      </attribute>
      <attribute name="keys" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Keys.]]></short-description>
        <description><![CDATA[
          Sets the keys.
Format string is like this:
<p>
name=value*name2=value
<p>
Names are case sensitive.
<p>
Use the setSep() method to change the * to something else
if you need to use * as a name or value.
        ]]></description>
      </attribute>
      <attribute name="sep" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Seperator between name=value arguments
in setKeys().]]></short-description>
        <description><![CDATA[
          Sets the seperator between name=value arguments
in setKeys(). By default it is "*".
        ]]></description>
      </attribute>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Source file.]]></short-description>
        <description><![CDATA[
          Set the source file.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="loadfile" category="utility"
      classname="org.apache.tools.ant.taskdefs.LoadFile"
      >

  <short-description><![CDATA[Load a file into a property]]></short-description>
  <description>
    <![CDATA[Load a file into a property]]>
  </description>

  <structure>

    <attributes>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Encoding to use for input, defaults to the platform's default
 encoding.]]></short-description>
        <description><![CDATA[
          Encoding to use for input, defaults to the platform's default
 encoding. <p>

 For a list of possible values see <a href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html">
 http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html
 </a>.</p>
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, fail on load error.]]></short-description>
        <description><![CDATA[
          If true, fail on load error.
        ]]></description>
      </attribute>
      <attribute name="property" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Property name to save to.]]></short-description>
        <description><![CDATA[
          Property name to save to.
        ]]></description>
      </attribute>
      <attribute name="srcfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File to load.]]></short-description>
        <description><![CDATA[
          Sets the file to load.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="filterchain" type="org.apache.tools.ant.types.FilterChain"
               briefType="FilterChain"
               required="NOTDEFINED">
        <short-description><![CDATA[Add the FilterChain element.]]></short-description>
        <description>
          <![CDATA[Add the FilterChain element.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="loadproperties" category="utility"
      classname="org.apache.tools.ant.taskdefs.LoadProperties"
      >

  <short-description><![CDATA[Load a file's contents as Ant properties.]]></short-description>
  <description>
    <![CDATA[Load a file's contents as Ant properties.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="srcfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File to load.]]></short-description>
        <description><![CDATA[
          Sets the file to load.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="filterchain" type="org.apache.tools.ant.types.FilterChain"
               briefType="FilterChain"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a FilterChain.]]></short-description>
        <description>
          <![CDATA[Adds a FilterChain.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="mail" category="network"
      classname="org.apache.tools.ant.taskdefs.email.EmailTask"
      >

  <short-description><![CDATA[A task to send SMTP email.]]></short-description>
  <description>
    <![CDATA[A task to send SMTP email. This is a refactoring of the SendMail and
 MimeMail tasks such that both are within a single task.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="bcclist" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Adds "bcc" address elements.]]></short-description>
        <description><![CDATA[
          Adds "bcc" address elements
        ]]></description>
      </attribute>
      <attribute name="cclist" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Adds "cc" address elements.]]></short-description>
        <description><![CDATA[
          Adds "cc" address elements
        ]]></description>
      </attribute>
      <attribute name="encoding" type="org.apache.tools.ant.taskdefs.email.EmailTask.Encoding"
                 briefType="&quot;auto&quot;, &quot;mime&quot;, &quot;uu&quot;, &quot;plain&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Allows the build writer to choose the preferred encoding method.]]></short-description>
        <description><![CDATA[
          Allows the build writer to choose the preferred encoding method
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicates whether BuildExceptions should be passed back to the core.]]></short-description>
        <description><![CDATA[
          Indicates whether BuildExceptions should be passed back to the core
        ]]></description>
      </attribute>
      <attribute name="files" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Adds a list of files to be attached.]]></short-description>
        <description><![CDATA[
          Adds a list of files to be attached
        ]]></description>
      </attribute>
      <attribute name="from" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Shorthand to set the from address element.]]></short-description>
        <description><![CDATA[
          Shorthand to set the from address element
        ]]></description>
      </attribute>
      <attribute name="includefilenames" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets Includefilenames attribute.]]></short-description>
        <description><![CDATA[
          Sets Includefilenames attribute
        ]]></description>
      </attribute>
      <attribute name="mailhost" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Host.]]></short-description>
        <description><![CDATA[
          Sets the host
        ]]></description>
      </attribute>
      <attribute name="mailport" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Mail server port.]]></short-description>
        <description><![CDATA[
          Sets the mail server port
        ]]></description>
      </attribute>
      <attribute name="message" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Shorthand method to set the message.]]></short-description>
        <description><![CDATA[
          Shorthand method to set the message
        ]]></description>
      </attribute>
      <attribute name="messagefile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Shorthand method to set the message from a file.]]></short-description>
        <description><![CDATA[
          Shorthand method to set the message from a file
        ]]></description>
      </attribute>
      <attribute name="messagemimetype" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Shorthand method to set type of the text message, text/plain by default
 but text/html or text/xml is quite feasible.]]></short-description>
        <description><![CDATA[
          Shorthand method to set type of the text message, text/plain by default
 but text/html or text/xml is quite feasible.
        ]]></description>
      </attribute>
      <attribute name="subject" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Subject line of the email.]]></short-description>
        <description><![CDATA[
          Sets the subject line of the email
        ]]></description>
      </attribute>
      <attribute name="tolist" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Adds "to" address elements.]]></short-description>
        <description><![CDATA[
          Adds "to" address elements
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="bcc" type="org.apache.tools.ant.taskdefs.email.EmailAddress"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds "bcc" address elements.]]></short-description>
        <description>
          <![CDATA[Adds "bcc" address elements]]>
        </description>
      </element>

      <element name="cc" type="org.apache.tools.ant.taskdefs.email.EmailAddress"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds "cc" address element.]]></short-description>
        <description>
          <![CDATA[Adds "cc" address element]]>
        </description>
      </element>

      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files (nested fileset attribute).]]></short-description>
        <description>
          <![CDATA[Adds a set of files (nested fileset attribute).]]>
        </description>
      </element>

      <element name="from" type="org.apache.tools.ant.taskdefs.email.EmailAddress"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a from address element.]]></short-description>
        <description>
          <![CDATA[Adds a from address element]]>
        </description>
      </element>

      <element name="message" type="org.apache.tools.ant.taskdefs.email.Message"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a message elemnt.]]></short-description>
        <description>
          <![CDATA[Add a message elemnt]]>
        </description>
      </element>

      <element name="to" type="org.apache.tools.ant.taskdefs.email.EmailAddress"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a to address element.]]></short-description>
        <description>
          <![CDATA[Adds a to address element]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="manifest" category="java"
      classname="org.apache.tools.ant.taskdefs.ManifestTask"
      >

  <short-description><![CDATA[Creates a manifest file for inclusion in a JAR, Ant task wrapper around]]></short-description>
  <description>
    <![CDATA[Creates a manifest file for inclusion in a JAR, Ant task wrapper
 around {@link Manifest Manifest}.  This task can be used to write a
 Manifest file, optionally replacing or updating an existing file.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The name of the manifest file to create/update.]]></short-description>
        <description><![CDATA[
          The name of the manifest file to create/update.
 Required if used as a task.
        ]]></description>
      </attribute>
      <attribute name="mode" type="org.apache.tools.ant.taskdefs.ManifestTask.Mode"
                 briefType="&quot;update&quot;, &quot;replace&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Update policy: either "update" or "replace"; default is "replace".]]></short-description>
        <description><![CDATA[
          Update policy: either "update" or "replace"; default is "replace".
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="attribute" type="org.apache.tools.ant.taskdefs.Manifest.Attribute"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an attribute to the manifest - it is added to the main section.]]></short-description>
        <description>
          <![CDATA[Add an attribute to the manifest - it is added to the main section.]]>
        </description>
      </element>

      <element name="section" type="org.apache.tools.ant.taskdefs.Manifest.Section"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a section to the manifest.]]></short-description>
        <description>
          <![CDATA[Add a section to the manifest]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="maudit" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.metamata.MAudit"
      >

  <short-description><![CDATA[Invokes the Metamata Audit/ Webgain Quality Analyzer on a set of Java files.]]></short-description>
  <description>
    <![CDATA[Invokes the Metamata Audit/ Webgain Quality Analyzer on a set of Java files.
 <p>
 <i>maudit</i> performs static analysis of the Java source code and byte code files to find and report
 errors of style and potential problems related to performance, maintenance and robustness.
  As a convenience, a stylesheet is given in <tt>etc</tt> directory, so that an HTML report 
 can be generated from the XML file.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="fix" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Automatically fix certain errors 
 (those marked as fixable in the manual);
 optional, default=false.]]></short-description>
        <description><![CDATA[
          Automatically fix certain errors 
 (those marked as fixable in the manual);
 optional, default=false
        ]]></description>
      </attribute>
      <attribute name="list" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Creates listing file for each audited file; optional, default false.]]></short-description>
        <description><![CDATA[
          Creates listing file for each audited file; optional, default false. 
 When set, a .maudit file will be generated in the
 same location as the source file.
        ]]></description>
      </attribute>
      <attribute name="maxmemory" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Maximum memory for the JVM; optional.]]></short-description>
        <description><![CDATA[
          Set the maximum memory for the JVM; optional.
 -mx or -Xmx depending on VM version
        ]]></description>
      </attribute>
      <attribute name="metamatahome" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The home directory containing the Metamata distribution; required.]]></short-description>
        <description><![CDATA[
          The home directory containing the Metamata distribution; required
        ]]></description>
      </attribute>
      <attribute name="tofile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The XML file to which the Audit result should be written to; required.]]></short-description>
        <description><![CDATA[
          The XML file to which the Audit result should be written to; required
        ]]></description>
      </attribute>
      <attribute name="unused" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Finds declarations unused in search paths; optional, default false.]]></short-description>
        <description><![CDATA[
          Finds declarations unused in search paths; optional, default false. 
 It will look for unused global declarations
 in the source code within a use domain specified by the 
 <tt>searchpath</tt> element.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[The java files or directory to audit.]]></short-description>
        <description>
          <![CDATA[The java files or directory to audit.
 Whatever the filter is, only the files that end 
 with .java will be included for processing. 
 Note that the base directory used for the fileset 
 MUST be the root of the source files otherwise package names
 deduced from the file path will be incorrect.]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Class path (also source path unless one explicitly set).]]></short-description>
        <description>
          <![CDATA[Sets the class path (also source path unless one explicitly set).
 Overrides METAPATH/CLASSPATH environment variables.]]>
        </description>
      </element>

      <element name="jvmarg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Additional optional parameters to pass to the JVM.]]></short-description>
        <description>
          <![CDATA[Additional optional parameters to pass to the JVM. 
 You can avoid using the  <code>&lt;jvmarg&gt;</code> by adding these empty 
 entries to <code>metamata.properties</code> located at <code>${metamata.home}/bin</code>

 <pre>metamata.classpath=
 metamata.sourcepath=
 metamata.baseclasspath=
 </pre>]]>
        </description>
      </element>

      <element name="rulespath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Classpath for additional audit rules
 these must be placed before metamata.jar !!.]]></short-description>
        <description>
          <![CDATA[classpath for additional audit rules
 these must be placed before metamata.jar !!]]>
        </description>
      </element>

      <element name="searchpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Search path to use for unused global declarations; 
 required when <tt>unused</tt> is set.]]></short-description>
        <description>
          <![CDATA[search path to use for unused global declarations; 
 required when <tt>unused</tt> is set.]]>
        </description>
      </element>

      <element name="sourcepath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Source path.]]></short-description>
        <description>
          <![CDATA[Sets the source path. 
 Overrides the SOURCEPATH environment variable.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="mimemail" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.net.MimeMail"
      deprecated="true"
      >

  <short-description><![CDATA[A task to send SMTP email; Use <tt>mail</tt> instead]]></short-description>
  <description>
    <![CDATA[A task to send SMTP email; Use <tt>mail</tt> instead]]>
  </description>

  <structure>

    <attributes>
      <attribute name="bcclist" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Adds "bcc" address elements.]]></short-description>
        <description><![CDATA[
          Adds "bcc" address elements
        ]]></description>
      </attribute>
      <attribute name="cclist" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Adds "cc" address elements.]]></short-description>
        <description><![CDATA[
          Adds "cc" address elements
        ]]></description>
      </attribute>
      <attribute name="encoding" type="org.apache.tools.ant.taskdefs.email.EmailTask.Encoding"
                 briefType="&quot;auto&quot;, &quot;mime&quot;, &quot;uu&quot;, &quot;plain&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Allows the build writer to choose the preferred encoding method.]]></short-description>
        <description><![CDATA[
          Allows the build writer to choose the preferred encoding method
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicates whether BuildExceptions should be passed back to the core.]]></short-description>
        <description><![CDATA[
          Indicates whether BuildExceptions should be passed back to the core
        ]]></description>
      </attribute>
      <attribute name="files" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Adds a list of files to be attached.]]></short-description>
        <description><![CDATA[
          Adds a list of files to be attached
        ]]></description>
      </attribute>
      <attribute name="from" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Shorthand to set the from address element.]]></short-description>
        <description><![CDATA[
          Shorthand to set the from address element
        ]]></description>
      </attribute>
      <attribute name="includefilenames" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets Includefilenames attribute.]]></short-description>
        <description><![CDATA[
          Sets Includefilenames attribute
        ]]></description>
      </attribute>
      <attribute name="mailhost" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Host.]]></short-description>
        <description><![CDATA[
          Sets the host
        ]]></description>
      </attribute>
      <attribute name="mailport" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Mail server port.]]></short-description>
        <description><![CDATA[
          Sets the mail server port
        ]]></description>
      </attribute>
      <attribute name="message" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Shorthand method to set the message.]]></short-description>
        <description><![CDATA[
          Shorthand method to set the message
        ]]></description>
      </attribute>
      <attribute name="messagefile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Shorthand method to set the message from a file.]]></short-description>
        <description><![CDATA[
          Shorthand method to set the message from a file
        ]]></description>
      </attribute>
      <attribute name="messagemimetype" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Shorthand method to set type of the text message, text/plain by default
 but text/html or text/xml is quite feasible.]]></short-description>
        <description><![CDATA[
          Shorthand method to set type of the text message, text/plain by default
 but text/html or text/xml is quite feasible.
        ]]></description>
      </attribute>
      <attribute name="subject" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Subject line of the email.]]></short-description>
        <description><![CDATA[
          Sets the subject line of the email
        ]]></description>
      </attribute>
      <attribute name="tolist" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Adds "to" address elements.]]></short-description>
        <description><![CDATA[
          Adds "to" address elements
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="bcc" type="org.apache.tools.ant.taskdefs.email.EmailAddress"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds "bcc" address elements.]]></short-description>
        <description>
          <![CDATA[Adds "bcc" address elements]]>
        </description>
      </element>

      <element name="cc" type="org.apache.tools.ant.taskdefs.email.EmailAddress"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds "cc" address element.]]></short-description>
        <description>
          <![CDATA[Adds "cc" address element]]>
        </description>
      </element>

      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files (nested fileset attribute).]]></short-description>
        <description>
          <![CDATA[Adds a set of files (nested fileset attribute).]]>
        </description>
      </element>

      <element name="from" type="org.apache.tools.ant.taskdefs.email.EmailAddress"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a from address element.]]></short-description>
        <description>
          <![CDATA[Adds a from address element]]>
        </description>
      </element>

      <element name="message" type="org.apache.tools.ant.taskdefs.email.Message"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a message elemnt.]]></short-description>
        <description>
          <![CDATA[Add a message elemnt]]>
        </description>
      </element>

      <element name="to" type="org.apache.tools.ant.taskdefs.email.EmailAddress"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a to address element.]]></short-description>
        <description>
          <![CDATA[Adds a to address element]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="mkdir" category="filesystem"
      classname="org.apache.tools.ant.taskdefs.Mkdir"
      >

  <short-description><![CDATA[Creates a given directory.]]></short-description>
  <description>
    <![CDATA[Creates a given directory.
 Creates a directory and any non-existent parent directories, when
 necessary]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory to create; required.]]></short-description>
        <description><![CDATA[
          the directory to create; required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="mmetrics" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.metamata.MMetrics"
      >

  <short-description><![CDATA[Computes the metrics of a set of Java files and write the results to an XML file.]]></short-description>
  <description>
    <![CDATA[Computes the metrics of a set of Java files and write the results to an XML
 file. As a convenience, a stylesheet is given in <tt>etc</tt> directory,
 so that an HTML report can be generated from the XML file.
 <p>
 You will not be able to use this task with the evaluation version since
 as of Metamata 2.0, Metrics does not support command line :-(]]>
  </description>

  <structure>

    <attributes>
      <attribute name="granularity" type="org.apache.tools.ant.taskdefs.optional.metamata.MMetrics.GranularityAttribute"
                 briefType="&quot;compilation-units&quot;, &quot;files&quot;, &quot;methods&quot;, &quot;types&quot;, &quot;packages&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Granularity of the audit.]]></short-description>
        <description><![CDATA[
          set the granularity of the audit. Should be one of 'files', 'methods'
 or 'types'.
        ]]></description>
      </attribute>
      <attribute name="maxmemory" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Maximum memory for the JVM; optional.]]></short-description>
        <description><![CDATA[
          Set the maximum memory for the JVM; optional.
 -mx or -Xmx depending on VM version
        ]]></description>
      </attribute>
      <attribute name="metamatahome" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The home directory containing the Metamata distribution; required.]]></short-description>
        <description><![CDATA[
          The home directory containing the Metamata distribution; required
        ]]></description>
      </attribute>
      <attribute name="tofile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Output XML file.]]></short-description>
        <description><![CDATA[
          Set the output XML file
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[The java files or directory to audit.]]></short-description>
        <description>
          <![CDATA[The java files or directory to audit.
 Whatever the filter is, only the files that end 
 with .java will be included for processing. 
 Note that the base directory used for the fileset 
 MUST be the root of the source files otherwise package names
 deduced from the file path will be incorrect.]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Class path (also source path unless one explicitly set).]]></short-description>
        <description>
          <![CDATA[Sets the class path (also source path unless one explicitly set).
 Overrides METAPATH/CLASSPATH environment variables.]]>
        </description>
      </element>

      <element name="jvmarg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Additional optional parameters to pass to the JVM.]]></short-description>
        <description>
          <![CDATA[Additional optional parameters to pass to the JVM. 
 You can avoid using the  <code>&lt;jvmarg&gt;</code> by adding these empty 
 entries to <code>metamata.properties</code> located at <code>${metamata.home}/bin</code>

 <pre>metamata.classpath=
 metamata.sourcepath=
 metamata.baseclasspath=
 </pre>]]>
        </description>
      </element>

      <element name="path" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[New path (directory) to measure metrics from.]]></short-description>
        <description>
          <![CDATA[Set a new path (directory) to measure metrics from.]]>
        </description>
      </element>

      <element name="sourcepath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Source path.]]></short-description>
        <description>
          <![CDATA[Sets the source path. 
 Overrides the SOURCEPATH environment variable.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="move" category="filesystem"
      classname="org.apache.tools.ant.taskdefs.Move"
      >

  <short-description><![CDATA[Moves a file or directory to a new file or directory.]]></short-description>
  <description>
    <![CDATA[Moves a file or directory to a new file or directory.
 By default, the
 destination file is overwritten if it already exists.
 When <i>overwrite</i> is
 turned off, then files are only moved if the source file is
 newer than the destination file, or when the destination file does
 not exist.

 <p>Source files and directories are only deleted when the file or
 directory has been copied to the destination successfully.  Filtering
 also works.</p>

 <p>This implementation is based on Arnout Kuiper's initial design
 document, the following mailing list discussions, and the
 copyfile/copydir tasks.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Character encoding.]]></short-description>
        <description><![CDATA[
          Sets the character encoding
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If false, note errors to the output but keep going.]]></short-description>
        <description><![CDATA[
          If false, note errors to the output but keep going.
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Single source file to copy.]]></short-description>
        <description><![CDATA[
          Sets a single source file to copy.
        ]]></description>
      </attribute>
      <attribute name="filtering" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, enables filtering.]]></short-description>
        <description><![CDATA[
          If true, enables filtering.
        ]]></description>
      </attribute>
      <attribute name="flatten" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[When copying directory trees, the files can be "flattened"
 into a single directory.]]></short-description>
        <description><![CDATA[
          When copying directory trees, the files can be "flattened"
 into a single directory.  If there are multiple files with
 the same name in the source directory tree, only the first
 file will be copied into the "flattened" directory, unless
 the forceoverwrite attribute is true.
        ]]></description>
      </attribute>
      <attribute name="includeemptydirs" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Used to copy empty directories.]]></short-description>
        <description><![CDATA[
          Used to copy empty directories.
        ]]></description>
      </attribute>
      <attribute name="overwrite" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Overwrite any existing destination file(s).]]></short-description>
        <description><![CDATA[
          Overwrite any existing destination file(s).
        ]]></description>
      </attribute>
      <attribute name="preservelastmodified" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Give the copied files the same last modified time as the original files.]]></short-description>
        <description><![CDATA[
          Give the copied files the same last modified time as the original files.
        ]]></description>
      </attribute>
      <attribute name="todir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory.]]></short-description>
        <description><![CDATA[
          Sets the destination directory.
        ]]></description>
      </attribute>
      <attribute name="tofile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination file.]]></short-description>
        <description><![CDATA[
          Sets the destination file.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Used to force listing of all names of copied files.]]></short-description>
        <description><![CDATA[
          Used to force listing of all names of copied files.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files to copy.]]></short-description>
        <description>
          <![CDATA[Adds a set of files to copy.]]>
        </description>
      </element>

      <element name="filterchain" type="org.apache.tools.ant.types.FilterChain"
               briefType="FilterChain"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a FilterChain.]]></short-description>
        <description>
          <![CDATA[Adds a FilterChain.]]>
        </description>
      </element>

      <element name="filterset" type="org.apache.tools.ant.types.FilterSet"
               briefType="Filterset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a filterset.]]></short-description>
        <description>
          <![CDATA[Adds a filterset.]]>
        </description>
      </element>

      <element name="mapper" type="org.apache.tools.ant.types.Mapper"
               briefType="Mapper"
               required="NOTDEFINED">
        <short-description><![CDATA[Defines the mapper to map source to destination files.]]></short-description>
        <description>
          <![CDATA[Defines the mapper to map source to destination files.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="mparse" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.metamata.MParse"
      >

  <short-description><![CDATA[Simple Metamata MParse task.]]></short-description>
  <description>
    <![CDATA[Simple Metamata MParse task.
 Based on the original written by
 <a href="mailto:thomas.haas@softwired-inc.com">Thomas Haas</a>.
 This version was written for Metamata 2.0 available at
 <a href="http://www.metamata.com">http://www.metamata.com</a>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="cleanup" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Remove the intermediate Sun JavaCC file 
 ; optional, default false.]]></short-description>
        <description><![CDATA[
          Remove the intermediate Sun JavaCC file 
 ; optional, default false.
        ]]></description>
      </attribute>
      <attribute name="debugparser" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set parser debug mode; optional, default false.]]></short-description>
        <description><![CDATA[
          set parser debug mode; optional, default false
        ]]></description>
      </attribute>
      <attribute name="debugscanner" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set scanner debug mode; optional, default false.]]></short-description>
        <description><![CDATA[
          set scanner debug mode; optional, default false
        ]]></description>
      </attribute>
      <attribute name="maxmemory" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Maximum memory for the JVM; optional.]]></short-description>
        <description><![CDATA[
          Set the maximum memory for the JVM; optional.
 -mx or -Xmx depending on VM version
        ]]></description>
      </attribute>
      <attribute name="metamatahome" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The home directory containing the Metamata distribution; required.]]></short-description>
        <description><![CDATA[
          The home directory containing the Metamata distribution; required
        ]]></description>
      </attribute>
      <attribute name="target" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The .jj file to process; required.]]></short-description>
        <description><![CDATA[
          The .jj file to process; required.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set verbose mode; optional, default false.]]></short-description>
        <description><![CDATA[
          set verbose mode; optional, default false
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Create a classpath entry.]]></short-description>
        <description>
          <![CDATA[create a classpath entry]]>
        </description>
      </element>

      <element name="jvmarg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Additional optional parameters to pass to the JVM.]]></short-description>
        <description>
          <![CDATA[Additional optional parameters to pass to the JVM.]]>
        </description>
      </element>

      <element name="sourcepath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Creates a sourcepath entry.]]></short-description>
        <description>
          <![CDATA[creates a sourcepath entry]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="native2ascii" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.Native2Ascii"
      matchingTask="true">

  <short-description><![CDATA[Converts files from native encodings to ASCII.]]></short-description>
  <description>
    <![CDATA[Converts files from native encodings to ASCII.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory to place converted files into.]]></short-description>
        <description><![CDATA[
          Set the destination directory to place converted files into.
        ]]></description>
      </attribute>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Encoding to translate to/from.]]></short-description>
        <description><![CDATA[
          Set the encoding to translate to/from.
 If unset, the default encoding for the JVM is used.
        ]]></description>
      </attribute>
      <attribute name="ext" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Extension which converted files should have.]]></short-description>
        <description><![CDATA[
          Set the extension which converted files should have.
 If unset, files will not be renamed.
        ]]></description>
      </attribute>
      <attribute name="reverse" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag the conversion to run in the reverse sense,
 that is Ascii to Native encoding.]]></short-description>
        <description><![CDATA[
          Flag the conversion to run in the reverse sense,
 that is Ascii to Native encoding.
        ]]></description>
      </attribute>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Source directory in which to find files to convert.]]></short-description>
        <description><![CDATA[
          Set the source directory in which to find files to convert.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="mapper" type="org.apache.tools.ant.types.Mapper"
               briefType="Mapper"
               required="NOTDEFINED">
        <short-description><![CDATA[Defines the FileNameMapper to use (nested mapper element).]]></short-description>
        <description>
          <![CDATA[Defines the FileNameMapper to use (nested mapper element).]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="netrexxc" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.NetRexxC"
      matchingTask="true">

  <short-description><![CDATA[Compiles NetRexx source files.]]></short-description>
  <description>
    <![CDATA[Compiles NetRexx source files.
 This task can take the following
 arguments:
 <ul>
 <li>binary</li>
 <li>classpath</li>
 <li>comments</li>
 <li>compile</li>
 <li>console</li>
 <li>crossref</li>
 <li>decimal</li>
 <li>destdir</li>
 <li>diag</li>
 <li>explicit</li>
 <li>format</li>
 <li>keep</li>
 <li>logo</li>
 <li>replace</li>
 <li>savelog</li>
 <li>srcdir</li>
 <li>sourcedir</li>
 <li>strictargs</li>
 <li>strictassign</li>
 <li>strictcase</li>
 <li>strictimport</li>
 <li>symbols</li>
 <li>time</li>
 <li>trace</li>
 <li>utf8</li>
 <li>verbose</li>
 <li>suppressMethodArgumentNotUsed</li>
 <li>suppressPrivatePropertyNotUsed</li>
 <li>suppressVariableNotUsed</li>
 <li>suppressExceptionNotSignalled</li>
 <li>suppressDeprecation</li>
 </ul>
 Of these arguments, the <b>srcdir</b> argument is required.

 <p>When this task executes, it will recursively scan the srcdir
 looking for NetRexx source files to compile. This task makes its
 compile decision based on timestamp.
 <p>Before files are compiled they and any other file in the
 srcdir will be copied to the destdir allowing support files to be
 located properly in the classpath. The reason for copying the source files
 before the compile is that NetRexxC has only two destinations for classfiles:
 <ol>
 <li>The current directory, and,</li>
 <li>The directory the source is in (see sourcedir option)
 </ol>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="binary" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set whether literals are treated as binary, rather than NetRexx types.]]></short-description>
        <description><![CDATA[
          Set whether literals are treated as binary, rather than NetRexx types
        ]]></description>
      </attribute>
      <attribute name="classpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Classpath used for NetRexx compilation.]]></short-description>
        <description><![CDATA[
          Set the classpath used for NetRexx compilation
        ]]></description>
      </attribute>
      <attribute name="comments" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set whether comments are passed through to the generated java source.]]></short-description>
        <description><![CDATA[
          Set whether comments are passed through to the generated java source.
 Valid true values are "on" or "true". Anything else sets the flag to
 false. The default value is false
        ]]></description>
      </attribute>
      <attribute name="compact" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set whether error messages come out in compact or verbose format.]]></short-description>
        <description><![CDATA[
          Set whether error messages come out in compact or verbose format. Valid
 true values are "on" or "true". Anything else sets the flag to false.
 The default value is false
        ]]></description>
      </attribute>
      <attribute name="compile" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set whether the NetRexx compiler should compile the generated java code
 Valid true values are "on" or "true".]]></short-description>
        <description><![CDATA[
          Set whether the NetRexx compiler should compile the generated java code
 Valid true values are "on" or "true". Anything else sets the flag to
 false. The default value is true. Setting this flag to false, will
 automatically set the keep flag to true.
        ]]></description>
      </attribute>
      <attribute name="console" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set whether or not messages should be displayed on the 'console' Valid
 true values are "on" or "true".]]></short-description>
        <description><![CDATA[
          Set whether or not messages should be displayed on the 'console' Valid
 true values are "on" or "true". Anything else sets the flag to false.
 The default value is true.
        ]]></description>
      </attribute>
      <attribute name="crossref" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether variable cross references are generated.]]></short-description>
        <description><![CDATA[
          Whether variable cross references are generated
        ]]></description>
      </attribute>
      <attribute name="decimal" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set whether decimal arithmetic should be used for the netrexx code.]]></short-description>
        <description><![CDATA[
          Set whether decimal arithmetic should be used for the netrexx code.
 Binary arithmetic is used when this flag is turned off. Valid true
 values are "on" or "true". Anything else sets the flag to false. The
 default value is true.
        ]]></description>
      </attribute>
      <attribute name="destdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory into which the NetRexx source files
 should be copied and then compiled.]]></short-description>
        <description><![CDATA[
          Set the destination directory into which the NetRexx source files
 should be copied and then compiled.
        ]]></description>
      </attribute>
      <attribute name="diag" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether diagnostic information about the compile is generated.]]></short-description>
        <description><![CDATA[
          Whether diagnostic information about the compile is generated
        ]]></description>
      </attribute>
      <attribute name="explicit" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether variables must be declared explicitly before use.]]></short-description>
        <description><![CDATA[
          Sets whether variables must be declared explicitly before use. Valid
 true values are "on" or "true". Anything else sets the flag to false.
 The default value is false.
        ]]></description>
      </attribute>
      <attribute name="format" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether the generated java code is formatted nicely or left to match
 NetRexx line numbers for call stack debugging.]]></short-description>
        <description><![CDATA[
          Whether the generated java code is formatted nicely or left to match
 NetRexx line numbers for call stack debugging
        ]]></description>
      </attribute>
      <attribute name="java" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether the generated java code is produced Valid true values are "on"
 or "true".]]></short-description>
        <description><![CDATA[
          Whether the generated java code is produced Valid true values are "on"
 or "true". Anything else sets the flag to false. The default value is
 false.
        ]]></description>
      </attribute>
      <attribute name="keep" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether the generated java source file should be kept after
 compilation.]]></short-description>
        <description><![CDATA[
          Sets whether the generated java source file should be kept after
 compilation. The generated files will have an extension of .java.keep,
 <b>not</b> .java Valid true values are "on" or "true". Anything else
 sets the flag to false. The default value is false.
        ]]></description>
      </attribute>
      <attribute name="logo" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether the compiler text logo is displayed when compiling.]]></short-description>
        <description><![CDATA[
          Whether the compiler text logo is displayed when compiling
        ]]></description>
      </attribute>
      <attribute name="replace" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether the generated .java file should be replaced when compiling
 Valid true values are "on" or "true".]]></short-description>
        <description><![CDATA[
          Whether the generated .java file should be replaced when compiling
 Valid true values are "on" or "true". Anything else sets the flag to
 false. The default value is false.
        ]]></description>
      </attribute>
      <attribute name="savelog" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether the compiler messages will be written to NetRexxC.log as
 well as to the console Valid true values are "on" or "true".]]></short-description>
        <description><![CDATA[
          Sets whether the compiler messages will be written to NetRexxC.log as
 well as to the console Valid true values are "on" or "true". Anything
 else sets the flag to false. The default value is false.
        ]]></description>
      </attribute>
      <attribute name="sourcedir" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Tells the NetRexx compiler to store the class files in the same
 directory as the source files.]]></short-description>
        <description><![CDATA[
          Tells the NetRexx compiler to store the class files in the same
 directory as the source files. The alternative is the working directory
 Valid true values are "on" or "true". Anything else sets the flag to
 false. The default value is true.
        ]]></description>
      </attribute>
      <attribute name="srcdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Source dir to find the source Java files.]]></short-description>
        <description><![CDATA[
          Set the source dir to find the source Java files.
        ]]></description>
      </attribute>
      <attribute name="strictargs" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Tells the NetRexx compiler that method calls always need parentheses,
 even if no arguments are needed, e.g.]]></short-description>
        <description><![CDATA[
          Tells the NetRexx compiler that method calls always need parentheses,
 even if no arguments are needed, e.g. <code>aStringVar.getBytes</code>
 vs. <code>aStringVar.getBytes()</code> Valid true values are "on" or
 "true". Anything else sets the flag to false. The default value is
 false.
        ]]></description>
      </attribute>
      <attribute name="strictassign" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Tells the NetRexx compile that assignments must match exactly on type.]]></short-description>
        <description><![CDATA[
          Tells the NetRexx compile that assignments must match exactly on type
        ]]></description>
      </attribute>
      <attribute name="strictcase" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Specifies whether the NetRexx compiler should be case sensitive or not.]]></short-description>
        <description><![CDATA[
          Specifies whether the NetRexx compiler should be case sensitive or not
        ]]></description>
      </attribute>
      <attribute name="strictimport" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether classes need to be imported explicitly using an <code>import</code>
 statement.]]></short-description>
        <description><![CDATA[
          Sets whether classes need to be imported explicitly using an <code>import</code>
 statement. By default the NetRexx compiler will import certain packages
 automatically Valid true values are "on" or "true". Anything else sets
 the flag to false. The default value is false.
        ]]></description>
      </attribute>
      <attribute name="strictprops" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether local properties need to be qualified explicitly using
 <code>this</code> Valid true values are "on" or "true".]]></short-description>
        <description><![CDATA[
          Sets whether local properties need to be qualified explicitly using
 <code>this</code> Valid true values are "on" or "true". Anything else
 sets the flag to false. The default value is false.
        ]]></description>
      </attribute>
      <attribute name="strictsignal" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether the compiler should force catching of exceptions by explicitly
 named types.]]></short-description>
        <description><![CDATA[
          Whether the compiler should force catching of exceptions by explicitly
 named types
        ]]></description>
      </attribute>
      <attribute name="suppressdeprecation" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Tells whether we should filter out any deprecation-messages
 of the compiler out.]]></short-description>
        <description><![CDATA[
          Tells whether we should filter out any deprecation-messages
 of the compiler out.
        ]]></description>
      </attribute>
      <attribute name="suppressexceptionnotsignalled" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether the task should suppress the "FooException is in SIGNALS list
 but is not signalled within the method", which is sometimes rather
 useless.]]></short-description>
        <description><![CDATA[
          Whether the task should suppress the "FooException is in SIGNALS list
 but is not signalled within the method", which is sometimes rather
 useless. The warning is logged as verbose message, though.
        ]]></description>
      </attribute>
      <attribute name="suppressmethodargumentnotused" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether the task should suppress the "Method argument is not used" in
 strictargs-Mode, which can not be suppressed by the compiler itself.]]></short-description>
        <description><![CDATA[
          Whether the task should suppress the "Method argument is not used" in
 strictargs-Mode, which can not be suppressed by the compiler itself.
 The warning is logged as verbose message, though.
        ]]></description>
      </attribute>
      <attribute name="suppressprivatepropertynotused" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether the task should suppress the "Private property is defined but
 not used" in strictargs-Mode, which can be quite annoying while
 developing.]]></short-description>
        <description><![CDATA[
          Whether the task should suppress the "Private property is defined but
 not used" in strictargs-Mode, which can be quite annoying while
 developing. The warning is logged as verbose message, though.
        ]]></description>
      </attribute>
      <attribute name="suppressvariablenotused" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether the task should suppress the "Variable is set but not used" in
 strictargs-Mode.]]></short-description>
        <description><![CDATA[
          Whether the task should suppress the "Variable is set but not used" in
 strictargs-Mode. Be careful with this one! The warning is logged as
 verbose message, though.
        ]]></description>
      </attribute>
      <attribute name="symbols" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether debug symbols should be generated into the class file
 Valid true values are "on" or "true".]]></short-description>
        <description><![CDATA[
          Sets whether debug symbols should be generated into the class file
 Valid true values are "on" or "true". Anything else sets the flag to
 false. The default value is false.
        ]]></description>
      </attribute>
      <attribute name="time" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Asks the NetRexx compiler to print compilation times to the console
 Valid true values are "on" or "true".]]></short-description>
        <description><![CDATA[
          Asks the NetRexx compiler to print compilation times to the console
 Valid true values are "on" or "true". Anything else sets the flag to
 false. The default value is false.
        ]]></description>
      </attribute>
      <attribute name="trace" type="org.apache.tools.ant.taskdefs.optional.NetRexxC.TraceAttr"
                 briefType="&quot;trace&quot;, &quot;trace1&quot;, &quot;trace2&quot;, &quot;notrace&quot;" required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description><![CDATA[
        ]]></description>
      </attribute>
      <attribute name="utf8" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Tells the NetRexx compiler that the source is in UTF8 Valid true values
 are "on" or "true".]]></short-description>
        <description><![CDATA[
          Tells the NetRexx compiler that the source is in UTF8 Valid true values
 are "on" or "true". Anything else sets the flag to false. The default
 value is false.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="org.apache.tools.ant.taskdefs.optional.NetRexxC.VerboseAttr"
                 briefType="&quot;verbose&quot;, &quot;verbose0&quot;, &quot;verbose1&quot;, &quot;verbose2&quot;, &quot;verbose3&quot;, &quot;verbose4&quot;, &quot;verbose5&quot;, &quot;noverbose&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Whether lots of warnings and error messages should be generated.]]></short-description>
        <description><![CDATA[
          Whether lots of warnings and error messages should be generated
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="p4add" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Add"
      >

  <short-description><![CDATA[Adds specified files to Perforce.]]></short-description>
  <description>
    <![CDATA[Adds specified files to Perforce.

 <b>Example Usage:</b>
 <table border="1">
 <th>Function</th><th>Command</th>
 <tr><td>Add files using P4USER, P4PORT and P4CLIENT settings specified</td><td>&lt;P4add <br>P4view="//projects/foo/main/source/..." <br>P4User="fbloggs" <br>P4Port="km01:1666" <br>P4Client="fbloggsclient"&gt;<br>&lt;fileset basedir="dir" includes="**&#47;*.java"&gt;<br>&lt;/p4add&gt;</td></tr>
 <tr><td>Add files using P4USER, P4PORT and P4CLIENT settings defined in environment</td><td>&lt;P4add P4view="//projects/foo/main/source/..." /&gt;<br>&lt;fileset basedir="dir" includes="**&#47;*.java"&gt;<br>&lt;/p4add&gt;</td></tr>
 <tr><td>Specify the length of command line arguments to pass to each invocation of p4</td><td>&lt;p4add Commandlength="450"&gt;</td></tr>
 </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="changelist" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[If specified the open files are associated with the
 specified pending changelist number; otherwise the open files are
 associated with the default changelist.]]></short-description>
        <description><![CDATA[
          If specified the open files are associated with the
 specified pending changelist number; otherwise the open files are
 associated with the default changelist.
        ]]></description>
      </attribute>
      <attribute name="client" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 client spec to use;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 client spec to use;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="cmdopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set extra command options; only used on some
 of the Perforce tasks.]]></short-description>
        <description><![CDATA[
          Set extra command options; only used on some
 of the Perforce tasks.
        ]]></description>
      </attribute>
      <attribute name="commandlength" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Positive integer specifying the maximum length
   of the commandline when calling Perforce to add the files.]]></short-description>
        <description><![CDATA[
          positive integer specifying the maximum length
   of the commandline when calling Perforce to add the files. 
   Defaults to 450, higher values mean faster execution,
   but also possible failures.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.]]></short-description>
        <description><![CDATA[
          whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command
        ]]></description>
      </attribute>
      <attribute name="port" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4d server and port to connect to;
 optional, default "perforce:1666".]]></short-description>
        <description><![CDATA[
          The p4d server and port to connect to;
 optional, default "perforce:1666"
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 username;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 username;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="view" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The client, branch or label view to operate upon;
 optional default "//...".]]></short-description>
        <description><![CDATA[
          The client, branch or label view to operate upon;
 optional default "//..."
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Files to add.]]></short-description>
        <description>
          <![CDATA[files to add]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="p4change" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Change"
      >

  <short-description><![CDATA[Requests a new changelist from the Perforce server.]]></short-description>
  <description>
    <![CDATA[Requests a new changelist from the Perforce server.
 P4Change creates a new changelist in perforce. P4Change sets the property
 ${p4.change} with the new changelist number. This should then be passed into
 p4edit and p4submit.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="client" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 client spec to use;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 client spec to use;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="cmdopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set extra command options; only used on some
 of the Perforce tasks.]]></short-description>
        <description><![CDATA[
          Set extra command options; only used on some
 of the Perforce tasks.
        ]]></description>
      </attribute>
      <attribute name="description" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Description for ChangeList;optional.]]></short-description>
        <description><![CDATA[
          Description for ChangeList;optional.
 If none is specified, it will default to "AutoSubmit By Ant"
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.]]></short-description>
        <description><![CDATA[
          whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command
        ]]></description>
      </attribute>
      <attribute name="port" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4d server and port to connect to;
 optional, default "perforce:1666".]]></short-description>
        <description><![CDATA[
          The p4d server and port to connect to;
 optional, default "perforce:1666"
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 username;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 username;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="view" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The client, branch or label view to operate upon;
 optional default "//...".]]></short-description>
        <description><![CDATA[
          The client, branch or label view to operate upon;
 optional default "//..."
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="p4counter" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Counter"
      >

  <short-description><![CDATA[Obtains or sets the value of a counter.]]></short-description>
  <description>
    <![CDATA[Obtains or sets the value of a counter.

 <p> When used in its base form
 (where only the counter name is provided), the counter value will be
 printed to the output stream. When the value is provided, the counter
 will be set to the value provided. When a property name is provided,
 the property will be filled with the value of the counter. You may
 not specify to both get and set the value of the counter in the same
 Task.
 </p>
 <P>
 The user performing this task must have Perforce &quot;review&quot; permissions
 as defined by Perforce protections in order for this task to succeed.
</P>

 Example Usage:<br>
 &lt;p4counter name="${p4.counter}" property=${p4.change}"/&gt;]]>
  </description>

  <structure>

    <attributes>
      <attribute name="client" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 client spec to use;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 client spec to use;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="cmdopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set extra command options; only used on some
 of the Perforce tasks.]]></short-description>
        <description><![CDATA[
          Set extra command options; only used on some
 of the Perforce tasks.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.]]></short-description>
        <description><![CDATA[
          whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command
        ]]></description>
      </attribute>
      <attribute name="name" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of the counter; required.]]></short-description>
        <description><![CDATA[
          The name of the counter; required
        ]]></description>
      </attribute>
      <attribute name="port" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4d server and port to connect to;
 optional, default "perforce:1666".]]></short-description>
        <description><![CDATA[
          The p4d server and port to connect to;
 optional, default "perforce:1666"
        ]]></description>
      </attribute>
      <attribute name="property" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[A property to be set with the value of the counter.]]></short-description>
        <description><![CDATA[
          A property to be set with the value of the counter
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 username;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 username;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="value" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[The new value for the counter; optional.]]></short-description>
        <description><![CDATA[
          The new value for the counter; optional.
        ]]></description>
      </attribute>
      <attribute name="view" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The client, branch or label view to operate upon;
 optional default "//...".]]></short-description>
        <description><![CDATA[
          The client, branch or label view to operate upon;
 optional default "//..."
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="p4delete" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Delete"
      >

  <short-description><![CDATA[Checkout files for deletion.]]></short-description>
  <description>
    <![CDATA[Checkout files for deletion.

 Example Usage:<br>
 &lt;p4delete change="${p4.change}" view="//depot/project/foo.txt" /&gt;<br>

 Simple re-write of P4Edit changing 'edit' to 'delete'.<br>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="change" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[An existing changelist number for the deletion; optional
 but strongly recommended.]]></short-description>
        <description><![CDATA[
          An existing changelist number for the deletion; optional
 but strongly recommended.
        ]]></description>
      </attribute>
      <attribute name="client" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 client spec to use;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 client spec to use;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="cmdopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set extra command options; only used on some
 of the Perforce tasks.]]></short-description>
        <description><![CDATA[
          Set extra command options; only used on some
 of the Perforce tasks.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.]]></short-description>
        <description><![CDATA[
          whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command
        ]]></description>
      </attribute>
      <attribute name="port" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4d server and port to connect to;
 optional, default "perforce:1666".]]></short-description>
        <description><![CDATA[
          The p4d server and port to connect to;
 optional, default "perforce:1666"
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 username;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 username;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="view" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The client, branch or label view to operate upon;
 optional default "//...".]]></short-description>
        <description><![CDATA[
          The client, branch or label view to operate upon;
 optional default "//..."
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="p4edit" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Edit"
      >

  <short-description><![CDATA[Open file(s) for edit.]]></short-description>
  <description>
    <![CDATA[Open file(s) for edit. 
 P4Change should be used to obtain a new changelist for P4Edit as,
 although P4Edit can open files to the default change,  
 P4Submit cannot yet submit to it.
 Example Usage:<br>
 &lt;p4edit change="${p4.change}" view="//depot/project/foo.txt" /&gt;]]>
  </description>

  <structure>

    <attributes>
      <attribute name="change" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[An existing changelist number to assign files to; optional
 but strongly recommended.]]></short-description>
        <description><![CDATA[
          An existing changelist number to assign files to; optional
 but strongly recommended.
        ]]></description>
      </attribute>
      <attribute name="client" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 client spec to use;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 client spec to use;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="cmdopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set extra command options; only used on some
 of the Perforce tasks.]]></short-description>
        <description><![CDATA[
          Set extra command options; only used on some
 of the Perforce tasks.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.]]></short-description>
        <description><![CDATA[
          whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command
        ]]></description>
      </attribute>
      <attribute name="port" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4d server and port to connect to;
 optional, default "perforce:1666".]]></short-description>
        <description><![CDATA[
          The p4d server and port to connect to;
 optional, default "perforce:1666"
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 username;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 username;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="view" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The client, branch or label view to operate upon;
 optional default "//...".]]></short-description>
        <description><![CDATA[
          The client, branch or label view to operate upon;
 optional default "//..."
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="p4have" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Have"
      >

  <short-description><![CDATA[Lists Perforce files currently on client.]]></short-description>
  <description>
    <![CDATA[Lists Perforce files currently on client.

 P4Have simply dumps the current file version info into
 the Ant log (or stdout).]]>
  </description>

  <structure>

    <attributes>
      <attribute name="client" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 client spec to use;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 client spec to use;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="cmdopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set extra command options; only used on some
 of the Perforce tasks.]]></short-description>
        <description><![CDATA[
          Set extra command options; only used on some
 of the Perforce tasks.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.]]></short-description>
        <description><![CDATA[
          whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command
        ]]></description>
      </attribute>
      <attribute name="port" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4d server and port to connect to;
 optional, default "perforce:1666".]]></short-description>
        <description><![CDATA[
          The p4d server and port to connect to;
 optional, default "perforce:1666"
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 username;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 username;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="view" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The client, branch or label view to operate upon;
 optional default "//...".]]></short-description>
        <description><![CDATA[
          The client, branch or label view to operate upon;
 optional default "//..."
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="p4label" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Label"
      >

  <short-description><![CDATA[Creates a new Perforce label and set contents to reflect current client file revisions.]]></short-description>
  <description>
    <![CDATA[Creates a new Perforce label and set contents to reflect current
  client file revisions.

  Label name defaults to AntLabel if none set.

 Example Usage:
 <pre>
   &lt;P4Label name="MyLabel-${TSTAMP}-${DSTAMP}" desc="Auto Build Label" /&gt;
 </pre>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="client" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 client spec to use;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 client spec to use;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="cmdopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set extra command options; only used on some
 of the Perforce tasks.]]></short-description>
        <description><![CDATA[
          Set extra command options; only used on some
 of the Perforce tasks.
        ]]></description>
      </attribute>
      <attribute name="desc" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Label Description; optional.]]></short-description>
        <description><![CDATA[
          Label Description; optional
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.]]></short-description>
        <description><![CDATA[
          whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command
        ]]></description>
      </attribute>
      <attribute name="lock" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[When set to "locked", Perforce will lock the label once created; optional.]]></short-description>
        <description><![CDATA[
          when set to "locked", Perforce will lock the label once created; optional.
        ]]></description>
      </attribute>
      <attribute name="name" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of the label; optional, default "AntLabel".]]></short-description>
        <description><![CDATA[
          The name of the label; optional, default "AntLabel"
        ]]></description>
      </attribute>
      <attribute name="port" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4d server and port to connect to;
 optional, default "perforce:1666".]]></short-description>
        <description><![CDATA[
          The p4d server and port to connect to;
 optional, default "perforce:1666"
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 username;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 username;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="view" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The client, branch or label view to operate upon;
 optional default "//...".]]></short-description>
        <description><![CDATA[
          The client, branch or label view to operate upon;
 optional default "//..."
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="p4reopen" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Reopen"
      >

  <short-description><![CDATA[No Description.]]></short-description>
  <description>
    <![CDATA[]]>
  </description>

  <structure>

    <attributes>
      <attribute name="client" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 client spec to use;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 client spec to use;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="cmdopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set extra command options; only used on some
 of the Perforce tasks.]]></short-description>
        <description><![CDATA[
          Set extra command options; only used on some
 of the Perforce tasks.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.]]></short-description>
        <description><![CDATA[
          whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command
        ]]></description>
      </attribute>
      <attribute name="port" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4d server and port to connect to;
 optional, default "perforce:1666".]]></short-description>
        <description><![CDATA[
          The p4d server and port to connect to;
 optional, default "perforce:1666"
        ]]></description>
      </attribute>
      <attribute name="tochange" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The changelist to move files to; required.]]></short-description>
        <description><![CDATA[
          The changelist to move files to; required.
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 username;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 username;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="view" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The client, branch or label view to operate upon;
 optional default "//...".]]></short-description>
        <description><![CDATA[
          The client, branch or label view to operate upon;
 optional default "//..."
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="p4revert" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Revert"
      >

  <short-description><![CDATA[Revert Perforce open files or files in a changelist]]></short-description>
  <description>
    <![CDATA[Revert Perforce open files or files in a changelist]]>
  </description>

  <structure>

    <attributes>
      <attribute name="change" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The changelist to revert; optional.]]></short-description>
        <description><![CDATA[
          The changelist to revert; optional.
        ]]></description>
      </attribute>
      <attribute name="client" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 client spec to use;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 client spec to use;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="cmdopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set extra command options; only used on some
 of the Perforce tasks.]]></short-description>
        <description><![CDATA[
          Set extra command options; only used on some
 of the Perforce tasks.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.]]></short-description>
        <description><![CDATA[
          whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command
        ]]></description>
      </attribute>
      <attribute name="port" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4d server and port to connect to;
 optional, default "perforce:1666".]]></short-description>
        <description><![CDATA[
          The p4d server and port to connect to;
 optional, default "perforce:1666"
        ]]></description>
      </attribute>
      <attribute name="revertonlyunchanged" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to revert only unchanged files (p4 revert -a); optional, default false.]]></short-description>
        <description><![CDATA[
          flag to revert only unchanged files (p4 revert -a); optional, default false.
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 username;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 username;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="view" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The client, branch or label view to operate upon;
 optional default "//...".]]></short-description>
        <description><![CDATA[
          The client, branch or label view to operate upon;
 optional default "//..."
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="p4submit" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Submit"
      >

  <short-description><![CDATA[Submits a numbered changelist to Perforce.]]></short-description>
  <description>
    <![CDATA[Submits a numbered changelist to Perforce.

 <B>Note:</B> P4Submit cannot (yet) submit the default changelist.
 This shouldn't be a problem with the ANT task as the usual flow is
 P4Change to create a new numbered change followed by P4Edit then P4Submit.

 Example Usage:-<br>
 &lt;p4submit change="${p4.change}" /&gt;]]>
  </description>

  <structure>

    <attributes>
      <attribute name="change" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The changelist number to submit; required.]]></short-description>
        <description><![CDATA[
          The changelist number to submit; required.
        ]]></description>
      </attribute>
      <attribute name="client" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 client spec to use;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 client spec to use;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="cmdopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set extra command options; only used on some
 of the Perforce tasks.]]></short-description>
        <description><![CDATA[
          Set extra command options; only used on some
 of the Perforce tasks.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.]]></short-description>
        <description><![CDATA[
          whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command
        ]]></description>
      </attribute>
      <attribute name="port" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4d server and port to connect to;
 optional, default "perforce:1666".]]></short-description>
        <description><![CDATA[
          The p4d server and port to connect to;
 optional, default "perforce:1666"
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 username;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 username;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="view" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The client, branch or label view to operate upon;
 optional default "//...".]]></short-description>
        <description><![CDATA[
          The client, branch or label view to operate upon;
 optional default "//..."
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="p4sync" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Sync"
      >

  <short-description><![CDATA[Synchronize client space to a Perforce depot view.]]></short-description>
  <description>
    <![CDATA[Synchronize client space to a Perforce depot view.

  The API allows additional functionality of the "p4 sync" command
 (such as "p4 sync -f //...#have" or other exotic invocations).</P>

 <b>Example Usage:</b>
 <table border="1">
 <th>Function</th><th>Command</th>
 <tr><td>Sync to head using P4USER, P4PORT and P4CLIENT settings specified</td><td>&lt;P4Sync <br>P4view="//projects/foo/main/source/..." <br>P4User="fbloggs" <br>P4Port="km01:1666" <br>P4Client="fbloggsclient" /&gt;</td></tr>
 <tr><td>Sync to head using P4USER, P4PORT and P4CLIENT settings defined in environment</td><td>&lt;P4Sync P4view="//projects/foo/main/source/..." /&gt;</td></tr>
 <tr><td>Force a re-sync to head, refreshing all files</td><td>&lt;P4Sync force="yes" P4view="//projects/foo/main/source/..." /&gt;</td></tr>
 <tr><td>Sync to a label</td><td>&lt;P4Sync label="myPerforceLabel" /&gt;</td></tr>
 </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="client" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 client spec to use;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 client spec to use;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="cmdopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set extra command options; only used on some
 of the Perforce tasks.]]></short-description>
        <description><![CDATA[
          Set extra command options; only used on some
 of the Perforce tasks.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.]]></short-description>
        <description><![CDATA[
          whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command
        ]]></description>
      </attribute>
      <attribute name="force" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Force a refresh of files, if this attribute is set; false by default.]]></short-description>
        <description><![CDATA[
          force a refresh of files, if this attribute is set; false by default.
        ]]></description>
      </attribute>
      <attribute name="label" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Label to sync client to; optional.]]></short-description>
        <description><![CDATA[
          Label to sync client to; optional.
        ]]></description>
      </attribute>
      <attribute name="port" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4d server and port to connect to;
 optional, default "perforce:1666".]]></short-description>
        <description><![CDATA[
          The p4d server and port to connect to;
 optional, default "perforce:1666"
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The p4 username;
 optional, defaults to the current user.]]></short-description>
        <description><![CDATA[
          The p4 username;
 optional, defaults to the current user
        ]]></description>
      </attribute>
      <attribute name="view" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The client, branch or label view to operate upon;
 optional default "//...".]]></short-description>
        <description><![CDATA[
          The client, branch or label view to operate upon;
 optional default "//..."
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="parallel" category="control"
      classname="org.apache.tools.ant.taskdefs.Parallel"
      >

  <short-description><![CDATA[Executes the contained tasks in separate threads, continuing once all are completed.]]></short-description>
  <description>
    <![CDATA[Executes the contained tasks in separate threads, continuing
 once all are completed.
 <p>]]>
  </description>

  <structure>

    <attributes>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="patch" category="utility"
      classname="org.apache.tools.ant.taskdefs.Patch"
      >

  <short-description><![CDATA[Patches a file by applying a 'diff' file to it; requires "patch" to be on the execution path.]]></short-description>
  <description>
    <![CDATA[Patches a file by applying a 'diff' file to it; requires "patch" to be
 on the execution path.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="backups" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to create backups; optional, default=false.]]></short-description>
        <description><![CDATA[
          flag to create backups; optional, default=false
        ]]></description>
      </attribute>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory to run the patch command in, defaults to the
 project's base directory.]]></short-description>
        <description><![CDATA[
          The directory to run the patch command in, defaults to the
 project's base directory.
        ]]></description>
      </attribute>
      <attribute name="ignorewhitespace" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to ignore whitespace differences; default=false.]]></short-description>
        <description><![CDATA[
          flag to ignore whitespace differences; default=false
        ]]></description>
      </attribute>
      <attribute name="originalfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file to patch; optional if it can be inferred from
 the diff file.]]></short-description>
        <description><![CDATA[
          The file to patch; optional if it can be inferred from
 the diff file
        ]]></description>
      </attribute>
      <attribute name="patchfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file containing the diff output; required.]]></short-description>
        <description><![CDATA[
          The file containing the diff output; required.
        ]]></description>
      </attribute>
      <attribute name="quiet" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Work silently unless an error occurs; optional, default=false.]]></short-description>
        <description><![CDATA[
          Work silently unless an error occurs; optional, default=false
        ]]></description>
      </attribute>
      <attribute name="reverse" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Assume patch was created with old and new files swapped; optional,
 default=false.]]></short-description>
        <description><![CDATA[
          Assume patch was created with old and new files swapped; optional,
 default=false
        ]]></description>
      </attribute>
      <attribute name="strip" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Strip the smallest prefix containing <i>num</i> leading slashes
 from filenames.]]></short-description>
        <description><![CDATA[
          Strip the smallest prefix containing <i>num</i> leading slashes
 from filenames.

 <p>patch's <i>-p</i> option.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="pathconvert" category="utility"
      classname="org.apache.tools.ant.taskdefs.PathConvert"
      >

  <short-description><![CDATA[Converts path and classpath information to a specific target OS format.]]></short-description>
  <description>
    <![CDATA[Converts path and classpath information to a specific target OS
 format. The resulting formatted path is placed into the specified property.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dirsep" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Default directory separator string;
 defaults to current JVM.]]></short-description>
        <description><![CDATA[
          Set the default directory separator string;
 defaults to current JVM {@link java.io.File#separator File.separator}
        ]]></description>
      </attribute>
      <attribute name="pathsep" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Default path separator string;
 defaults to current JVM.]]></short-description>
        <description><![CDATA[
          Set the default path separator string;
 defaults to current JVM
 {@link java.io.File#pathSeparator File.pathSeparator}
        ]]></description>
      </attribute>
      <attribute name="property" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The property into which the converted path will be placed.]]></short-description>
        <description><![CDATA[
          The property into which the converted path will be placed.
        ]]></description>
      </attribute>
      <attribute name="refid" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds a reference to a Path, FileSet, DirSet, or FileList defined
 elsewhere.]]></short-description>
        <description><![CDATA[
          Adds a reference to a Path, FileSet, DirSet, or FileList defined
 elsewhere.
        ]]></description>
      </attribute>
      <attribute name="setonempty" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set setonempty

 If false, don't set the new property if the result is the empty string.]]></short-description>
        <description><![CDATA[
          Set setonempty

 If false, don't set the new property if the result is the empty string.
        ]]></description>
      </attribute>
      <attribute name="targetos" type="org.apache.tools.ant.taskdefs.PathConvert.TargetOs"
                 briefType="&quot;windows&quot;, &quot;unix&quot;, &quot;netware&quot;, &quot;os/2&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Set targetos to a platform to one of
 "windows", "unix", "netware", or "os/2"; required unless
 unless pathsep and/or dirsep are specified.]]></short-description>
        <description><![CDATA[
          Set targetos to a platform to one of
 "windows", "unix", "netware", or "os/2"; required unless
 unless pathsep and/or dirsep are specified.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="map" type="org.apache.tools.ant.taskdefs.PathConvert.MapEntry"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Create a nested MAP element.]]></short-description>
        <description>
          <![CDATA[Create a nested MAP element]]>
        </description>
      </element>

      <element name="path" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Create a nested PATH element.]]></short-description>
        <description>
          <![CDATA[Create a nested PATH element]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="property" category="other"
      classname="org.apache.tools.ant.taskdefs.Property"
      >

  <short-description><![CDATA[Sets a property by name, or set of properties (from file or resource) in the project.]]></short-description>
  <description>
    <![CDATA[Sets a property by name, or set of properties (from file or
 resource) in the project.  </p>
 Properties are immutable: whoever sets a property first freezes it for the
 rest of the build; they are most definately not variable. 
 <p>There are five ways to set properties:</p>
 <ul>
   <li>By supplying both the <i>name</i> and <i>value</i> attribute.</li>
   <li>By supplying both the <i>name</i> and <i>refid</i> attribute.</li>
   <li>By setting the <i>file</i> attribute with the filename of the property
     file to load. This property file has the format as defined by the file used
     in the class java.util.Properties.</li>
   <li>By setting the <i>resource</i> attribute with the resource name of the
     property file to load. This property file has the format as defined by the
     file used in the class java.util.Properties.</li>
   <li>By setting the <i>environment</i> attribute with a prefix to use.
     Properties will be defined for every environment variable by
     prefixing the supplied name and a period to the name of the variable.</li>
 </ul>
 <p>Although combinations of these ways are possible, only one should be used
 at a time. Problems might occur with the order in which properties are set, for
 instance.</p>
 <p>The value part of the properties being set, might contain references to other
 properties. These references are resolved at the time these properties are set.
 This also holds for properties loaded from a property file.</p>
 Properties are case sensitive.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[The classpath to use when looking up a resource.]]></short-description>
        <description><![CDATA[
          The classpath to use when looking up a resource.
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[The classpath to use when looking up a resource,
 given as reference to a &lt;path&gt; defined elsewhere.]]></short-description>
        <description><![CDATA[
          the classpath to use when looking up a resource,
 given as reference to a &lt;path&gt; defined elsewhere
        ]]></description>
      </attribute>
      <attribute name="environment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The prefix to use when retrieving environment variables.]]></short-description>
        <description><![CDATA[
          the prefix to use when retrieving environment variables. 
 Thus if you specify environment=&quot;myenv&quot; 
 you will be able to access OS-specific 
 environment variables via property names &quot;myenv.PATH&quot; or 
 &quot;myenv.TERM&quot;. 
 <p>
 Note that if you supply a property name with a final 
 &quot;.&quot; it will not be doubled. ie environment=&quot;myenv.&quot; will still 
 allow access of environment variables through &quot;myenv.PATH&quot; and 
 &quot;myenv.TERM&quot;. This functionality is currently only implemented 
 on select platforms. Feel free to send patches to increase the number of platforms
 this functionality is supported on ;).<br>
 Note also that properties are case sensitive, even if the
 environment variables on your operating system are not, e.g. it
 will be ${env.Path} not ${env.PATH} on Windows 2000.
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The filename of a property file to load.]]></short-description>
        <description><![CDATA[
          the filename of a property file to load.
        ]]></description>
      </attribute>
      <attribute name="location" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Property to the absolute filename of the
 given file.]]></short-description>
        <description><![CDATA[
          Sets the property to the absolute filename of the
 given file. If the value of this attribute is an absolute path, it
 is left unchanged (with / and \ characters converted to the
 current platforms conventions). Otherwise it is taken as a path
 relative to the project's basedir and expanded.
        ]]></description>
      </attribute>
      <attribute name="name" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the property to set.]]></short-description>
        <description><![CDATA[
          sets the name of the property to set.
        ]]></description>
      </attribute>
      <attribute name="prefix" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Prefix to apply to properties loaded using <code>file</code>
 or <code>resource</code>.]]></short-description>
        <description><![CDATA[
          Prefix to apply to properties loaded using <code>file</code>
 or <code>resource</code>. 
 A "." is appended to the prefix if not specified.
        ]]></description>
      </attribute>
      <attribute name="refid" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Reference to an Ant datatype
 declared elsewhere.]]></short-description>
        <description><![CDATA[
          Sets a reference to an Ant datatype
 declared elsewhere. 
 Only yields reasonable results for references
 PATH like structures or properties.
        ]]></description>
      </attribute>
      <attribute name="resource" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The resource name of a property file to load.]]></short-description>
        <description><![CDATA[
          the resource name of a property file to load
        ]]></description>
      </attribute>
      <attribute name="value" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Value of the property.]]></short-description>
        <description><![CDATA[
          Sets the value of the property.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[The classpath to use when looking up a resource.]]></short-description>
        <description>
          <![CDATA[The classpath to use when looking up a resource.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="propertyfile" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.PropertyFile"
      >

  <short-description><![CDATA[Modifies settings in a property file.]]></short-description>
  <description>
    <![CDATA[Modifies settings in a property file.

 <p>
The following is an example of its usage:
    <ul>&lt;target name="setState"&gt;<br>
    <ul>&lt;property<br>
        <ul>name="header"<br>
        value="##Generated file - do not modify!"/&gt;<br>
      &lt;propertyfile file="apropfile.properties" comment="${header}"&gt;<br>
        &lt;entry key="product.version.major" type="int"  value="5"/&gt;<br>
        &lt;entry key="product.version.minor" type="int"  value="0"/&gt;<br>
        &lt;entry key="product.build.major"   type="int"  value="0" /&gt;<br>
        &lt;entry key="product.build.minor"   type="int"  operation="+" /&gt;<br>
        &lt;entry key="product.build.date"    type="date" value="now" /&gt;<br>
        &lt;entry key="intSet" type="int" operation="=" value="681"/&gt;<br>
        &lt;entry key="intDec" type="int" operation="-"/&gt;<br>
        &lt;entry key="StringEquals" type="string" value="testValue"/&gt;<br>
     &lt;/propertyfile&gt;<br></ul>
   &lt;/target&gt;</ul><p>

The &lt;propertyfile&gt; task must have:<br>
    <ul><li>file</li></ul>
Other parameters are:<br>
    <ul><li>comment, key, operation, type and value (the final four being eliminated shortly)</li></ul>

The &lt;entry&gt; task must have:<br>
    <ul><li>key</li></ul>
Other parameters are:<br>
    <ul><li>operation</li>
        <li>type</li>
        <li>value</li>
        <li>default</li>
        <li>unit</li>
    </ul>

If type is unspecified, it defaults to string

Parameter values:<br>
    <ul><li>operation:</li>
        <ul><li>"=" (set -- default)</li>
        <li>"-" (dec)</li>
        <li>"+" (inc)</li>

    <li>type:</li>
        <ul><li>"int"</li>
        <li>"date"</li>
        <li>"string"</li></ul></ul>

    <li>value:</li>
      <ul><li>holds the default value, if the property
              was not found in property file</li>
          <li>"now" In case of type "date", the
              value "now" will be replaced by the current
              date/time and used even if a valid date was
              found in the property file.</li></ul>

String property types can only use the "=" operation.
Int property types can only use the "=", "-" or "+" operations.<p>

The message property is used for the property file header, with "\\" being
a newline delimiter character.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Optional header comment for the file.]]></short-description>
        <description><![CDATA[
          optional header comment for the file
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Location of the property file to be edited; required.]]></short-description>
        <description><![CDATA[
          Location of the property file to be edited; required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="entry" type="org.apache.tools.ant.taskdefs.optional.PropertyFile.Entry"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description>
          <![CDATA[]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="pvcs" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.pvcs.Pvcs"
      >

  <short-description><![CDATA[Extracts the latest edition of the source code from a PVCS repository.]]></short-description>
  <description>
    <![CDATA[Extracts the latest edition of the source code from a PVCS repository.
 PVCS is a version control system
 developed by <a href="http://www.merant.com/products/pvcs">Merant</a>.
 <br>
 Before using this tag, the user running ant must have access to the commands 
 of PVCS (get and pcli) and must have access to the repository. Note that the way to specify
 the repository is platform dependent so use property to specify location of repository.
 <br>
 This version has been tested agains PVCS version 6.5 and 6.6 under Windows and Solaris.

 <b>19-04-2001</b> <p>The task now has a more robust
 parser. It allows for platform independant file paths
 and supports file names with <i>()</i>. Thanks to Erik Husby for
 bringing the bug to my attention.

 <b>27-04-2001</b> <p>UNC paths are now handled properly.
 Fix provided by Don Jeffery. He also added an <i>UpdateOnly</i> flag
 that, when true, conditions the PVCS get using the -U option to only
 update those files that have a modification time (in PVCS) that is newer
 than the existing workfile.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="filenameformat" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The format of the folder names; optional.]]></short-description>
        <description><![CDATA[
          The format of the folder names; optional.
 This must be in a format suitable for 
 <code>java.text.MessageFormat</code>.
  Index 1 of the format will be used as the file name.
  Defaults to <code>{0}-arc({1})</code>
        ]]></description>
      </attribute>
      <attribute name="force" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the value of the force argument; optional.]]></short-description>
        <description><![CDATA[
          Specifies the value of the force argument; optional.
 If set to <i>yes</i> all files that exists and are 
 writable are overwritten. Default <i>no</i> causes the files 
 that are writable to be ignored. This stops the PVCS command 
 <i>get</i> to stop asking questions!
        ]]></description>
      </attribute>
      <attribute name="ignorereturncode" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If set to true the return value from executing the pvcs
 commands are ignored; optional, default false.]]></short-description>
        <description><![CDATA[
          If set to true the return value from executing the pvcs
 commands are ignored; optional, default false.
        ]]></description>
      </attribute>
      <attribute name="label" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Only files marked with this label are extracted; optional.]]></short-description>
        <description><![CDATA[
          Only files marked with this label are extracted; optional.
        ]]></description>
      </attribute>
      <attribute name="linestart" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[What a valid return value from PVCS looks like
  when it describes a file.]]></short-description>
        <description><![CDATA[
          What a valid return value from PVCS looks like
  when it describes a file.  Defaults to <code>&quot;P:</code>.
 If you are not using an UNC name for your repository and the
 drive letter <code>P</code> is incorrect for your setup, you may
 need to change this value, UNC names will always be
 accepted.
        ]]></description>
      </attribute>
      <attribute name="promotiongroup" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the name of the promotiongroup argument.]]></short-description>
        <description><![CDATA[
          Specifies the name of the promotiongroup argument
        ]]></description>
      </attribute>
      <attribute name="pvcsbin" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the location of the PVCS bin directory; optional if on the PATH.]]></short-description>
        <description><![CDATA[
          Specifies the location of the PVCS bin directory; optional if on the PATH.
 On some systems the PVCS executables <i>pcli</i>
 and <i>get</i> are not found in the PATH. In such cases this attribute
 should be set to the bin directory of the PVCS installation containing
 the executables mentioned before. If this attribute isn't specified the
 tag expects the executables to be found using the PATH environment variable.
        ]]></description>
      </attribute>
      <attribute name="pvcsproject" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The project within the PVCS repository to extract files from;
 optional, default &quot;/&quot;.]]></short-description>
        <description><![CDATA[
          The project within the PVCS repository to extract files from;
 optional, default &quot;/&quot;
        ]]></description>
      </attribute>
      <attribute name="repository" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The network name of the PVCS repository; required.]]></short-description>
        <description><![CDATA[
          The network name of the PVCS repository; required.
        ]]></description>
      </attribute>
      <attribute name="updateonly" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If set to <i>true</i> files are fetched only if 
 newer than existing local files; optional, default false.]]></short-description>
        <description><![CDATA[
          If set to <i>true</i> files are fetched only if 
 newer than existing local files; optional, default false.
        ]]></description>
      </attribute>
      <attribute name="workspace" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Workspace to use; optional.]]></short-description>
        <description><![CDATA[
          Workspace to use; optional.  
 By specifying a workspace, the files are extracted to that location.
 A PVCS workspace is a name for a location of the workfiles and 
 isn't as such the location itself. 
 You define the location for a workspace using the PVCS GUI clients.
 If this isn't specified the default workspace for the current user is used.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="pvcsproject" type="org.apache.tools.ant.taskdefs.optional.pvcs.PvcsProject"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Specify a project within the PVCS repository to extract files from.]]></short-description>
        <description>
          <![CDATA[Specify a project within the PVCS repository to extract files from.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="record" category="utility"
      classname="org.apache.tools.ant.taskdefs.Recorder"
      >

  <short-description><![CDATA[Adds a listener to the current build process that records the output to a file.]]></short-description>
  <description>
    <![CDATA[Adds a listener to the current build process that records the
 output to a file.
 <p>Several recorders can exist at the same time.  Each recorder is
 associated with a file.  The filename is used as a unique identifier for
 the recorders.  The first call to the recorder task with an unused filename
 will create a recorder (using the parameters provided) and add it to the
 listeners of the build.  All subsequent calls to the recorder task using
 this filename will modify that recorders state (recording or not) or other
 properties (like logging level).</p>
 <p>Some technical issues: the file's print stream is flushed for &quot;finished&quot;
 events (buildFinished, targetFinished and taskFinished), and is closed on
 a buildFinished event.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="action" type="org.apache.tools.ant.taskdefs.Recorder.ActionChoices"
                 briefType="&quot;start&quot;, &quot;stop&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Action for the associated recorder entry.]]></short-description>
        <description><![CDATA[
          Sets the action for the associated recorder entry.
        ]]></description>
      </attribute>
      <attribute name="append" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether or not the logger should append to a previous file.]]></short-description>
        <description><![CDATA[
          Whether or not the logger should append to a previous file.
        ]]></description>
      </attribute>
      <attribute name="emacsmode" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description><![CDATA[
        ]]></description>
      </attribute>
      <attribute name="loglevel" type="org.apache.tools.ant.taskdefs.Recorder.VerbosityLevelChoices"
                 briefType="&quot;error&quot;, &quot;warn&quot;, &quot;info&quot;, &quot;verbose&quot;, &quot;debug&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Level to which this recorder entry should log to.]]></short-description>
        <description><![CDATA[
          Sets the level to which this recorder entry should log to.
        ]]></description>
      </attribute>
      <attribute name="name" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the file to log to, and the name of the recorder
 entry.]]></short-description>
        <description><![CDATA[
          Sets the name of the file to log to, and the name of the recorder
 entry.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="rename" category="other"
      classname="org.apache.tools.ant.taskdefs.Rename"
      deprecated="true"
      >

  <short-description><![CDATA[Renames a file.]]></short-description>
  <description>
    <![CDATA[Renames a file.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[New name of the file.]]></short-description>
        <description><![CDATA[
          Sets the new name of the file.
        ]]></description>
      </attribute>
      <attribute name="replace" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether an existing file should be replaced.]]></short-description>
        <description><![CDATA[
          Sets whether an existing file should be replaced.
        ]]></description>
      </attribute>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File to be renamed.]]></short-description>
        <description><![CDATA[
          Sets the file to be renamed.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="renameextensions" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.RenameExtensions"
      deprecated="true"
      matchingTask="true">

  <short-description><![CDATA[No Description.]]></short-description>
  <description>
    <![CDATA[]]>
  </description>

  <structure>

    <attributes>
      <attribute name="fromextension" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The string that files must end in to be renamed.]]></short-description>
        <description><![CDATA[
          The string that files must end in to be renamed
        ]]></description>
      </attribute>
      <attribute name="replace" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Store replace attribute - this determines whether the target file
 should be overwritten if present.]]></short-description>
        <description><![CDATA[
          store replace attribute - this determines whether the target file
 should be overwritten if present
        ]]></description>
      </attribute>
      <attribute name="srcdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Source dir to find the files to be renamed.]]></short-description>
        <description><![CDATA[
          Set the source dir to find the files to be renamed.
        ]]></description>
      </attribute>
      <attribute name="toextension" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The string that renamed files will end with on
 completion.]]></short-description>
        <description><![CDATA[
          The string that renamed files will end with on
 completion
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="replace" category="filesystem"
      classname="org.apache.tools.ant.taskdefs.Replace"
      matchingTask="true">

  <short-description><![CDATA[Replaces all occurrences of one or more string tokens with given values in the indicated files.]]></short-description>
  <description>
    <![CDATA[Replaces all occurrences of one or more string tokens with given
 values in the indicated files. Each value can be either a string 
 or the value of a property available in a designated property file.
 If you want to replace a text that crosses line boundaries, you
 must use a nested <code>&lt;replacetoken&gt;</code> element.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The base directory to use when replacing a token in multiple files;
 required if <code>file</code> is not defined.]]></short-description>
        <description><![CDATA[
          The base directory to use when replacing a token in multiple files;
 required if <code>file</code> is not defined.
        ]]></description>
      </attribute>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[File encoding to use on the files read and written by the task;
 optional, defaults to default JVM encoding.]]></short-description>
        <description><![CDATA[
          Set the file encoding to use on the files read and written by the task;
 optional, defaults to default JVM encoding
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Source file; required unless <code>dir</code> is set.]]></short-description>
        <description><![CDATA[
          Set the source file; required unless <code>dir</code> is set.
        ]]></description>
      </attribute>
      <attribute name="propertyfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The name of a property file from which properties specified using
 nested <code>&lt;replacefilter&gt;</code> elements are drawn;
 Required only if <i>property</i> attribute of
 <code>&lt;replacefilter&gt;</code> is used.]]></short-description>
        <description><![CDATA[
          The name of a property file from which properties specified using
 nested <code>&lt;replacefilter&gt;</code> elements are drawn;
 Required only if <i>property</i> attribute of
 <code>&lt;replacefilter&gt;</code> is used.
        ]]></description>
      </attribute>
      <attribute name="replacefilterfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of a property file containing filters; optional.]]></short-description>
        <description><![CDATA[
          Sets the name of a property file containing filters; optional.
 Each property will be treated as a
 replacefilter where token is the name of the property and value
 is the value of the property.
        ]]></description>
      </attribute>
      <attribute name="summary" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicates whether a summary of the replace operation should be
 produced, detailing how many token occurrences and files were
 processed; optional, default=false.]]></short-description>
        <description><![CDATA[
          Indicates whether a summary of the replace operation should be
 produced, detailing how many token occurrences and files were
 processed; optional, default=false
        ]]></description>
      </attribute>
      <attribute name="token" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[String token to replace;
 required unless a nested
 <code>replacetoken</code> element or the <code>replacefilterfile</code>
 attribute is used.]]></short-description>
        <description><![CDATA[
          Set the string token to replace;
 required unless a nested
 <code>replacetoken</code> element or the <code>replacefilterfile</code>
 attribute is used.
        ]]></description>
      </attribute>
      <attribute name="value" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[String value to use as token replacement;
 optional, default is the empty string "".]]></short-description>
        <description><![CDATA[
          Set the string value to use as token replacement;
 optional, default is the empty string ""
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="replacetoken" type="org.apache.tools.ant.taskdefs.Replace.NestedString"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[The token to filter as the text of a nested element.]]></short-description>
        <description>
          <![CDATA[the token to filter as the text of a nested element]]>
        </description>
      </element>

      <element name="replacevalue" type="org.apache.tools.ant.taskdefs.Replace.NestedString"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[The string to replace the token as the text of a nested element.]]></short-description>
        <description>
          <![CDATA[the string to replace the token as the text of a nested element]]>
        </description>
      </element>

      <element name="replacefilter" type="org.apache.tools.ant.taskdefs.Replace.Replacefilter"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a nested &lt;replacefilter&gt; element.]]></short-description>
        <description>
          <![CDATA[Add a nested &lt;replacefilter&gt; element.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="replaceregexp" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ReplaceRegExp"
      >

  <short-description><![CDATA[Performs regular expression string replacements in a text file.]]></short-description>
  <description>
    <![CDATA[Performs regular expression string replacements in a text
 file.  The input file(s) must be able to be properly processed by
 a Reader instance.  That is, they must be text only, no binary.

 The syntax of the regular expression depends on the implemtation that
 you choose to use. The system property <code>ant.regexp.regexpimpl</code>
 will be the classname of the implementation that will be used (the default
 is <code>org.apache.tools.ant.util.regexp.JakartaOroRegexp</code> and
 requires the Jakarta Oro Package).

 <pre>
 For jdk  &lt;= 1.3, there are two available implementations:
   org.apache.tools.ant.util.regexp.JakartaOroRegexp (the default)
        Requires  the jakarta-oro package

   org.apache.tools.ant.util.regexp.JakartaRegexpRegexp
        Requires the jakarta-regexp package

 For jdk &gt;= 1.4 an additional implementation is available:
   org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp
        Requires the jdk 1.4 built in regular expression package.

 Usage:

   Call Syntax:

     &lt;replaceregexp file="file"
                    match="pattern" 
                    replace="pattern" 
                    flags="options"?
                    byline="true|false"? &gt;
       regexp?
       substitution?
       fileset*
     &lt;/replaceregexp&gt;

    NOTE: You must have either the file attribute specified, or at least one fileset subelement
    to operation on.  You may not have the file attribute specified if you nest fileset elements
    inside this task.  Also, you cannot specify both match and a regular expression subelement at
    the same time, nor can you specify the replace attribute and the substitution subelement at
    the same time.

   Attributes:

     file    --&gt; A single file to operation on (mutually exclusive with the fileset subelements)
     match   --&gt; The Regular expression to match 
     replace --&gt; The Expression replacement string 
     flags   --&gt; The options to give to the replacement 
                 g = Substitute all occurrences. default is to replace only the first one
                 i = Case insensitive match

     byline  --&gt; Should this file be processed a single line at a time (default is false)
                 "true" indicates to perform replacement on a line by line basis
                 "false" indicates to perform replacement on the whole file at once.

  Example:

     The following call could be used to replace an old property name in a ".properties"
     file with a new name.  In the replace attribute, you can refer to any part of the
     match expression in parenthesis using backslash followed by a number like '\1'.

     &lt;replaceregexp file="test.properties"
                    match="MyProperty=(.*)"
                    replace="NewProperty=\1"
                    byline="true" /&gt;

 </pre>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="byline" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Process the file(s) one line at a time, executing the replacement
 on one line at a time.]]></short-description>
        <description><![CDATA[
          Process the file(s) one line at a time, executing the replacement
 on one line at a time.  This is useful if you
 want to only replace the first occurence of a regular expression on
 each line, which is not easy to do when processing the file as a whole.
 Defaults to <i>false</i>.</td>
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File for which the regular expression should be replaced;
 required unless a nested fileset is supplied.]]></short-description>
        <description><![CDATA[
          file for which the regular expression should be replaced;
 required unless a nested fileset is supplied.
        ]]></description>
      </attribute>
      <attribute name="flags" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The flags to use when matching the regular expression.]]></short-description>
        <description><![CDATA[
          The flags to use when matching the regular expression.  For more
 information, consult the Perl5 syntax.
 <ul>
  <li>g : Global replacement.  Replace all occurences found
  <li>i : Case Insensitive.  Do not consider case in the match
  <li>m : Multiline.  Treat the string as multiple lines of input, 
         using "^" and "$" as the start or end of any line, respectively, rather than start or end of string.
  <li> s : Singleline.  Treat the string as a single line of input, using
        "." to match any character, including a newline, which normally, it would not match.
</ul>
        ]]></description>
      </attribute>
      <attribute name="match" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The regular expression pattern to match in the file(s);
 required if no nested &lt;regexp&gt; is used.]]></short-description>
        <description><![CDATA[
          the regular expression pattern to match in the file(s);
 required if no nested &lt;regexp&gt; is used
        ]]></description>
      </attribute>
      <attribute name="replace" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The substitution pattern to place in the file(s) in place
 of the regular expression.]]></short-description>
        <description><![CDATA[
          The substitution pattern to place in the file(s) in place
 of the regular expression.
 Required if no nested &lt;substitution&gt; is used
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[List files to apply the replacement to.]]></short-description>
        <description>
          <![CDATA[list files to apply the replacement to]]>
        </description>
      </element>

      <element name="regexp" type="org.apache.tools.ant.types.RegularExpression"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[A regular expression.]]></short-description>
        <description>
          <![CDATA[A regular expression.
 You can use this element to refer to a previously
 defined regular expression datatype instance]]>
        </description>
      </element>

      <element name="substitution" type="org.apache.tools.ant.types.Substitution"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[A substitution pattern.]]></short-description>
        <description>
          <![CDATA[A substitution pattern.  You can use this element to refer to a previously
 defined substitution pattern datatype instance.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="rmic" category="java"
      classname="org.apache.tools.ant.taskdefs.Rmic"
      matchingTask="true">

  <short-description><![CDATA[Runs the rmic compiler against classes.</p> <p>Rmic can be run on a single class (as specified with the classname attribute) or a number of classes at once (all classes below base that are neither _Stub nor _Skel classes).]]></short-description>
  <description>
    <![CDATA[Runs the rmic compiler against classes.</p>
 <p>Rmic can be run on a single class (as specified with the classname
 attribute) or a number of classes at once (all classes below base that
 are neither _Stub nor _Skel classes).  If you want to rmic a single
 class and this class is a class nested into another class, you have to
 specify the classname in the form <code>Outer$$Inner</code> instead of
 <code>Outer.Inner</code>.</p>
 <p>It is possible to refine the set of files that are being rmiced. This can be
 done with the <i>includes</i>, <i>includesfile</i>, <i>excludes</i>, 
 <i>excludesfile</i> and <i>defaultexcludes</i>
 attributes. With the <i>includes</i> or <i>includesfile</i> attribute you specify the files you want to
 have included by using patterns. The <i>exclude</i> or <i>excludesfile</i> attribute is used to specify
 the files you want to have excluded. This is also done with patterns. And
 finally with the <i>defaultexcludes</i> attribute, you can specify whether you
 want to use default exclusions or not. See the section on 
 directory based tasks</a>, on how the
 inclusion/exclusion of files works, and how to write patterns.</p>
 <p>This task forms an implicit FileSet and
 supports all attributes of <code>&lt;fileset&gt;</code>
 (<code>dir</code> becomes <code>base</code>) as well as the nested
 <code>&lt;include&gt;</code>, <code>&lt;exclude&gt;</code> and
 <code>&lt;patternset&gt;</code> elements.</p>
 <p>It is possible to use different compilers. This can be selected
 with the &quot;build.rmic&quot; property or the <code>compiler</code>
 attribute. <a name="compilervalues">There are three choices</a>:</p>
 <ul>
   <li>sun (the standard compiler of the JDK)</li>
   <li>kaffe (the standard compiler of 
       {@link <a href="http://www.kaffe.org">Kaffe</a>})</li>
   <li>weblogic</li>
 </ul>
 <p> The <a href="http://dione.zcu.cz/~toman40/miniRMI/">miniRMI</a>
 project contains a compiler implementation for this task as well,
 please consult miniRMI's documentation to learn how to use it.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="base" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Location to store the compiled files; required.]]></short-description>
        <description><![CDATA[
          Sets the location to store the compiled files; required
        ]]></description>
      </attribute>
      <attribute name="classname" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The class to run <code>rmic</code> against;
 optional.]]></short-description>
        <description><![CDATA[
          Sets the the class to run <code>rmic</code> against;
 optional
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used for this compilation.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used for this compilation.
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Adds to the classpath a reference to 
 a &lt;path&gt; defined elsewhere.]]></short-description>
        <description><![CDATA[
          Adds to the classpath a reference to 
 a &lt;path&gt; defined elsewhere.
        ]]></description>
      </attribute>
      <attribute name="compiler" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Compiler implementation to use; optional,
 defaults to the value of the <code>build.rmic</code> property,
 or failing that, default compiler for the current VM.]]></short-description>
        <description><![CDATA[
          Sets the compiler implementation to use; optional,
 defaults to the value of the <code>build.rmic</code> property,
 or failing that, default compiler for the current VM
        ]]></description>
      </attribute>
      <attribute name="debug" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Generate debug info (passes -g to rmic);
 optional, defaults to false.]]></short-description>
        <description><![CDATA[
          generate debug info (passes -g to rmic);
 optional, defaults to false
        ]]></description>
      </attribute>
      <attribute name="extdirs" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Extension directories that will be used during the
 compilation; optional.]]></short-description>
        <description><![CDATA[
          Sets the extension directories that will be used during the
 compilation; optional.
        ]]></description>
      </attribute>
      <attribute name="filtering" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicates whether token filtering should take place;
 optional, default=false.]]></short-description>
        <description><![CDATA[
          indicates whether token filtering should take place;
 optional, default=false
        ]]></description>
      </attribute>
      <attribute name="idl" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicates that IDL output should be 
 generated.]]></short-description>
        <description><![CDATA[
          Indicates that IDL output should be 
 generated.  This defaults to false 
 if not set.
        ]]></description>
      </attribute>
      <attribute name="idlopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Pass additional arguments for idl compile.]]></short-description>
        <description><![CDATA[
          pass additional arguments for idl compile
        ]]></description>
      </attribute>
      <attribute name="iiop" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Indicates that IIOP compatible stubs should
 be generated; optional, defaults to false 
 if not set.]]></short-description>
        <description><![CDATA[
          Indicates that IIOP compatible stubs should
 be generated; optional, defaults to false 
 if not set.
        ]]></description>
      </attribute>
      <attribute name="iiopopts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set additional arguments for iiop.]]></short-description>
        <description><![CDATA[
          Set additional arguments for iiop
        ]]></description>
      </attribute>
      <attribute name="includeantruntime" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether or not to include ant's own classpath in this task's 
 classpath.]]></short-description>
        <description><![CDATA[
          Sets whether or not to include ant's own classpath in this task's 
 classpath.
 Optional; default is <code>true</code>.
        ]]></description>
      </attribute>
      <attribute name="includejavaruntime" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Task's classpath.]]></short-description>
        <description><![CDATA[
          task's classpath.
 Enables or disables including the default run-time
 libraries from the executing VM; optional,
 defaults to false
        ]]></description>
      </attribute>
      <attribute name="sourcebase" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Optional directory to save generated source files to.]]></short-description>
        <description><![CDATA[
          optional directory to save generated source files to.
        ]]></description>
      </attribute>
      <attribute name="stubversion" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specify the JDK version for the generated stub code.]]></short-description>
        <description><![CDATA[
          Specify the JDK version for the generated stub code.
 Specify &quot;1.1&quot; to pass the &quot;-v1.1&quot; option to rmic.</td>
        ]]></description>
      </attribute>
      <attribute name="verify" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to enable verification so that the classes 
 found by the directory match are
 checked to see if they implement java.rmi.Remote.]]></short-description>
        <description><![CDATA[
          Flag to enable verification so that the classes 
 found by the directory match are
 checked to see if they implement java.rmi.Remote.
 Optional; his defaults to false if not set.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Creates a nested classpath element.]]></short-description>
        <description>
          <![CDATA[Creates a nested classpath element.]]>
        </description>
      </element>

      <element name="compilerarg" type="org.apache.tools.ant.taskdefs.Rmic.ImplementationSpecificArgument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds an implementation specific command line argument.]]></short-description>
        <description>
          <![CDATA[Adds an implementation specific command line argument.]]>
        </description>
      </element>

      <element name="extdirs" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Maybe creates a nested extdirs element.]]></short-description>
        <description>
          <![CDATA[Maybe creates a nested extdirs element.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="rpm" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.Rpm"
      >

  <short-description><![CDATA[Invokes the rpm tool to build a Linux installation file.]]></short-description>
  <description>
    <![CDATA[Invokes the rpm tool to build a Linux installation file.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="cleanbuilddir" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag (optional, default=false) to remove 
 the generated files in the BUILD directory.]]></short-description>
        <description><![CDATA[
          Flag (optional, default=false) to remove 
 the generated files in the BUILD directory
        ]]></description>
      </attribute>
      <attribute name="command" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[What command to issue to the rpm tool; optional.]]></short-description>
        <description><![CDATA[
          What command to issue to the rpm tool; optional.
 The default is "-bb"
        ]]></description>
      </attribute>
      <attribute name="error" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Optional file to save stderr to.]]></short-description>
        <description><![CDATA[
          Optional file to save stderr to
        ]]></description>
      </attribute>
      <attribute name="output" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Optional file to save stdout to.]]></short-description>
        <description><![CDATA[
          Optional file to save stdout to.
        ]]></description>
      </attribute>
      <attribute name="removesource" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag (optional, default=false) 
 to remove the sources after the build.]]></short-description>
        <description><![CDATA[
          Flag (optional, default=false) 
 to remove the sources after the build.
 See the the <tt>--rmsource</tt>  option of rpmbuild.
        ]]></description>
      </attribute>
      <attribute name="removespec" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag (optional, default=false) to remove the spec file from SPECS.]]></short-description>
        <description><![CDATA[
          Flag (optional, default=false) to remove the spec file from SPECS
        ]]></description>
      </attribute>
      <attribute name="specfile" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of the spec File to use; required.]]></short-description>
        <description><![CDATA[
          The name of the spec File to use; required.
        ]]></description>
      </attribute>
      <attribute name="topdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory which will have the expected
 subdirectories, SPECS, SOURCES, BUILD, SRPMS ; optional.]]></short-description>
        <description><![CDATA[
          The directory which will have the expected
 subdirectories, SPECS, SOURCES, BUILD, SRPMS ; optional. 
 If this isn't specified,
 the <tt>baseDir</tt> value is used
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="script" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.Script"
      >

  <short-description><![CDATA[Executes a script.]]></short-description>
  <description>
    <![CDATA[Executes a script.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="language" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Defines the language (required).]]></short-description>
        <description><![CDATA[
          Defines the language (required).
        ]]></description>
      </attribute>
      <attribute name="src" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Load the script from an external file ; optional.]]></short-description>
        <description><![CDATA[
          Load the script from an external file ; optional.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

      <body >
        <description><![CDATA[
          The script text.
        ]]></description>
      </body>

  </structure>

</task>


<task name="sequential" category="control"
      classname="org.apache.tools.ant.taskdefs.Sequential"
      >

  <short-description><![CDATA[Sequential is a container task - it can contain other Ant tasks.]]></short-description>
  <description>
    <![CDATA[Sequential is a container task - it can contain other Ant tasks. The nested 
 tasks are simply executed in sequence. Sequential's primary use is to support 
 the sequential execution of a subset of tasks within the
{@link Parallel Parallel Task} 

 <p>
 The sequential task has no attributes and does not support any nested 
 elements apart from Ant tasks. Any valid Ant task may be embedded within the 
 sequential task.</p>]]>
  </description>

  <structure>

    <attributes>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="serverdeploy" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.j2ee.ServerDeploy"
      >

  <short-description><![CDATA[Controls hot deployment tools for J2EE servers.]]></short-description>
  <description>
    <![CDATA[Controls hot deployment tools for J2EE servers.

  This class is used as a framework for the creation of vendor specific
  hot deployment tools.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="action" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The action to be performed, usually "deploy"; required.]]></short-description>
        <description><![CDATA[
          The action to be performed, usually "deploy"; required.
   Some tools support additional actions, such as "delete", "list", "undeploy", "update"...
        ]]></description>
      </attribute>
      <attribute name="source" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The filename of the component to be deployed; optional
  depending upon the tool and the action.]]></short-description>
        <description><![CDATA[
          The filename of the component to be deployed; optional
  depending upon the tool and the action.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="generic" type="org.apache.tools.ant.taskdefs.optional.j2ee.GenericHotDeploymentTool"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Creates a generic deployment tool.]]></short-description>
        <description>
          <![CDATA[Creates a generic deployment tool.
  <p>Ant calls this method on creation to handle embedded "generic" elements
  in the ServerDeploy task.]]>
        </description>
      </element>

      <element name="jonas" type="org.apache.tools.ant.taskdefs.optional.j2ee.JonasHotDeploymentTool"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Creates a JOnAS deployment tool, for deployment to JOnAS servers.]]></short-description>
        <description>
          <![CDATA[Creates a JOnAS deployment tool, for deployment to JOnAS servers.
  <p>Ant calls this method on creation to handle embedded "jonas" elements
  in the ServerDeploy task.]]>
        </description>
      </element>

      <element name="weblogic" type="org.apache.tools.ant.taskdefs.optional.j2ee.WebLogicHotDeploymentTool"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Creates a WebLogic deployment tool, for deployment to WebLogic servers.]]></short-description>
        <description>
          <![CDATA[Creates a WebLogic deployment tool, for deployment to WebLogic servers.
  <p>Ant calls this method on creation to handle embedded "weblogic" elements
  in the ServerDeploy task.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="setproxy" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.net.SetProxy"
      >

  <short-description><![CDATA[Sets Java's web proxy properties, so that tasks and code run in the same JVM can have through-the-firewall access to remote web sites, and remote ftp sites.]]></short-description>
  <description>
    <![CDATA[Sets Java's web proxy properties, so that tasks and code run in
 the same JVM can have through-the-firewall access to remote web sites,
 and remote ftp sites.
 You can nominate an http and ftp proxy, or a socks server, reset the server 
 settings, or do nothing at all.
 <p> 
 Examples
 <pre>&lt;setproxy/&gt;</pre>
 do nothing
 <pre>&lt;setproxy proxyhost="firewall"/&gt;</pre>
 set the proxy to firewall:80
 <pre>&lt;setproxy proxyhost="firewall" proxyport="81"/&gt;</pre>
 set the proxy to firewall:81
 <pre>&lt;setproxy proxyhost=""/&gt;</pre>
 stop using the http proxy; don't change the socks settings
 <pre>&lt;setproxy socksproxyhost="socksy"/&gt;</pre>
 use socks via socksy:1080
 <pre>&lt;setproxy socksproxyhost=""/&gt;</pre>
 stop using the socks server]]>
  </description>

  <structure>

    <attributes>
      <attribute name="nonproxyhosts" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[A list of hosts to bypass the proxy on.]]></short-description>
        <description><![CDATA[
          A list of hosts to bypass the proxy on. These should be separated
 with the vertical bar character '|'. Only in Java 1.4 does ftp use
 this list.
 e.g. fozbot.corp.sun.com|*.eng.sun.com
        ]]></description>
      </attribute>
      <attribute name="proxyhost" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The HTTP/ftp proxy host.]]></short-description>
        <description><![CDATA[
          the HTTP/ftp proxy host. Set this to "" for the http proxy
 option to be disabled
        ]]></description>
      </attribute>
      <attribute name="proxyport" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[The HTTP/ftp proxy port number; default is 80.]]></short-description>
        <description><![CDATA[
          the HTTP/ftp proxy port number; default is 80
        ]]></description>
      </attribute>
      <attribute name="socksproxyhost" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of a Socks server.]]></short-description>
        <description><![CDATA[
          The name of a Socks server. Set to "" to turn socks
 proxying off.
        ]]></description>
      </attribute>
      <attribute name="socksproxyport" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[ProxyPort for socks connections.]]></short-description>
        <description><![CDATA[
          Set the ProxyPort for socks connections. The default value is 1080
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="signjar" category="java"
      classname="org.apache.tools.ant.taskdefs.SignJar"
      >

  <short-description><![CDATA[Signs jar or zip files with the javasign command line tool.]]></short-description>
  <description>
    <![CDATA[Signs jar or zip files with the javasign command line tool. The
 tool detailed dependency checking: files are only signed if they
 are not signed. The <tt>signjar</tt> attribute can point to the file to
 generate; if this file exists then
 its modification date is used as a cue as to whether to resign any JAR file.
 <br>  
 <strong>Note:</strong> Requires Java 1.2 or later. </p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="alias" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The alias to sign under; required.]]></short-description>
        <description><![CDATA[
          the alias to sign under; required
        ]]></description>
      </attribute>
      <attribute name="internalsf" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to include the .SF file inside the signature;
 optional; default false.]]></short-description>
        <description><![CDATA[
          Flag to include the .SF file inside the signature;
 optional; default false
        ]]></description>
      </attribute>
      <attribute name="jar" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The jar file to sign; required.]]></short-description>
        <description><![CDATA[
          the jar file to sign; required
        ]]></description>
      </attribute>
      <attribute name="keypass" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Password for private key (if different); optional.]]></short-description>
        <description><![CDATA[
          password for private key (if different); optional
        ]]></description>
      </attribute>
      <attribute name="keystore" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Keystore location; required.]]></short-description>
        <description><![CDATA[
          keystore location; required
        ]]></description>
      </attribute>
      <attribute name="lazy" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to control whether the presence of a signature
 file means a JAR is signed;
 optional, default false.]]></short-description>
        <description><![CDATA[
          flag to control whether the presence of a signature
 file means a JAR is signed;
 optional, default false
        ]]></description>
      </attribute>
      <attribute name="sectionsonly" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to compute hash of entire manifest;
 optional, default false.]]></short-description>
        <description><![CDATA[
          flag to compute hash of entire manifest;
 optional, default false
        ]]></description>
      </attribute>
      <attribute name="sigfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of .SF/.DSA file; optional.]]></short-description>
        <description><![CDATA[
          name of .SF/.DSA file; optional
        ]]></description>
      </attribute>
      <attribute name="signedjar" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of signed JAR file; optional.]]></short-description>
        <description><![CDATA[
          name of signed JAR file; optional
        ]]></description>
      </attribute>
      <attribute name="storepass" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Password for keystore integrity; required.]]></short-description>
        <description><![CDATA[
          password for keystore integrity; required
        ]]></description>
      </attribute>
      <attribute name="storetype" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Keystore type; optional.]]></short-description>
        <description><![CDATA[
          keystore type; optional
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Enable verbose output when signing
 ; optional: default false.]]></short-description>
        <description><![CDATA[
          Enable verbose output when signing
 ; optional: default false
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files to sign.]]></short-description>
        <description>
          <![CDATA[Adds a set of files to sign]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="sleep" category="utility"
      classname="org.apache.tools.ant.taskdefs.Sleep"
      >

  <short-description><![CDATA[Sleep, or pause, for a period of time.]]></short-description>
  <description>
    <![CDATA[Sleep, or pause, for a period of time.

 A task for sleeping a short period of time, useful when a
 build or deployment process requires an interval between tasks.
<p>
 A negative value can be supplied to any of attributes provided the total sleep time 
 is positive, pending fundamental changes in physics and JVM
 execution tims</p>
 Note that sleep times are always hints to be interpred by the OS how it feels 
 small times may either be ignored or rounded up to a minimum timeslice. Note 
 also that the system clocks often have a fairly low granularity too, which complicates 
 measuring how long a sleep actually took.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag controlling whether to break the build on an error.]]></short-description>
        <description><![CDATA[
          flag controlling whether to break the build on an error.
        ]]></description>
      </attribute>
      <attribute name="hours" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Hours to add to the sleep time.]]></short-description>
        <description><![CDATA[
          hours to add to the sleep time.
        ]]></description>
      </attribute>
      <attribute name="milliseconds" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Milliseconds to add to the sleep time.]]></short-description>
        <description><![CDATA[
          milliseconds to add to the sleep time
        ]]></description>
      </attribute>
      <attribute name="minutes" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Minutes to add to the sleep time.]]></short-description>
        <description><![CDATA[
          minutes to add to the sleep time
        ]]></description>
      </attribute>
      <attribute name="seconds" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Seconds to add to the sleep time.]]></short-description>
        <description><![CDATA[
          seconds to add to the sleep time
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="soscheckin" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.sos.SOSCheckin"
      >

  <short-description><![CDATA[Commits and unlocks files in Visual SourceSafe via a SourceOffSite server.]]></short-description>
  <description>
    <![CDATA[Commits and unlocks files in Visual SourceSafe via a SourceOffSite server.

 <p>
 The following attributes are interpretted:
 <table border="1">
   <tr>
     <th>Attribute</th>
     <th>Values</th>
     <th>Required</th>
   </tr>
   <tr>
     <td>soscmddir</td>
     <td>Directory which contains soscmd(.exe) <br>
     soscmd(.exe) must be in the path if this is not specified</td>
     <td>No</td>
   </tr>
   <tr>
      <td>vssserverpath</td>
      <td>path to the srcsafe.ini  - eg. \\server\vss\srcsafe.ini</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>sosserverpath</td>
      <td>address and port of the SOS server  - eg. 192.168.0.1:8888</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>projectpath</td>
      <td>SourceSafe project path without the "$"</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>file</td>
      <td>Filename to act upon<br> If no file is specified then act upon the project</td>
      <td>No</td>
   </tr>
   <tr>
      <td>username</td>
      <td>SourceSafe username</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>password</td>
      <td>SourceSafe password</td>
      <td>No</td>
   </tr>
   <tr>
      <td>localpath</td>
      <td>Override the working directory and get to the specified path</td>
      <td>No</td>
   </tr>
   <tr>
      <td>soshome</td>
      <td>The path to the SourceOffSite home directory</td>
      <td>No</td>
   </tr>
   <tr>
      <td>nocompression</td>
      <td>true or false - disable compression</td>
      <td>No</td>
   </tr>
   <tr>
      <td>recursive</td>
      <td>true or false - Only works with the CheckOutProject command</td>
      <td>No</td>
   </tr>
   <tr>
      <td>nocache</td>
      <td>true or false - Only needed if SOSHOME is set as an enviroment variable</td>
      <td>No</td>
   </tr>
   <tr>
      <td>verbose</td>
      <td>true or false - Status messages are displayed</td>
      <td>No</td>
   </tr>
   <td>comment</td>
      <td>A comment to be applied to all files being checked in</td>
      <td>No</td>
   </tr>
 </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Comment to apply to all files being labelled;
 optional, only valid in SOSLabel.]]></short-description>
        <description><![CDATA[
          Set the comment to apply to all files being labelled;
 optional, only valid in SOSLabel
        ]]></description>
      </attribute>
      <attribute name="file" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Filename to act upon; optional.]]></short-description>
        <description><![CDATA[
          Set the Filename to act upon; optional.
 If no file is specified then the tasks 
 act upon the project
        ]]></description>
      </attribute>
      <attribute name="label" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Labeled version to operate on in SourceSafe.]]></short-description>
        <description><![CDATA[
          Set the labeled version to operate on in SourceSafe
        ]]></description>
      </attribute>
      <attribute name="localpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Override the working directory and get to the specified path; optional.]]></short-description>
        <description><![CDATA[
          Override the working directory and get to the specified path; optional.
        ]]></description>
      </attribute>
      <attribute name="nocache" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.]]></short-description>
        <description><![CDATA[
          flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.
        ]]></description>
      </attribute>
      <attribute name="nocompress" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag that disables compression when set; optional, default.]]></short-description>
        <description><![CDATA[
          Flag that disables compression when set; optional, default
        ]]></description>
      </attribute>
      <attribute name="password" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe password; optional.]]></short-description>
        <description><![CDATA[
          Set the SourceSafe password; optional.
        ]]></description>
      </attribute>
      <attribute name="projectpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe project path without the "$" prefix; required.]]></short-description>
        <description><![CDATA[
          Set the SourceSafe project path without the "$" prefix; required
        ]]></description>
      </attribute>
      <attribute name="recursive" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false.]]></short-description>
        <description><![CDATA[
          Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false
        ]]></description>
      </attribute>
      <attribute name="soscmd" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.]]></short-description>
        <description><![CDATA[
          Set the directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.
        ]]></description>
      </attribute>
      <attribute name="soshome" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The path to the SourceOffSite home directory.]]></short-description>
        <description><![CDATA[
          The path to the SourceOffSite home directory
        ]]></description>
      </attribute>
      <attribute name="sosserverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.]]></short-description>
        <description><![CDATA[
          Set the address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.
        ]]></description>
      </attribute>
      <attribute name="username" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe username; required.]]></short-description>
        <description><![CDATA[
          Set the SourceSafe username; required.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Enable verbose output; optional, default false.]]></short-description>
        <description><![CDATA[
          Enable verbose output; optional, default false
        ]]></description>
      </attribute>
      <attribute name="version" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[A version number to get - 
 only works with the SOSGet on a file; optional.]]></short-description>
        <description><![CDATA[
          Set the a version number to get - 
 only works with the SOSGet on a file; optional.
        ]]></description>
      </attribute>
      <attribute name="vssserverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Path to the location of the ss.ini file; 
 required.]]></short-description>
        <description><![CDATA[
          Set the path to the location of the ss.ini file; 
 required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="soscheckout" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.sos.SOSCheckout"
      >

  <short-description><![CDATA[Retrieves and locks files in Visual SourceSafe via a SourceOffSite server.]]></short-description>
  <description>
    <![CDATA[Retrieves and locks files in Visual SourceSafe via a SourceOffSite server.

 <p>
 The following attributes are interpretted:
 <table border="1">
   <tr>
     <th>Attribute</th>
     <th>Values</th>
     <th>Required</th>
   </tr>
   <tr>
     <td>soscmddir</td>
     <td>Directory which contains soscmd(.exe) <br>
     soscmd(.exe) must be in the path if this is not specified</td>
     <td>No</td>
   </tr>
   <tr>
      <td>vssserverpath</td>
      <td>path to the srcsafe.ini  - eg. \\server\vss\srcsafe.ini</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>sosserverpath</td>
      <td>address and port of the SOS server  - eg. 192.168.0.1:8888</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>projectpath</td>
      <td>SourceSafe project path without the "$"</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>file</td>
      <td>Filename to act upon<br> If no file is specified then act upon the project</td>
      <td>No</td>
   </tr>
   <tr>
      <td>username</td>
      <td>SourceSafe username</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>password</td>
      <td>SourceSafe password</td>
      <td>No</td>
   </tr>
   <tr>
      <td>localpath</td>
      <td>Override the working directory and get to the specified path</td>
      <td>No</td>
   </tr>
   <tr>
      <td>soshome</td>
      <td>The path to the SourceOffSite home directory</td>
      <td>No</td>
   </tr>
   <tr>
      <td>nocompression</td>
      <td>true or false - disable compression</td>
      <td>No</td>
   </tr>
   <tr>
      <td>recursive</td>
      <td>true or false - Only works with the CheckOutProject command</td>
      <td>No</td>
   </tr>
   <tr>
      <td>nocache</td>
      <td>true or false - Only needed if SOSHOME is set as an enviroment variable</td>
      <td>No</td>
   </tr>
   <tr>
      <td>verbose</td>
      <td>true or false - Status messages are displayed</td>
      <td>No</td>
   </tr>
 </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Comment to apply to all files being labelled;
 optional, only valid in SOSLabel.]]></short-description>
        <description><![CDATA[
          Set the comment to apply to all files being labelled;
 optional, only valid in SOSLabel
        ]]></description>
      </attribute>
      <attribute name="file" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Filename to act upon; optional.]]></short-description>
        <description><![CDATA[
          Set the Filename to act upon; optional.
 If no file is specified then the tasks 
 act upon the project
        ]]></description>
      </attribute>
      <attribute name="label" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Labeled version to operate on in SourceSafe.]]></short-description>
        <description><![CDATA[
          Set the labeled version to operate on in SourceSafe
        ]]></description>
      </attribute>
      <attribute name="localpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Override the working directory and get to the specified path; optional.]]></short-description>
        <description><![CDATA[
          Override the working directory and get to the specified path; optional.
        ]]></description>
      </attribute>
      <attribute name="nocache" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.]]></short-description>
        <description><![CDATA[
          flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.
        ]]></description>
      </attribute>
      <attribute name="nocompress" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag that disables compression when set; optional, default.]]></short-description>
        <description><![CDATA[
          Flag that disables compression when set; optional, default
        ]]></description>
      </attribute>
      <attribute name="password" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe password; optional.]]></short-description>
        <description><![CDATA[
          Set the SourceSafe password; optional.
        ]]></description>
      </attribute>
      <attribute name="projectpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe project path without the "$" prefix; required.]]></short-description>
        <description><![CDATA[
          Set the SourceSafe project path without the "$" prefix; required
        ]]></description>
      </attribute>
      <attribute name="recursive" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false.]]></short-description>
        <description><![CDATA[
          Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false
        ]]></description>
      </attribute>
      <attribute name="soscmd" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.]]></short-description>
        <description><![CDATA[
          Set the directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.
        ]]></description>
      </attribute>
      <attribute name="soshome" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The path to the SourceOffSite home directory.]]></short-description>
        <description><![CDATA[
          The path to the SourceOffSite home directory
        ]]></description>
      </attribute>
      <attribute name="sosserverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.]]></short-description>
        <description><![CDATA[
          Set the address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.
        ]]></description>
      </attribute>
      <attribute name="username" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe username; required.]]></short-description>
        <description><![CDATA[
          Set the SourceSafe username; required.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Enable verbose output; optional, default false.]]></short-description>
        <description><![CDATA[
          Enable verbose output; optional, default false
        ]]></description>
      </attribute>
      <attribute name="version" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[A version number to get - 
 only works with the SOSGet on a file; optional.]]></short-description>
        <description><![CDATA[
          Set the a version number to get - 
 only works with the SOSGet on a file; optional.
        ]]></description>
      </attribute>
      <attribute name="vssserverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Path to the location of the ss.ini file; 
 required.]]></short-description>
        <description><![CDATA[
          Set the path to the location of the ss.ini file; 
 required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="sosget" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.sos.SOSGet"
      >

  <short-description><![CDATA[Retrieves a read-only copy of the specified project or file from Visual SourceSafe via a SourceOffSite server.]]></short-description>
  <description>
    <![CDATA[Retrieves a read-only copy of the specified project or file
 from Visual SourceSafe via a SourceOffSite server.
 <p>
 The following attributes are interpretted:
 <table border="1">
    <tbody>
      <tr>
         <th>Attribute</th>
         <th>Values</th>
         <th>Required</th>
       </tr>
       <tr>
         <td>soscmddir</td>
         <td>Directory which contains soscmd(.exe) <br>
         soscmd(.exe) must be in the path if this is not specified</td>
         <td>No</td>
       </tr>
       <tr>
          <td>vssserverpath</td>
          <td>path to the srcsafe.ini  - eg. \\server\vss\srcsafe.ini</td>
          <td>Yes</td>
       </tr>
       <tr>
          <td>sosserverpath</td>
          <td>address and port of the SOS server  - eg. 192.168.0.1:8888</td>
          <td>Yes</td>
       </tr>
       <tr>
          <td>projectpath</td>
          <td>SourceSafe project path without the "$"</td>
          <td>Yes</td>
       </tr>
       <tr>
          <td>file</td>
          <td>Filename to act upon<br>
              If no file is specified then act upon the project</td>
          <td>No</td>
       </tr>
       <tr>
          <td>username</td>
          <td>SourceSafe username</td>
          <td>Yes</td>
       </tr>
       <tr>
          <td>password</td>
          <td>SourceSafe password</td>
          <td>No</td>
       </tr>
       <tr>
          <td>localpath</td>
          <td>Override the working directory and get to the specified path</td>
          <td>No</td>
       </tr>
       <tr>
          <td>soshome</td>
          <td>The path to the SourceOffSite home directory</td>
          <td>No</td>
       </tr>
       <tr>
          <td>nocompression</td>
          <td>true or false - disable compression</td>
          <td>No</td>
       </tr>
       <tr>
          <td>recursive</td>
          <td>true or false - Only works with the GetProject command</td>
          <td>No</td>
       </tr>
       <tr>
          <td>version</td>
          <td>a version number to get - Only works with the GetFile command</td>
          <td>No</td>
       </tr>
       <tr>
          <td>label</td>
          <td>a label version to get - Only works with the GetProject command</td>
          <td>No</td>
       </tr>
       <tr>
          <td>nocache</td>
          <td>true or false - Only needed if SOSHOME is set as an enviroment variable</td>
          <td>No</td>
       </tr>
       <tr>
          <td>verbose</td>
         <td>true or false - Status messages are displayed</td>
        <td>No</td>
      </tr>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Comment to apply to all files being labelled;
 optional, only valid in SOSLabel.]]></short-description>
        <description><![CDATA[
          Set the comment to apply to all files being labelled;
 optional, only valid in SOSLabel
        ]]></description>
      </attribute>
      <attribute name="file" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Filename to act upon; optional.]]></short-description>
        <description><![CDATA[
          Set the Filename to act upon; optional.
 If no file is specified then the tasks 
 act upon the project
        ]]></description>
      </attribute>
      <attribute name="label" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Labeled version to operate on in SourceSafe.]]></short-description>
        <description><![CDATA[
          Set the labeled version to operate on in SourceSafe
        ]]></description>
      </attribute>
      <attribute name="localpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Override the working directory and get to the specified path; optional.]]></short-description>
        <description><![CDATA[
          Override the working directory and get to the specified path; optional.
        ]]></description>
      </attribute>
      <attribute name="nocache" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.]]></short-description>
        <description><![CDATA[
          flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.
        ]]></description>
      </attribute>
      <attribute name="nocompress" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag that disables compression when set; optional, default.]]></short-description>
        <description><![CDATA[
          Flag that disables compression when set; optional, default
        ]]></description>
      </attribute>
      <attribute name="password" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe password; optional.]]></short-description>
        <description><![CDATA[
          Set the SourceSafe password; optional.
        ]]></description>
      </attribute>
      <attribute name="projectpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe project path without the "$" prefix; required.]]></short-description>
        <description><![CDATA[
          Set the SourceSafe project path without the "$" prefix; required
        ]]></description>
      </attribute>
      <attribute name="recursive" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false.]]></short-description>
        <description><![CDATA[
          Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false
        ]]></description>
      </attribute>
      <attribute name="soscmd" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.]]></short-description>
        <description><![CDATA[
          Set the directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.
        ]]></description>
      </attribute>
      <attribute name="soshome" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The path to the SourceOffSite home directory.]]></short-description>
        <description><![CDATA[
          The path to the SourceOffSite home directory
        ]]></description>
      </attribute>
      <attribute name="sosserverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.]]></short-description>
        <description><![CDATA[
          Set the address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.
        ]]></description>
      </attribute>
      <attribute name="username" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe username; required.]]></short-description>
        <description><![CDATA[
          Set the SourceSafe username; required.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Enable verbose output; optional, default false.]]></short-description>
        <description><![CDATA[
          Enable verbose output; optional, default false
        ]]></description>
      </attribute>
      <attribute name="version" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[A version number to get - 
 only works with the SOSGet on a file; optional.]]></short-description>
        <description><![CDATA[
          Set the a version number to get - 
 only works with the SOSGet on a file; optional.
        ]]></description>
      </attribute>
      <attribute name="vssserverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Path to the location of the ss.ini file; 
 required.]]></short-description>
        <description><![CDATA[
          Set the path to the location of the ss.ini file; 
 required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="soslabel" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.sos.SOSLabel"
      >

  <short-description><![CDATA[Labels Visual SourceSafe files via a SourceOffSite server.]]></short-description>
  <description>
    <![CDATA[Labels Visual SourceSafe files via a SourceOffSite server.
 <p>
 The following attributes are interpreted:
 <table border="1">
   <tr>
     <th>Attribute</th>
     <th>Values</th>
     <th>Required</th>
   </tr>
   <tr>
     <td>soscmddir</td>
     <td>Directory which contains soscmd(.exe) <br>
     soscmd(.exe) must be in the path if this is not specified</td>
     <td>No</td>
   </tr>
   <tr>
      <td>vssserverpath</td>
      <td>path to the srcsafe.ini  - eg. \\server\vss\srcsafe.ini</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>sosserverpath</td>
      <td>address and port of the SOS server  - eg. 192.168.0.1:8888</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>projectpath</td>
      <td>SourceSafe project path without the "$"</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>username</td>
      <td>SourceSafe username</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>password</td>
      <td>SourceSafe password</td>
      <td>No</td>
   </tr>
   <tr>
      <td>label</td>
      <td>The label to apply to a project</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>comment</td>
      <td>A comment to be applied to all files being labeled</td>
      <td>No</td>
   </tr>
   <tr>
      <td>verbose</td>
      <td>true or false - Status messages are displayed</td>
      <td>No</td>
   </tr>
 </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Comment to apply to all files being labelled;
 optional, only valid in SOSLabel.]]></short-description>
        <description><![CDATA[
          Set the comment to apply to all files being labelled;
 optional, only valid in SOSLabel
        ]]></description>
      </attribute>
      <attribute name="file" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Filename to act upon; optional.]]></short-description>
        <description><![CDATA[
          Set the Filename to act upon; optional.
 If no file is specified then the tasks 
 act upon the project
        ]]></description>
      </attribute>
      <attribute name="label" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Labeled version to operate on in SourceSafe.]]></short-description>
        <description><![CDATA[
          Set the labeled version to operate on in SourceSafe
        ]]></description>
      </attribute>
      <attribute name="localpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Override the working directory and get to the specified path; optional.]]></short-description>
        <description><![CDATA[
          Override the working directory and get to the specified path; optional.
        ]]></description>
      </attribute>
      <attribute name="nocache" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.]]></short-description>
        <description><![CDATA[
          flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.
        ]]></description>
      </attribute>
      <attribute name="nocompress" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag that disables compression when set; optional, default.]]></short-description>
        <description><![CDATA[
          Flag that disables compression when set; optional, default
        ]]></description>
      </attribute>
      <attribute name="password" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe password; optional.]]></short-description>
        <description><![CDATA[
          Set the SourceSafe password; optional.
        ]]></description>
      </attribute>
      <attribute name="projectpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe project path without the "$" prefix; required.]]></short-description>
        <description><![CDATA[
          Set the SourceSafe project path without the "$" prefix; required
        ]]></description>
      </attribute>
      <attribute name="recursive" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false.]]></short-description>
        <description><![CDATA[
          Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false
        ]]></description>
      </attribute>
      <attribute name="soscmd" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.]]></short-description>
        <description><![CDATA[
          Set the directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.
        ]]></description>
      </attribute>
      <attribute name="soshome" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The path to the SourceOffSite home directory.]]></short-description>
        <description><![CDATA[
          The path to the SourceOffSite home directory
        ]]></description>
      </attribute>
      <attribute name="sosserverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.]]></short-description>
        <description><![CDATA[
          Set the address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.
        ]]></description>
      </attribute>
      <attribute name="username" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe username; required.]]></short-description>
        <description><![CDATA[
          Set the SourceSafe username; required.
        ]]></description>
      </attribute>
      <attribute name="verbose" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Enable verbose output; optional, default false.]]></short-description>
        <description><![CDATA[
          Enable verbose output; optional, default false
        ]]></description>
      </attribute>
      <attribute name="version" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[A version number to get - 
 only works with the SOSGet on a file; optional.]]></short-description>
        <description><![CDATA[
          Set the a version number to get - 
 only works with the SOSGet on a file; optional.
        ]]></description>
      </attribute>
      <attribute name="vssserverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Path to the location of the ss.ini file; 
 required.]]></short-description>
        <description><![CDATA[
          Set the path to the location of the ss.ini file; 
 required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="sound" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.sound.SoundTask"
      >

  <short-description><![CDATA[Plays a sound file at the end of the build, according to whether the build failed or succeeded.]]></short-description>
  <description>
    <![CDATA[Plays a sound file at the end of the build, according to whether the build failed or succeeded.

 There are three attributes to be set:

 <code>source</code>: the location of the audio file to be played
 <code>duration</code>: play the sound file continuously until "duration" milliseconds has expired
 <code>loops</code>: the number of times the sound file should be played until stopped

 I have only tested this with .WAV and .AIFF sound file formats. Both seem
 to work fine.

 plans for the future:
 - use the midi api to define sounds (or drum beat etc) in xml and have
   Ant play them back]]>
  </description>

  <structure>

    <attributes>
    </attributes>

    <elements>
      <element name="fail" type="org.apache.tools.ant.taskdefs.optional.sound.SoundTask.BuildAlert"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a sound when the build fails.]]></short-description>
        <description>
          <![CDATA[add a sound when the build fails]]>
        </description>
      </element>

      <element name="success" type="org.apache.tools.ant.taskdefs.optional.sound.SoundTask.BuildAlert"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a sound when the build succeeds.]]></short-description>
        <description>
          <![CDATA[add a sound when the build succeeds]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="splash" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.splash.SplashTask"
      >

  <short-description><![CDATA[Creates a splash screen.]]></short-description>
  <description>
    <![CDATA[Creates a splash screen. The splash screen is displayed
 for the duration of the build and includes a handy progress bar as
 well. Use in conjunction with the sound task to provide interest
 whilst waiting for your builds to complete...]]>
  </description>

  <structure>

    <attributes>
      <attribute name="imageurl" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[A URL pointing to an image to display; optional, default antlogo.gif
 from the classpath.]]></short-description>
        <description><![CDATA[
          A URL pointing to an image to display; optional, default antlogo.gif
 from the classpath.
        ]]></description>
      </attribute>
      <attribute name="password" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Proxy password; required if <tt>user</tt> is set.]]></short-description>
        <description><![CDATA[
          Proxy password; required if <tt>user</tt> is set.
        ]]></description>
      </attribute>
      <attribute name="port" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Proxy port; optional, default 80.]]></short-description>
        <description><![CDATA[
          Proxy port; optional, default 80.
        ]]></description>
      </attribute>
      <attribute name="proxy" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of proxy; optional.]]></short-description>
        <description><![CDATA[
          name of proxy; optional.
        ]]></description>
      </attribute>
      <attribute name="showduration" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[How long to show the splash screen in milliseconds,
 optional; default 5000 ms.]]></short-description>
        <description><![CDATA[
          how long to show the splash screen in milliseconds,
 optional; default 5000 ms.
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Proxy user; optional, default =none.]]></short-description>
        <description><![CDATA[
          Proxy user; optional, default =none.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="sql" category="database"
      classname="org.apache.tools.ant.taskdefs.SQLExec"
      >

  <short-description><![CDATA[Executes a series of SQL statements on a database using JDBC.]]></short-description>
  <description>
    <![CDATA[Executes a series of SQL statements on a database using JDBC.

 <p>Statements can
 either be read in from a text file using the <i>src</i> attribute or from 
 between the enclosing SQL tags.</p>
 <p>Multiple statements can be provided, separated by semicolons (or the 
 defined <i>delimiter</i>). Individual lines within the statements can be 
 commented using either --, // or REM at the start of the line.</p>
 <p>The <i>autocommit</i> attribute specifies whether auto-commit should be 
 turned on or off whilst executing the statements. If auto-commit is turned 
 on each statement will be executed and committed. If it is turned off the 
 statements will all be executed as one transaction.</p>
 <p>The <i>onerror</i> attribute specifies how to proceed when an error occurs 
 during the execution of one of the statements. 
 The possible values are: <b>continue</b> execution, only show the error;
 <b>stop</b> execution and commit transaction;
 and <b>abort</b> execution and transaction and fail task.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="append" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether output should be appended to or overwrite
 an existing file.]]></short-description>
        <description><![CDATA[
          whether output should be appended to or overwrite
 an existing file.  Defaults to false.
        ]]></description>
      </attribute>
      <attribute name="autocommit" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Auto commit flag for database connection;
 optional, default false.]]></short-description>
        <description><![CDATA[
          Auto commit flag for database connection;
 optional, default false.
        ]]></description>
      </attribute>
      <attribute name="caching" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Caching loaders / driver.]]></short-description>
        <description><![CDATA[
          Caching loaders / driver. This is to avoid
 getting an OutOfMemoryError when calling this task
 multiple times in a row; default: true
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath for loading the driver.]]></short-description>
        <description><![CDATA[
          Sets the classpath for loading the driver.
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Classpath for loading the driver 
 using the classpath reference.]]></short-description>
        <description><![CDATA[
          Set the classpath for loading the driver 
 using the classpath reference.
        ]]></description>
      </attribute>
      <attribute name="delimiter" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Delimiter that separates SQL statements; 
 optional, default &quot;;&quot;

 <p>For example, set this to "go" and delimitertype to "ROW" for
 Sybase ASE or MS SQL Server.</p>.]]></short-description>
        <description><![CDATA[
          Set the delimiter that separates SQL statements; 
 optional, default &quot;;&quot;

 <p>For example, set this to "go" and delimitertype to "ROW" for
 Sybase ASE or MS SQL Server.</p>
        ]]></description>
      </attribute>
      <attribute name="delimitertype" type="org.apache.tools.ant.taskdefs.SQLExec.DelimiterType"
                 briefType="&quot;normal&quot;, &quot;row&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Delimiter type: "normal" or "row" (default "normal").]]></short-description>
        <description><![CDATA[
          Set the delimiter type: "normal" or "row" (default "normal").

 <p>The delimiter type takes two values - normal and row. Normal
 means that any occurence of the delimiter terminate the SQL
 command whereas with row, only a line containing just the
 delimiter is recognized as the end of the command.</p>
        ]]></description>
      </attribute>
      <attribute name="driver" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Class name of the JDBC driver; required.]]></short-description>
        <description><![CDATA[
          Class name of the JDBC driver; required.
        ]]></description>
      </attribute>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[File encoding to use on the SQL files read in.]]></short-description>
        <description><![CDATA[
          Set the file encoding to use on the SQL files read in
        ]]></description>
      </attribute>
      <attribute name="onerror" type="org.apache.tools.ant.taskdefs.SQLExec.OnError"
                 briefType="&quot;continue&quot;, &quot;stop&quot;, &quot;abort&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Action to perform when statement fails: continue, stop, or abort
 optional; default &quot;abort&quot;.]]></short-description>
        <description><![CDATA[
          Action to perform when statement fails: continue, stop, or abort
 optional; default &quot;abort&quot;
        ]]></description>
      </attribute>
      <attribute name="output" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Output file; 
 optional, defaults to the Ant log.]]></short-description>
        <description><![CDATA[
          Set the output file; 
 optional, defaults to the Ant log.
        ]]></description>
      </attribute>
      <attribute name="password" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Password; required.]]></short-description>
        <description><![CDATA[
          Sets the password; required.
        ]]></description>
      </attribute>
      <attribute name="print" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Print result sets from the statements;
 optional, default false.]]></short-description>
        <description><![CDATA[
          Print result sets from the statements;
 optional, default false
        ]]></description>
      </attribute>
      <attribute name="rdbms" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Execute task only if the lower case product name 
 of the DB matches this.]]></short-description>
        <description><![CDATA[
          Execute task only if the lower case product name 
 of the DB matches this
        ]]></description>
      </attribute>
      <attribute name="showheaders" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Print headers for result sets from the 
 statements; optional, default true.]]></short-description>
        <description><![CDATA[
          Print headers for result sets from the 
 statements; optional, default true.
        ]]></description>
      </attribute>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of the SQL file to be run.]]></short-description>
        <description><![CDATA[
          Set the name of the SQL file to be run.
 Required unless statements are enclosed in the buildfile
        ]]></description>
      </attribute>
      <attribute name="url" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Database connection URL; required.]]></short-description>
        <description><![CDATA[
          Sets the database connection URL; required.
        ]]></description>
      </attribute>
      <attribute name="userid" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[User name for the connection; required.]]></short-description>
        <description><![CDATA[
          Set the user name for the connection; required.
        ]]></description>
      </attribute>
      <attribute name="version" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Version string, execute task only if 
 rdbms version match; optional.]]></short-description>
        <description><![CDATA[
          Sets the version string, execute task only if 
 rdbms version match; optional.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files (nested fileset attribute).]]></short-description>
        <description>
          <![CDATA[Adds a set of files (nested fileset attribute).]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a path to the classpath for loading the driver.]]></short-description>
        <description>
          <![CDATA[Add a path to the classpath for loading the driver.]]>
        </description>
      </element>

      <element name="transaction" type="org.apache.tools.ant.taskdefs.SQLExec.Transaction"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a SQL transaction to execute.]]></short-description>
        <description>
          <![CDATA[Add a SQL transaction to execute]]>
        </description>
      </element>

    </elements>

      <body >
        <description><![CDATA[
          Set an inline SQL command to execute. 
 NB: Properties are not expanded in this text.
        ]]></description>
      </body>

  </structure>

</task>


<task name="stylebook" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.StyleBook"
      >

  <short-description><![CDATA[Executes the Apache Stylebook documentation generator.]]></short-description>
  <description>
    <![CDATA[Executes the Apache Stylebook documentation generator.
 Unlike the commandline version of this tool, all three arguments
 are required to run stylebook.
 <p>
 Being extended from &lt;Java&gt;, all the parent's attributes
 and options are available. Do not set any apart from the <tt>classpath</tt>
 as they are not guaranteed to be there in future.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="append" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, append output to existing file.]]></short-description>
        <description><![CDATA[
          If true, append output to existing file.
        ]]></description>
      </attribute>
      <attribute name="book" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The book xml file that the documentation generation starts from; 
 required.]]></short-description>
        <description><![CDATA[
          The book xml file that the documentation generation starts from; 
 required.
        ]]></description>
      </attribute>
      <attribute name="classname" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Java class to execute.]]></short-description>
        <description><![CDATA[
          Sets the Java class to execute.
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used when running the Java class.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used when running the Java class
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to use, by reference.]]></short-description>
        <description><![CDATA[
          Classpath to use, by reference.
        ]]></description>
      </attribute>
      <attribute name="dir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The working directory of the process.]]></short-description>
        <description><![CDATA[
          The working directory of the process
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, then fail if the command exits with a
 returncode other than 0.]]></short-description>
        <description><![CDATA[
          If true, then fail if the command exits with a
 returncode other than 0
        ]]></description>
      </attribute>
      <attribute name="fork" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, execute in a new VM.]]></short-description>
        <description><![CDATA[
          If true, execute in a new VM.
        ]]></description>
      </attribute>
      <attribute name="jvmversion" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[JVM version.]]></short-description>
        <description><![CDATA[
          Sets the JVM version.
        ]]></description>
      </attribute>
      <attribute name="jar" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The location of the JAR file to execute.]]></short-description>
        <description><![CDATA[
          The location of the JAR file to execute.
        ]]></description>
      </attribute>
      <attribute name="jvm" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Command used to start the VM (only if not forking).]]></short-description>
        <description><![CDATA[
          Set the command used to start the VM (only if not forking).
        ]]></description>
      </attribute>
      <attribute name="jvmargs" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Command line arguments for the JVM.]]></short-description>
        <description><![CDATA[
          Set the command line arguments for the JVM.
        ]]></description>
      </attribute>
      <attribute name="loaderconfig" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[A loader configuration to send to stylebook; optional.]]></short-description>
        <description><![CDATA[
          A loader configuration to send to stylebook; optional.
        ]]></description>
      </attribute>
      <attribute name="maxmemory" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Corresponds to -mx or -Xmx depending on VM version.]]></short-description>
        <description><![CDATA[
          Corresponds to -mx or -Xmx depending on VM version.
        ]]></description>
      </attribute>
      <attribute name="newenvironment" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, use a completely new environment.]]></short-description>
        <description><![CDATA[
          If true, use a completely new environment.

 <p>Will be ignored if we are not forking a new VM.
        ]]></description>
      </attribute>
      <attribute name="output" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[File the output of the process is redirected to.]]></short-description>
        <description><![CDATA[
          File the output of the process is redirected to.
        ]]></description>
      </attribute>
      <attribute name="skindirectory" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The directory that contains the stylebook skin;
 required.]]></short-description>
        <description><![CDATA[
          the directory that contains the stylebook skin;
 required.
        ]]></description>
      </attribute>
      <attribute name="targetdirectory" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The destination directory where the documentation is generated;
 required.]]></short-description>
        <description><![CDATA[
          the destination directory where the documentation is generated;
 required.
        ]]></description>
      </attribute>
      <attribute name="timeout" type="java.lang.Long"
                 briefType="long" required="NOTDEFINED">
        <short-description><![CDATA[Timeout in milliseconds after which the process will be killed.]]></short-description>
        <description><![CDATA[
          Timeout in milliseconds after which the process will be killed.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="env" type="org.apache.tools.ant.types.Environment.Variable"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds an environment variable.]]></short-description>
        <description>
          <![CDATA[Adds an environment variable.

 <p>Will be ignored if we are not forking a new VM.]]>
        </description>
      </element>

      <element name="sysproperty" type="org.apache.tools.ant.types.Environment.Variable"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a system property.]]></short-description>
        <description>
          <![CDATA[Adds a system property.]]>
        </description>
      </element>

      <element name="arg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a command-line argument.]]></short-description>
        <description>
          <![CDATA[Adds a command-line argument.]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a path to the classpath.]]></short-description>
        <description>
          <![CDATA[Adds a path to the classpath.]]>
        </description>
      </element>

      <element name="jvmarg" type="org.apache.tools.ant.types.Commandline.Argument"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a JVM argument.]]></short-description>
        <description>
          <![CDATA[Adds a JVM argument.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="tar" category="packaging"
      classname="org.apache.tools.ant.taskdefs.Tar"
      matchingTask="true">

  <!-- tar task -->
<external>
<description>
<p>Creates a tar archive.</p>

<p>The <i>basedir</i> attribute is the reference directory from where to tar.</p>

<p>This task is a <a href="../dirtasks.html#directorybasedtasks">directory based task</a>
and, as such, forms an implicit <a href="../CoreTypes/fileset.html">Fileset</a>. This
defines which files, relative to the <i>basedir</i>, will be included in the
archive. The tar task supports all the attributes of Fileset to refine the
set of files to be included in the implicit fileset.</p>

<p>In addition to the implicit fileset, the tar task supports nested filesets. These
filesets are extended to allow control over the access mode, username and groupname
to be applied to the tar entries. This is useful, for example, when preparing archives for
Unix systems where some files need to have execute permission.</p>

<p>Early versions of tar did not support path lengths greater than 100
characters. Modern versions of tar do so, but in incompatible ways.
The behaviour of the tar task when it encounters such paths is
controlled by the <i>longfile</i> attribute.
If the longfile attribute is set to <code>fail</code>, any long paths will
cause the tar task to fail.  If the longfile attribute is set to
<code>truncate</code>, any long paths will be truncated to the 100 character
maximum length prior to adding to the archive. If the value of the longfile
attribute is set to <code>omit</code> then files containing long paths will be
omitted from the archive.  Either option ensures that the archive can be
untarred by any compliant version of tar. If the loss of path or file
information is not acceptable, and it rarely is, longfile may be set to the
value <code>gnu</code>. The tar task will then produce a GNU tar file which
can have arbitrary length paths. Note however, that the resulting archive will
only be able to be untarred with GNU tar.  The default for the longfile
attribute is <code>warn</code> which behaves just like the gnu option except
that it produces a warning for each file path encountered that does not match
the limit.</p>

<p>Note that this task does not perform compression. You might want to use the
<a href="gzip.html">GZip</a> task to prepare a .tar.gz package.</p>
</description>

<section anchor="examples" name="Examples">
<pre>  &lt;tar tarfile=&quot;${dist}/manual.tar&quot; basedir=&quot;htdocs/manual&quot;/&gt;
  &lt;gzip zipfile=&quot;${dist}/manual.tar.gz&quot; src=&quot;${dist}/manual.tar&quot;/&gt;</pre>
<p>tars all files in the <code>htdocs/manual</code> directory into a file called <code>manual.tar</code>
in the <code>${dist}</code>  directory, then applies the gzip task to compress
it.</p>
<pre>  &lt;tar destfile=&quot;${dist}/manual.tar&quot;
       basedir=&quot;htdocs/manual&quot;
       excludes=&quot;mydocs/**, **/todo.html&quot;
  /&gt;</pre>
<p>tars all files in the <code>htdocs/manual</code> directory into a file called <code>manual.tar</code>
in the <code>${dist}</code> directory. Files in the directory <code>mydocs</code>,
or files with the name <code>todo.html</code> are excluded.</p>

<pre>
&lt;tar destfile=&quot;${basedir}/docs.tar&quot;&gt;
  &lt;tarfileset dir=&quot;${dir.src}/docs&quot;
              fullpath=&quot;/usr/doc/ant/README&quot;
              preserveLeadingSlashes=&quot;true&quot;&gt;
    &lt;include name=&quot;readme.txt&quot;/&gt;
  &lt;/tarfileset&gt;
  &lt;tarfileset dir=&quot;${dir.src}/docs&quot;
              prefix=&quot;/usr/doc/ant&quot;
              preserveLeadingSlashes=&quot;true&quot;&gt;
    &lt;include name=&quot;*.html&quot;/&gt;
  &lt;/tarfileset&gt;
&lt;/tar&gt;</pre>

<p>
  Writes the file <code>docs/readme.txt</code> as
  <code>/usr/doc/ant/README</code> into the archive. All
  <code>*.html</code> files in the <code>docs</code> directory are
  prefixed by <code>/usr/doc/ant</code>, so for example
  <code>docs/index.html</code> is written as
  <code>/usr/doc/ant/index.html</code> to the archive.
</p>

<pre>&lt;tar longfile=&quot;gnu&quot;
     destfile=&quot;${dist.base}/${dist.name}-src.tar&quot; &gt;
  &lt;tarfileset dir=&quot;${dist.name}/..&quot; mode=&quot;755&quot; username=&quot;ant&quot; group=&quot;ant&quot;&gt;
    &lt;include name=&quot;${dist.name}/bootstrap.sh&quot;/&gt;
    &lt;include name=&quot;${dist.name}/build.sh&quot;/&gt;
  &lt;/tarfileset&gt;
  &lt;tarfileset dir=&quot;${dist.name}/..&quot; username=&quot;ant&quot; group=&quot;ant&quot;&gt;
    &lt;include name=&quot;${dist.name}/**&quot;/&gt;
    &lt;exclude name=&quot;${dist.name}/bootstrap.sh&quot;/&gt;
    &lt;exclude name=&quot;${dist.name}/build.sh&quot;/&gt;
  &lt;/tarfileset&gt;
&lt;/tar&gt; </pre>

<p>This example shows building a tar which uses the GNU extensions for long paths and
where some files need to be marked as executable (mode 755)
and the rest are use the default mode (read-write by owner). The first
fileset selects just the executable files. The second fileset must exclude
the executable files and include all others. </p>

<p><strong>Note: </strong> The tar task does not ensure that a file is only selected
by one fileset. If the same file is selected by more than one fileset, it will be included in the
tar file twice, with the same path.</p>

<p><strong>Note:</strong> The patterns in the include and exclude
elements are considered to be relative to the corresponding dir
attribute as with all other filesets.  In the example above,
<code>${dist.name}</code> is not an absolute path, but a simple name
of a directory, so <code>${dist.name}</code> is a valid path relative
to <code>${dist.name}/..</code>.</p>

</section>
</external>

  <short-description><![CDATA[Creates a tar archive.]]></short-description>
  <description>
    <![CDATA[Creates a tar archive.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="basedir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[This is the base directory to look in for things to tar.]]></short-description>
        <description><![CDATA[
          This is the base directory to look in for things to tar.
        ]]></description>
      </attribute>
      <attribute name="compression" type="org.apache.tools.ant.taskdefs.Tar.TarCompressionMethod"
                 briefType="&quot;none&quot;, &quot;gzip&quot;, &quot;bzip2&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Set compression method.]]></short-description>
        <description><![CDATA[
          Set compression method.
 Allowable values are
 <ul>
 <li>  none - no compression
 <li>  gzip - Gzip compression
 <li>  bzip2 - Bzip2 compression
 </ul>
        ]]></description>
      </attribute>
      <attribute name="destfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Set is the name/location of where to create the tar file.]]></short-description>
        <description><![CDATA[
          Set is the name/location of where to create the tar file.
        ]]></description>
      </attribute>
      <attribute name="longfile" type="org.apache.tools.ant.taskdefs.Tar.TarLongFileMode"
                 briefType="&quot;warn&quot;, &quot;fail&quot;, &quot;truncate&quot;, &quot;gnu&quot;, &quot;omit&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Set how to handle long files, those with a path&gt;100 chars.]]></short-description>
        <description><![CDATA[
          Set how to handle long files, those with a path&gt;100 chars.
 Optional, default=warn.
 <p>
 Allowable values are
 <ul>
 <li>  truncate - paths are truncated to the maximum length
 <li>  fail - paths greater than the maximim cause a build exception
 <li>  warn - paths greater than the maximum cause a warning and GNU is used
 <li>  gnu - GNU extensions are used for any paths greater than the maximum.
 <li>  omit - paths greater than the maximum are omitted from the archive
 </ul>
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="tarfileset" type="org.apache.tools.ant.taskdefs.Tar.TarFileSet"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a new fileset with the option to specify permissions.]]></short-description>
        <description>
          <![CDATA[Add a new fileset with the option to specify permissions]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="taskdef" category="internal"
      classname="org.apache.tools.ant.taskdefs.Taskdef"
      >

  <short-description><![CDATA[Adds a task definition to the current project, such that this new task can be used in the current project.]]></short-description>
  <description>
    <![CDATA[Adds a task definition to the current project, such that this new task can be
 used in the current project. Two attributes are needed, the name that identifies
 this task uniquely, and the full name of the class (including the packages) that
 implements this task.</p>
 <p>You can also define a group of tasks at once using the file or
 resource attributes.  These attributes point to files in the format of
 Java property files.  Each line defines a single task in the
 format:</p>
 <pre>
 taskname=fully.qualified.java.classname
 </pre>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="classname" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The full class name of the object being defined.]]></short-description>
        <description><![CDATA[
          the full class name of the object being defined.
 Required, unless file or resource have
 been specified.
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used when searching for component being defined.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used when searching for component being defined
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Reference to a classpath to use when loading the files.]]></short-description>
        <description><![CDATA[
          reference to a classpath to use when loading the files.
 To actually share the same loader, set loaderref as well
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of the property file  to load
 ant name/classname pairs from.]]></short-description>
        <description><![CDATA[
          Name of the property file  to load
 ant name/classname pairs from.
        ]]></description>
      </attribute>
      <attribute name="loaderref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Use the reference to locate the loader.]]></short-description>
        <description><![CDATA[
          Use the reference to locate the loader. If the loader is not
 found, taskdef will use the specified classpath and register it
 with the specified name.
 This allow multiple taskdef/typedef to use the same class loader,
 so they can be used together. It eliminate the need to
 put them in the CLASSPATH.
        ]]></description>
      </attribute>
      <attribute name="name" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the property resource to load
 ant name/classname pairs from.]]></short-description>
        <description><![CDATA[
          Name of the property resource to load
 ant name/classname pairs from.
        ]]></description>
      </attribute>
      <attribute name="resource" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the property resource to load
 ant name/classname pairs from.]]></short-description>
        <description><![CDATA[
          Name of the property resource to load
 ant name/classname pairs from.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Create the classpath to be used when searching for component being defined.]]></short-description>
        <description>
          <![CDATA[Create the classpath to be used when searching for component being defined]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="telnet" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.net.TelnetTask"
      >

  <short-description><![CDATA[Automates the telnet protocol.]]></short-description>
  <description>
    <![CDATA[Automates the telnet protocol.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="initialcr" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Send a carriage return after connecting; optional, defaults to false.]]></short-description>
        <description><![CDATA[
          send a carriage return after connecting; optional, defaults to false.
        ]]></description>
      </attribute>
      <attribute name="password" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The login password to use
 required if <tt>userid</tt> is set.]]></short-description>
        <description><![CDATA[
          Set the the login password to use
 required if <tt>userid</tt> is set.
        ]]></description>
      </attribute>
      <attribute name="port" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Tcp port to connect to; default is 23.]]></short-description>
        <description><![CDATA[
          Set the tcp port to connect to; default is 23.
        ]]></description>
      </attribute>
      <attribute name="server" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Hostname or address of the remote server.]]></short-description>
        <description><![CDATA[
          Set the hostname or address of the remote server.
        ]]></description>
      </attribute>
      <attribute name="timeout" type="java.lang.Integer"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Default timeout in seconds to wait for a response, 
 zero means forever (the default).]]></short-description>
        <description><![CDATA[
          set a default timeout in seconds to wait for a response, 
 zero means forever (the default)
        ]]></description>
      </attribute>
      <attribute name="userid" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The login id to use on the server; 
 required if <tt>password</tt> is set.]]></short-description>
        <description><![CDATA[
          Set the the login id to use on the server; 
 required if <tt>password</tt> is set.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="read" type="org.apache.tools.ant.taskdefs.optional.net.TelnetTask.TelnetSubTask"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[A string to wait for from the server.]]></short-description>
        <description>
          <![CDATA[A string to wait for from the server. 
  A subTask &lt;read&gt; tag was found.  Create the object, 
  Save it in our list, and return it.]]>
        </description>
      </element>

      <element name="write" type="org.apache.tools.ant.taskdefs.optional.net.TelnetTask.TelnetSubTask"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add text to send to the server
  A subTask &lt;write&gt; tag was found.]]></short-description>
        <description>
          <![CDATA[Add text to send to the server
  A subTask &lt;write&gt; tag was found.  Create the object, 
  Save it in our list, and return it.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="tempfile" category="other"
      classname="org.apache.tools.ant.taskdefs.TempFile"
      >

  <short-description><![CDATA[This task sets a property to  the name of a temporary file.]]></short-description>
  <description>
    <![CDATA[This task sets a property to  the name of a temporary file. 
  Unlike the Java1.2 method to create a temporary file, this task
  does work on Java1.1. Also, it does not actually create the
  temporary file, but it does guarantee that the file did not
  exist when the task was executed. 
 <p>  
 Examples
 <pre>&lt;tempfile property="temp.file" /&gt;</pre>
 create a temporary file
 <pre>&lt;tempfile property="temp.file" suffix=".xml" /&gt;</pre>
 create a temporary file with the .xml suffix.
 <pre>&lt;tempfile property="temp.file" destDir="build"/&gt;</pre>
 create a temp file in the build subdir]]>
  </description>

  <structure>

    <attributes>
      <attribute name="destdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory.]]></short-description>
        <description><![CDATA[
          destination directory. If null, 
the parent directory is used instead
        ]]></description>
      </attribute>
      <attribute name="prefix" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Optional prefix string.]]></short-description>
        <description><![CDATA[
          optional prefix string
        ]]></description>
      </attribute>
      <attribute name="property" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The property you wish to assign the temporary file to.]]></short-description>
        <description><![CDATA[
          The property you wish to assign the temporary file to
        ]]></description>
      </attribute>
      <attribute name="suffix" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Suffix string for the temp file (optional).]]></short-description>
        <description><![CDATA[
          Suffix string for the temp file (optional)
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="touch" category="filesystem"
      classname="org.apache.tools.ant.taskdefs.Touch"
      >

  <short-description><![CDATA[Touch a file and/or fileset(s); corresponds to the Unix touch command.]]></short-description>
  <description>
    <![CDATA[Touch a file and/or fileset(s); corresponds to the Unix touch command.

 <p>If the file to touch doesn't exist, an empty one is
 created. </p>

 <p>Note: Setting the modification time of files is not supported in
 JDK 1.1.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="datetime" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The new modification time of the file
 in the format MM/DD/YYYY HH:MM AM <i>or</i> PM;
 Optional, default=now.]]></short-description>
        <description><![CDATA[
          the new modification time of the file
 in the format MM/DD/YYYY HH:MM AM <i>or</i> PM;
 Optional, default=now
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Single source file to touch.]]></short-description>
        <description><![CDATA[
          Sets a single source file to touch.  If the file does not exist
 an empty file will be created.
        ]]></description>
      </attribute>
      <attribute name="millis" type="long"
                 briefType="long" required="NOTDEFINED">
        <short-description><![CDATA[The new modification time of the file
 in milliseconds since midnight Jan 1 1970.]]></short-description>
        <description><![CDATA[
          the new modification time of the file
 in milliseconds since midnight Jan 1 1970.
 Optional, default=now
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a set of files to touch.]]></short-description>
        <description>
          <![CDATA[Add a set of files to touch]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="translate" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.i18n.Translate"
      matchingTask="true">

  <short-description><![CDATA[Translates text embedded in files using Resource Bundle files.]]></short-description>
  <description>
    <![CDATA[Translates text embedded in files using Resource Bundle files.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="bundle" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Sets Family name of resource bundle; required.]]></short-description>
        <description><![CDATA[
          Sets Family name of resource bundle; required.
        ]]></description>
      </attribute>
      <attribute name="bundlecountry" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Sets locale specific country of resource bundle; optional.]]></short-description>
        <description><![CDATA[
          Sets locale specific country of resource bundle; optional.
        ]]></description>
      </attribute>
      <attribute name="bundleencoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Sets Resource Bundle file encoding scheme; optional.]]></short-description>
        <description><![CDATA[
          Sets Resource Bundle file encoding scheme; optional.  Defaults to source file
 encoding
        ]]></description>
      </attribute>
      <attribute name="bundlelanguage" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Sets locale specific language of resource bundle; optional.]]></short-description>
        <description><![CDATA[
          Sets locale specific language of resource bundle; optional.
        ]]></description>
      </attribute>
      <attribute name="bundlevariant" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Sets locale specific variant of resource bundle; optional.]]></short-description>
        <description><![CDATA[
          Sets locale specific variant of resource bundle; optional.
        ]]></description>
      </attribute>
      <attribute name="destencoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Sets destination file encoding scheme; optional.]]></short-description>
        <description><![CDATA[
          Sets destination file encoding scheme; optional.  Defaults to source file
 encoding
        ]]></description>
      </attribute>
      <attribute name="endtoken" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Sets ending token to identify keys; required.]]></short-description>
        <description><![CDATA[
          Sets ending token to identify keys; required.
        ]]></description>
      </attribute>
      <attribute name="forceoverwrite" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether or not to overwrite existing file irrespective of
 whether it is newer than the source file as well as the
 resource bundle file.]]></short-description>
        <description><![CDATA[
          Whether or not to overwrite existing file irrespective of
 whether it is newer than the source file as well as the
 resource bundle file.
 Defaults to false.
        ]]></description>
      </attribute>
      <attribute name="srcencoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Sets source file encoding scheme; optional,
 defaults to encoding of local system.]]></short-description>
        <description><![CDATA[
          Sets source file encoding scheme; optional,
 defaults to encoding of local system.
        ]]></description>
      </attribute>
      <attribute name="starttoken" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Sets starting token to identify keys; required.]]></short-description>
        <description><![CDATA[
          Sets starting token to identify keys; required.
        ]]></description>
      </attribute>
      <attribute name="todir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Sets Destination directory; required.]]></short-description>
        <description><![CDATA[
          Sets Destination directory; required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files to translate as a nested fileset element.]]></short-description>
        <description>
          <![CDATA[Adds a set of files to translate as a nested fileset element.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="tstamp" category="utility"
      classname="org.apache.tools.ant.taskdefs.Tstamp"
      >

  <short-description><![CDATA[Sets properties to the current time, or offsets from the current time.]]></short-description>
  <description>
    <![CDATA[Sets properties to the current time, or offsets from the current time.
 The default properties are TSTAMP, DSTAMP and TODAY;]]>
  </description>

  <structure>

    <attributes>
      <attribute name="prefix" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Prefix for the properties.]]></short-description>
        <description><![CDATA[
          Set a prefix for the properties. If the prefix does not end with a "."
 one is automatically added
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="format" type="org.apache.tools.ant.taskdefs.Tstamp.CustomFormat"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Create a custom format with the the current prefix.]]></short-description>
        <description>
          <![CDATA[create a custom format with the the current prefix.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="typedef" category="internal"
      classname="org.apache.tools.ant.taskdefs.Typedef"
      >

  <short-description><![CDATA[Adds a data type definition to the current project.]]></short-description>
  <description>
    <![CDATA[Adds a data type definition to the current project.
 Two attributes are
 needed, the name that identifies this data type uniquely, and the full
 name of the class (including the packages) that implements this
 type.
 <p>You can also define a group of data types at once using the file or
 resource attributes.  These attributes point to files in the format of
 Java property files.   Each line defines a single data type in the
 format:</p>
 <pre>
 typename=fully.qualified.java.classname
 </pre>
 <p>Typedef should be used to add your own types to the system. Data
 types are things likepaths or filesets that can be defined at
 the project level and referenced via their ID attribute.</p>
 <p>Custom data types usually need custom tasks to put them to good use.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="classname" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The full class name of the object being defined.]]></short-description>
        <description><![CDATA[
          the full class name of the object being defined.
 Required, unless file or resource have
 been specified.
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used when searching for component being defined.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used when searching for component being defined
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Reference to a classpath to use when loading the files.]]></short-description>
        <description><![CDATA[
          reference to a classpath to use when loading the files.
 To actually share the same loader, set loaderref as well
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of the property file  to load
 ant name/classname pairs from.]]></short-description>
        <description><![CDATA[
          Name of the property file  to load
 ant name/classname pairs from.
        ]]></description>
      </attribute>
      <attribute name="loaderref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Use the reference to locate the loader.]]></short-description>
        <description><![CDATA[
          Use the reference to locate the loader. If the loader is not
 found, taskdef will use the specified classpath and register it
 with the specified name.
 This allow multiple taskdef/typedef to use the same class loader,
 so they can be used together. It eliminate the need to
 put them in the CLASSPATH.
        ]]></description>
      </attribute>
      <attribute name="name" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the property resource to load
 ant name/classname pairs from.]]></short-description>
        <description><![CDATA[
          Name of the property resource to load
 ant name/classname pairs from.
        ]]></description>
      </attribute>
      <attribute name="resource" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the property resource to load
 ant name/classname pairs from.]]></short-description>
        <description><![CDATA[
          Name of the property resource to load
 ant name/classname pairs from.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Create the classpath to be used when searching for component being defined.]]></short-description>
        <description>
          <![CDATA[Create the classpath to be used when searching for component being defined]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="untar" category="packaging"
      classname="org.apache.tools.ant.taskdefs.Untar"
      >

  <short-description><![CDATA[Untar a file.]]></short-description>
  <description>
    <![CDATA[Untar a file.
 <p>For JDK 1.1 &quot;last modified time&quot; field is set to current time instead of being
 carried from the archive file.</p>
 <p>PatternSets are used to select files to extract
 <I>from</I> the archive.  If no patternset is used, all files are extracted.
 </p>
 <p>FileSet>s may be used used to select archived files
 to perform unarchival upon.
 </p>
 <p>File permissions will not be restored on extracted files.</p>
 <p>The untar task recognizes the long pathname entries used by GNU tar.<p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="compression" type="org.apache.tools.ant.taskdefs.Untar.UntarCompressionMethod"
                 briefType="&quot;none&quot;, &quot;gzip&quot;, &quot;bzip2&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Set decompression algorithm to use; default=none.]]></short-description>
        <description><![CDATA[
          Set decompression algorithm to use; default=none.

 Allowable values are
 <ul>
   <li>none - no compression
   <li>gzip - Gzip compression
   <li>bzip2 - Bzip2 compression
 </ul>
        ]]></description>
      </attribute>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory.]]></short-description>
        <description><![CDATA[
          Set the destination directory. File will be unzipped into the
 destination directory.
        ]]></description>
      </attribute>
      <attribute name="overwrite" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Should we overwrite files in dest, even if they are newer than
 the corresponding entries in the archive?.]]></short-description>
        <description><![CDATA[
          Should we overwrite files in dest, even if they are newer than
 the corresponding entries in the archive?
        ]]></description>
      </attribute>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Path to zip-file.]]></short-description>
        <description><![CDATA[
          Set the path to zip-file.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a fileset.]]></short-description>
        <description>
          <![CDATA[Add a fileset]]>
        </description>
      </element>

      <element name="patternset" type="org.apache.tools.ant.types.PatternSet"
               briefType="Patternset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a patternset.]]></short-description>
        <description>
          <![CDATA[Add a patternset]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="unzip" category="packaging"
      classname="org.apache.tools.ant.taskdefs.Expand"
      >

  <short-description><![CDATA[Unzip a file.]]></short-description>
  <description>
    <![CDATA[Unzip a file.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory.]]></short-description>
        <description><![CDATA[
          Set the destination directory. File will be unzipped into the
 destination directory.
        ]]></description>
      </attribute>
      <attribute name="overwrite" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Should we overwrite files in dest, even if they are newer than
 the corresponding entries in the archive?.]]></short-description>
        <description><![CDATA[
          Should we overwrite files in dest, even if they are newer than
 the corresponding entries in the archive?
        ]]></description>
      </attribute>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Path to zip-file.]]></short-description>
        <description><![CDATA[
          Set the path to zip-file.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a fileset.]]></short-description>
        <description>
          <![CDATA[Add a fileset]]>
        </description>
      </element>

      <element name="patternset" type="org.apache.tools.ant.types.PatternSet"
               briefType="Patternset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add a patternset.]]></short-description>
        <description>
          <![CDATA[Add a patternset]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="uptodate" category="control"
      classname="org.apache.tools.ant.taskdefs.UpToDate"
      >

  <short-description><![CDATA[Sets the given property if the specified target has a timestamp greater than all of the source files.]]></short-description>
  <description>
    <![CDATA[Sets the given property if the specified target has a timestamp
 greater than all of the source files.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="property" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The property to set if the target file is more up-to-date than
 (each of) the source file(s).]]></short-description>
        <description><![CDATA[
          The property to set if the target file is more up-to-date than
 (each of) the source file(s).
        ]]></description>
      </attribute>
      <attribute name="srcfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file that must be older than the target file
 if the property is to be set.]]></short-description>
        <description><![CDATA[
          The file that must be older than the target file
 if the property is to be set.
        ]]></description>
      </attribute>
      <attribute name="targetfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file which must be more up-to-date than (each of) the source file(s)
 if the property is to be set.]]></short-description>
        <description><![CDATA[
          The file which must be more up-to-date than (each of) the source file(s)
 if the property is to be set.
        ]]></description>
      </attribute>
      <attribute name="value" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The value to set the named property to if the target file is more
 up-to-date than (each of) the source file(s).]]></short-description>
        <description><![CDATA[
          The value to set the named property to if the target file is more
 up-to-date than (each of) the source file(s). Defaults to 'true'.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="srcfiles" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Nested &lt;srcfiles&gt; element.]]></short-description>
        <description>
          <![CDATA[Nested &lt;srcfiles&gt; element.]]>
        </description>
      </element>

      <element name="mapper" type="org.apache.tools.ant.types.Mapper"
               briefType="Mapper"
               required="NOTDEFINED">
        <short-description><![CDATA[Defines the FileNameMapper to use (nested mapper element).]]></short-description>
        <description>
          <![CDATA[Defines the FileNameMapper to use (nested mapper element).]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="vajexport" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ide.VAJExport"
      >

  <short-description><![CDATA[Export packages from the Visual Age for Java workspace.]]></short-description>
  <description>
    <![CDATA[Export packages from the Visual Age for Java workspace.
 The packages are specified similar to all other MatchingTasks.
 Since the VA Workspace is not file based, this task is simulating
 a directory hierarchy for the workspace:
 The 'root' contains all project 'dir's, and the projects contain
 their respective package 'dir's.
 Example:
 <blockquote>
 &lt;vajexport destdir="C:/builddir/source">
 &nbsp;&lt;include name="/MyVAProject/org/foo/subsystem1/**" />
 &nbsp;&lt;exclude name="/MyVAProject/org/foo/subsystem1/test/**"/>
 &lt;/vajexport>
 </blockquote>
 exports all packages in the project MyVAProject which start with
 'org.foo.subsystem1' except of these starting with
 'org.foo.subsystem1.test'.

 There are flags to choose which items to export:
 exportSources:   export Java sources
 exportResources: export project resources
 exportClasses:   export class files
 exportDebugInfo: export class files with debug info (use with exportClasses)
 default is exporting Java files and resources.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="defaultexcludes" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether default exclusions should be used or not; default true.]]></short-description>
        <description><![CDATA[
          Sets whether default exclusions should be used or not; default true.
        ]]></description>
      </attribute>
      <attribute name="destdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory into which the selected
 items should be exported; required.]]></short-description>
        <description><![CDATA[
          Set the destination directory into which the selected
 items should be exported; required.
        ]]></description>
      </attribute>
      <attribute name="excludes" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set of exclude patterns.]]></short-description>
        <description><![CDATA[
          Sets the set of exclude patterns. Patterns may be separated by a comma
 or a space. Currently only patterns denoting packages are
 supported
        ]]></description>
      </attribute>
      <attribute name="exportclasses" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Optional flag to export the class files; default false.]]></short-description>
        <description><![CDATA[
          optional flag to export the class files; default false.
        ]]></description>
      </attribute>
      <attribute name="exportdebuginfo" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Optional flag to export the debug info; default false.
 debug info.]]></short-description>
        <description><![CDATA[
          optional flag to export the debug info; default false.
 debug info
        ]]></description>
      </attribute>
      <attribute name="exportresources" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Optional flag to export the resource file; default true.]]></short-description>
        <description><![CDATA[
          optional flag to export the resource file; default true.
        ]]></description>
      </attribute>
      <attribute name="exportsources" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Optional flag to export the Java files; default true.]]></short-description>
        <description><![CDATA[
          optional flag to export the Java files; default true.
        ]]></description>
      </attribute>
      <attribute name="includes" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Set of include patterns.]]></short-description>
        <description><![CDATA[
          Sets the set of include patterns. Patterns may be separated by a comma
 or a space. Currently only patterns denoting packages are
 supported
        ]]></description>
      </attribute>
      <attribute name="overwrite" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If Overwrite is set, files will be overwritten during export.]]></short-description>
        <description><![CDATA[
          if Overwrite is set, files will be overwritten during export
        ]]></description>
      </attribute>
      <attribute name="remote" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name and port of a remote tool server, optiona.]]></short-description>
        <description><![CDATA[
          Name and port of a remote tool server, optiona.
 Format: &lt;servername&gt;:&lt;port no&gt;.
 If this attribute is set, the tasks will be executed on the specified tool
 server.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="exclude" type="org.apache.tools.ant.types.PatternSet.NameEntry"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a name entry on the exclude list.]]></short-description>
        <description>
          <![CDATA[add a name entry on the exclude list]]>
        </description>
      </element>

      <element name="include" type="org.apache.tools.ant.types.PatternSet.NameEntry"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a name entry on the include list.]]></short-description>
        <description>
          <![CDATA[add a name entry on the include list]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="vajimport" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ide.VAJImport"
      >

  <short-description><![CDATA[Import source, class files, and resources to the Visual Age for Java workspace.]]></short-description>
  <description>
    <![CDATA[Import source, class files, and resources to the Visual Age for Java
 workspace.
 <p>
 Example:
 <pre>
 &lt;vajimport project="MyVAProject"&gt;
   &lt;fileset dir="src"&gt;
     &lt;include name="org/foo/subsystem1/**" /&gt;
     &lt;exclude name="/org/foo/subsystem1/test/**" /&gt;
  &lt;/fileset&gt;
 &lt;/vajexport&gt;
 </pre>
 import all source and resource files from the "src" directory
 which start with 'org.foo.subsystem1', except of these starting with
 'org.foo.subsystem1.test' into the project MyVAProject.
 </p>
 <p>If MyVAProject isn't loaded into the Workspace, a new edition is
 created in the repository and automatically loaded into the Workspace.
 There has to be at least one nested FileSet element.
 </p>
 <p>There are attributes to choose which items to export:
 <table border="1" cellpadding="2" cellspacing="0">
 <tr>
   <td valign="top"><b>Attribute</b></td>
   <td valign="top"><b>Description</b></td>
   <td align="center" valign="top"><b>Required</b></td>
 </tr>
 <tr>
   <td valign="top">project</td>
   <td valign="top">the name of the Project to import to</td>
   <td align="center" valign="top">Yes</td>
 </tr>
 <tr>
   <td valign="top">importSources</td>
   <td valign="top">import Java sources, defaults to "yes"</td>
   <td align="center" valign="top">No</td>
 </tr>
 <tr>
   <td valign="top">importResources</td>
   <td valign="top">import resource files (anything that doesn't
                    end with .java or .class), defaults to "yes"</td>
   <td align="center" valign="top">No</td>
 </tr>
 <tr>
   <td valign="top">importClasses</td>
   <td valign="top">import class files, defaults to "no"</td>
   <td align="center" valign="top">No</td>
 </tr>
 </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="defaultexcludes" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether default exclusions should be used or not.]]></short-description>
        <description><![CDATA[
          Sets whether default exclusions should be used or not.
        ]]></description>
      </attribute>
      <attribute name="importclasses" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to import .class files; optional, default false.]]></short-description>
        <description><![CDATA[
          Flag to import .class files; optional, default false.
        ]]></description>
      </attribute>
      <attribute name="importresources" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Import resource files (anything that doesn't end in
 .class or .java); optional, default true.]]></short-description>
        <description><![CDATA[
          Import resource files (anything that doesn't end in
 .class or .java); optional, default true.
        ]]></description>
      </attribute>
      <attribute name="importsources" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Import .java files; optional, default true.]]></short-description>
        <description><![CDATA[
          Import .java files; optional, default true.
        ]]></description>
      </attribute>
      <attribute name="project" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The VisualAge for Java Project name to import into.]]></short-description>
        <description><![CDATA[
          The VisualAge for Java Project name to import into.
        ]]></description>
      </attribute>
      <attribute name="remote" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name and port of a remote tool server, optiona.]]></short-description>
        <description><![CDATA[
          Name and port of a remote tool server, optiona.
 Format: &lt;servername&gt;:&lt;port no&gt;.
 If this attribute is set, the tasks will be executed on the specified tool
 server.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files (nested fileset attribute).]]></short-description>
        <description>
          <![CDATA[Adds a set of files (nested fileset attribute).]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="vajload" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ide.VAJLoad"
      >

  <short-description><![CDATA[Load specific project versions into the Visual Age for Java workspace.]]></short-description>
  <description>
    <![CDATA[Load specific project versions into the Visual Age for Java workspace.
 Each project and version name has to be specified completely.
 Example:  
 <blockquote> 
 &lt;vajload>
 &nbsp;&lt;project name="MyVAProject" version="2.1"/>
 &nbsp;&lt;project name="Apache Xerces" version="1.2.0"/>
 &lt;/vajload>
 </blockquote>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="remote" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name and port of a remote tool server, optiona.]]></short-description>
        <description><![CDATA[
          Name and port of a remote tool server, optiona.
 Format: &lt;servername&gt;:&lt;port no&gt;.
 If this attribute is set, the tasks will be executed on the specified tool
 server.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="vajproject" type="org.apache.tools.ant.taskdefs.optional.ide.VAJProjectDescription"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a project description entry on the project list.]]></short-description>
        <description>
          <![CDATA[Add a project description entry on the project list.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="vssadd" category="scm"
      classname="org.apache.tools.ant.taskdefs.optional.vss.MSVSSADD"
      >

  <short-description><![CDATA[Performs Add commands to Microsoft Visual SourceSafe.]]></short-description>
  <description>
    <![CDATA[Performs Add commands to Microsoft Visual SourceSafe.
 Based on the VSS Checkin code by Martin Poeschl]]>
  </description>

  <structure>

    <attributes>
      <attribute name="autoresponse" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[What to respond with (sets the -I option).]]></short-description>
        <description><![CDATA[
          What to respond with (sets the -I option). By default, -I- is
 used; values of Y or N will be appended to this.
        ]]></description>
      </attribute>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Comment to apply; optional.]]></short-description>
        <description><![CDATA[
          Sets the comment to apply; optional.
 <p>
 If this is null or empty, it will be replaced with "-" which
 is what SourceSafe uses for an empty comment.
        ]]></description>
      </attribute>
      <attribute name="localpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Local path.]]></short-description>
        <description><![CDATA[
          Set the local path.
        ]]></description>
      </attribute>
      <attribute name="login" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The login to use when accessing VSS, formatted as "username,password";
 optional.]]></short-description>
        <description><![CDATA[
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 <p>
 You can omit the password if your database is not password protected.
  if you have a password and omit it, Ant/VSS will hang.
        ]]></description>
      </attribute>
      <attribute name="recursive" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set behaviour recursive or non-recursive.]]></short-description>
        <description><![CDATA[
          Set behaviour recursive or non-recursive
        ]]></description>
      </attribute>
      <attribute name="serverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>srssafe.ini</code> resides; optional.]]></short-description>
        <description><![CDATA[
          Set the directory where <code>srssafe.ini</code> resides; optional.
        ]]></description>
      </attribute>
      <attribute name="ssdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>ss.exe</code> resides; optional.]]></short-description>
        <description><![CDATA[
          directory where <code>ss.exe</code> resides; optional.
 By default the task expects it to be in the PATH.
        ]]></description>
      </attribute>
      <attribute name="vsspath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.]]></short-description>
        <description><![CDATA[
          SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required. You should not specify the leading dollar-sign - 
 it is prepended by Ant automatically.
 <p>
 Ant can't cope with a '$' sign in an attribute so we have to add it here.
 Also we strip off any 'vss://' prefix which is an XMS special and should probably be removed!
        ]]></description>
      </attribute>
      <attribute name="writable" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Leave added files writable?.]]></short-description>
        <description><![CDATA[
          Leave added files writable? Default: false.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="vsscheckin" category="scm"
      classname="org.apache.tools.ant.taskdefs.optional.vss.MSVSSCHECKIN"
      >

  <short-description><![CDATA[Performs CheckIn commands to Microsoft Visual SourceSafe.]]></short-description>
  <description>
    <![CDATA[Performs CheckIn commands to Microsoft Visual SourceSafe.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="autoresponse" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[What to respond with (sets the -I option).]]></short-description>
        <description><![CDATA[
          What to respond with (sets the -I option). By default, -I- is
 used; values of Y or N will be appended to this.
        ]]></description>
      </attribute>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Comment to apply; optional.]]></short-description>
        <description><![CDATA[
          Set the comment to apply; optional.
 <p>
 If this is null or empty, it will be replaced with "-" which
 is what SourceSafe uses for an empty comment.
        ]]></description>
      </attribute>
      <attribute name="localpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Local path.]]></short-description>
        <description><![CDATA[
          Set the local path.
        ]]></description>
      </attribute>
      <attribute name="login" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The login to use when accessing VSS, formatted as "username,password";
 optional.]]></short-description>
        <description><![CDATA[
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 <p>
 You can omit the password if your database is not password protected.
  if you have a password and omit it, Ant/VSS will hang.
        ]]></description>
      </attribute>
      <attribute name="recursive" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to tell the task to recurse down the tree;
 optional, default false.]]></short-description>
        <description><![CDATA[
          Flag to tell the task to recurse down the tree;
 optional, default false.
        ]]></description>
      </attribute>
      <attribute name="serverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>srssafe.ini</code> resides; optional.]]></short-description>
        <description><![CDATA[
          Set the directory where <code>srssafe.ini</code> resides; optional.
        ]]></description>
      </attribute>
      <attribute name="ssdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>ss.exe</code> resides; optional.]]></short-description>
        <description><![CDATA[
          directory where <code>ss.exe</code> resides; optional.
 By default the task expects it to be in the PATH.
        ]]></description>
      </attribute>
      <attribute name="vsspath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.]]></short-description>
        <description><![CDATA[
          SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required. You should not specify the leading dollar-sign - 
 it is prepended by Ant automatically.
 <p>
 Ant can't cope with a '$' sign in an attribute so we have to add it here.
 Also we strip off any 'vss://' prefix which is an XMS special and should probably be removed!
        ]]></description>
      </attribute>
      <attribute name="writable" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Leave checked in files writable?.]]></short-description>
        <description><![CDATA[
          Leave checked in files writable? Default: false.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="vsscheckout" category="scm"
      classname="org.apache.tools.ant.taskdefs.optional.vss.MSVSSCHECKOUT"
      >

  <short-description><![CDATA[Performs CheckOut commands to Microsoft Visual SourceSafe.]]></short-description>
  <description>
    <![CDATA[Performs CheckOut commands to Microsoft Visual SourceSafe.
 <p>If you specify two or more attributes from version, date and 
 label only one will be used in the order version, date, label.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="autoresponse" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[What to respond with (sets the -I option).]]></short-description>
        <description><![CDATA[
          What to respond with (sets the -I option). By default, -I- is
 used; values of Y or N will be appended to this.
        ]]></description>
      </attribute>
      <attribute name="date" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Date to get;
 optional, only one of <tt>version</tt>, <tt>label</tt>, or <tt>date</tt>
 allowed.]]></short-description>
        <description><![CDATA[
          Set the date to get;
 optional, only one of <tt>version</tt>, <tt>label</tt>, or <tt>date</tt>
 allowed.
        ]]></description>
      </attribute>
      <attribute name="label" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Label to get;
 optional, only one of <tt>version</tt>, <tt>label</tt>, or <tt>date</tt>
 allowed.]]></short-description>
        <description><![CDATA[
          Set the label to get;
 optional, only one of <tt>version</tt>, <tt>label</tt>, or <tt>date</tt>
 allowed.
        ]]></description>
      </attribute>
      <attribute name="localpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Local path.]]></short-description>
        <description><![CDATA[
          Set the local path.
        ]]></description>
      </attribute>
      <attribute name="login" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The login to use when accessing VSS, formatted as "username,password";
 optional.]]></short-description>
        <description><![CDATA[
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 <p>
 You can omit the password if your database is not password protected.
  if you have a password and omit it, Ant/VSS will hang.
        ]]></description>
      </attribute>
      <attribute name="recursive" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to tell the task to recurse down the tree;
 optional, default false.]]></short-description>
        <description><![CDATA[
          Flag to tell the task to recurse down the tree;
 optional, default false.
        ]]></description>
      </attribute>
      <attribute name="serverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>srssafe.ini</code> resides; optional.]]></short-description>
        <description><![CDATA[
          Set the directory where <code>srssafe.ini</code> resides; optional.
        ]]></description>
      </attribute>
      <attribute name="ssdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>ss.exe</code> resides; optional.]]></short-description>
        <description><![CDATA[
          directory where <code>ss.exe</code> resides; optional.
 By default the task expects it to be in the PATH.
        ]]></description>
      </attribute>
      <attribute name="version" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Version to get;
 optional, only one of <tt>version</tt>, <tt>label</tt>, or <tt>date</tt>
 allowed.]]></short-description>
        <description><![CDATA[
          Set the version to get;
 optional, only one of <tt>version</tt>, <tt>label</tt>, or <tt>date</tt>
 allowed.
        ]]></description>
      </attribute>
      <attribute name="vsspath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.]]></short-description>
        <description><![CDATA[
          SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required. You should not specify the leading dollar-sign - 
 it is prepended by Ant automatically.
 <p>
 Ant can't cope with a '$' sign in an attribute so we have to add it here.
 Also we strip off any 'vss://' prefix which is an XMS special and should probably be removed!
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="vsscp" category="scm"
      classname="org.apache.tools.ant.taskdefs.optional.vss.MSVSSCP"
      >

  <short-description><![CDATA[Performs CP (Change Project) commands to Microsoft Visual SourceSafe.]]></short-description>
  <description>
    <![CDATA[Performs CP (Change Project) commands to Microsoft Visual SourceSafe.
 <p>This task is typically used before a VssAdd in order to set the target project</p>
 Based on the VSS Checkin code by Martin Poeschl]]>
  </description>

  <structure>

    <attributes>
      <attribute name="autoresponse" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[What to respond with (sets the -I option).]]></short-description>
        <description><![CDATA[
          What to respond with (sets the -I option). By default, -I- is
 used; values of Y or N will be appended to this.
        ]]></description>
      </attribute>
      <attribute name="login" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The login to use when accessing VSS, formatted as "username,password";
 optional.]]></short-description>
        <description><![CDATA[
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 <p>
 You can omit the password if your database is not password protected.
  if you have a password and omit it, Ant/VSS will hang.
        ]]></description>
      </attribute>
      <attribute name="serverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>srssafe.ini</code> resides; optional.]]></short-description>
        <description><![CDATA[
          Set the directory where <code>srssafe.ini</code> resides; optional.
        ]]></description>
      </attribute>
      <attribute name="ssdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>ss.exe</code> resides; optional.]]></short-description>
        <description><![CDATA[
          directory where <code>ss.exe</code> resides; optional.
 By default the task expects it to be in the PATH.
        ]]></description>
      </attribute>
      <attribute name="vsspath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.]]></short-description>
        <description><![CDATA[
          SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required. You should not specify the leading dollar-sign - 
 it is prepended by Ant automatically.
 <p>
 Ant can't cope with a '$' sign in an attribute so we have to add it here.
 Also we strip off any 'vss://' prefix which is an XMS special and should probably be removed!
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="vsscreate" category="scm"
      classname="org.apache.tools.ant.taskdefs.optional.vss.MSVSSCREATE"
      >

  <short-description><![CDATA[Creates a new project in Microsoft Visual SourceSafe.]]></short-description>
  <description>
    <![CDATA[Creates a new project in Microsoft Visual SourceSafe.
 <p>
 The following attributes are interpreted:
 <table border="1">
   <tr>
     <th>Attribute</th>
     <th>Values</th>
     <th>Required</th>
   </tr>
   <tr>
      <td>login</td>
      <td>username,password</td>
      <td>No</td>
   </tr>
   <tr>
      <td>vsspath</td>
      <td>SourceSafe path of project to be created</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>ssdir</td>
      <td>directory where <code>ss.exe</code> resides. By default the task
      expects it to be in the PATH.</td>
      <td>No</td>
   </tr>
   <tr>
      <td>quiet</td>
      <td>suppress output (off by default)</td>
      <td>No</td>
   </tr>
   <tr>
      <td>failOnError</td>
      <td>fail if there is an error creating the project (true by default)</td>
      <td>No</td>
   </tr>   
   <tr>
      <td>autoresponse</td>
      <td>What to respond with (sets the -I option). By default, -I- is
      used; values of Y or N will be appended to this.</td>
      <td>No</td>
   </tr>
   <tr>
      <td>comment</td>
      <td>The comment to use for this label. Empty or '-' for no comment.</td>
      <td>No</td>
   </tr>
 </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="autoresponse" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[What to respond with (sets the -I option).]]></short-description>
        <description><![CDATA[
          What to respond with (sets the -I option). By default, -I- is
 used; values of Y or N will be appended to this.
        ]]></description>
      </attribute>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Comment to apply in SourceSafe.]]></short-description>
        <description><![CDATA[
          Sets the comment to apply in SourceSafe.
 <p>
 If this is null or empty, it will be replaced with "-" which
 is what SourceSafe uses for an empty comment.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets whether task should fail if there is an error creating the project;
 optional, default true.]]></short-description>
        <description><![CDATA[
          Sets whether task should fail if there is an error creating the project;
 optional, default true.
        ]]></description>
      </attribute>
      <attribute name="login" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The login to use when accessing VSS, formatted as "username,password";
 optional.]]></short-description>
        <description><![CDATA[
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 <p>
 You can omit the password if your database is not password protected.
  if you have a password and omit it, Ant/VSS will hang.
        ]]></description>
      </attribute>
      <attribute name="quiet" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Sets/clears quiet mode; optional, default false.]]></short-description>
        <description><![CDATA[
          Sets/clears quiet mode; optional, default false.
        ]]></description>
      </attribute>
      <attribute name="serverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>srssafe.ini</code> resides; optional.]]></short-description>
        <description><![CDATA[
          Set the directory where <code>srssafe.ini</code> resides; optional.
        ]]></description>
      </attribute>
      <attribute name="ssdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>ss.exe</code> resides; optional.]]></short-description>
        <description><![CDATA[
          directory where <code>ss.exe</code> resides; optional.
 By default the task expects it to be in the PATH.
        ]]></description>
      </attribute>
      <attribute name="vsspath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.]]></short-description>
        <description><![CDATA[
          SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required. You should not specify the leading dollar-sign - 
 it is prepended by Ant automatically.
 <p>
 Ant can't cope with a '$' sign in an attribute so we have to add it here.
 Also we strip off any 'vss://' prefix which is an XMS special and should probably be removed!
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="vssget" category="scm"
      classname="org.apache.tools.ant.taskdefs.optional.vss.MSVSSGET"
      >

  <short-description><![CDATA[Perform Get commands to Microsoft Visual SourceSafe.]]></short-description>
  <description>
    <![CDATA[Perform Get commands to Microsoft Visual SourceSafe.
 <p>
 The following attributes are interpreted:
 <table border="1">
   <tr>
     <th>Attribute</th>
     <th>Values</th>
     <th>Required</th>
   </tr>
   <tr>
      <td>login</td>
      <td>username,password</td>
      <td>No</td>
   </tr>
   <tr>
      <td>vsspath</td>
      <td>SourceSafe path</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>localpath</td>
      <td>Override the working directory and get to the specified path</td>
      <td>No</td>
   </tr>
   <tr>
      <td>writable</td>
      <td>true or false</td>
      <td>No</td>
   </tr>
   <tr>
      <td>recursive</td>
      <td>true or false</td>
      <td>No</td>
   </tr>
   <tr>
      <td>version</td>
      <td>a version number to get</td>
      <td>No</td>
   </tr>
   <tr>
      <td>date</td>
      <td>a date stamp to get at</td>
      <td>No</td>
   </tr>
   <tr>
      <td>label</td>
      <td>a label to get for</td>
      <td>No</td>
   </tr>
   <tr>
      <td>quiet</td>
      <td>suppress output (off by default)</td>
      <td>No</td>
   </tr>
   <tr>
      <td>autoresponse</td>
      <td>What to respond with (sets the -I option). By default, -I- is
      used; values of Y or N will be appended to this.</td>
      <td>No</td>
   </tr>
 </table>
 <p>Note that only one of version, date or label should be specified</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="autoresponse" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[What to respond with (sets the -I option).]]></short-description>
        <description><![CDATA[
          What to respond with (sets the -I option). By default, -I- is
 used; values of Y or N will be appended to this.
        ]]></description>
      </attribute>
      <attribute name="date" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Date to get;
 optional, only one of <tt>version</tt>, <tt>label</tt>, or <tt>date</tt>
 allowed.]]></short-description>
        <description><![CDATA[
          Set the date to get;
 optional, only one of <tt>version</tt>, <tt>label</tt>, or <tt>date</tt>
 allowed.
 <p>
 ORIGINAL COMMENT THAT DOES NOT SEEM AT ALL VALID:
 Note we assume that if the supplied string has the value "null" that something
 went wrong and that the string value got populated from a null object. This
 happens if a ant variable is used e.g. date="${date}" when date
 has not been defined to ant!
        ]]></description>
      </attribute>
      <attribute name="label" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Label to get;
 optional, only one of <tt>version</tt>, <tt>label</tt>, or <tt>date</tt>
 allowed.]]></short-description>
        <description><![CDATA[
          Set the label to get;
 optional, only one of <tt>version</tt>, <tt>label</tt>, or <tt>date</tt>
 allowed.
 <p>
 Note we assume that if the supplied string has the value "null" that something
 went wrong and that the string value got populated from a null object. This
 happens if a ant variable is used e.g. label="${label_server}" when label_server
 has not been defined to ant!
        ]]></description>
      </attribute>
      <attribute name="localpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Override the working directory and get to the specified path; optional.]]></short-description>
        <description><![CDATA[
          Override the working directory and get to the specified path; optional.
        ]]></description>
      </attribute>
      <attribute name="login" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The login to use when accessing VSS, formatted as "username,password";
 optional.]]></short-description>
        <description><![CDATA[
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 <p>
 You can omit the password if your database is not password protected.
  if you have a password and omit it, Ant/VSS will hang.
        ]]></description>
      </attribute>
      <attribute name="quiet" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to suppress output when true ; false by default.]]></short-description>
        <description><![CDATA[
          Flag to suppress output when true ; false by default.
        ]]></description>
      </attribute>
      <attribute name="recursive" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to tell the task to recurse down the tree;
 optional, default false.]]></short-description>
        <description><![CDATA[
          Flag to tell the task to recurse down the tree;
 optional, default false.
        ]]></description>
      </attribute>
      <attribute name="serverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>srssafe.ini</code> resides; optional.]]></short-description>
        <description><![CDATA[
          Set the directory where <code>srssafe.ini</code> resides; optional.
        ]]></description>
      </attribute>
      <attribute name="ssdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>ss.exe</code> resides; optional.]]></short-description>
        <description><![CDATA[
          directory where <code>ss.exe</code> resides; optional.
 By default the task expects it to be in the PATH.
        ]]></description>
      </attribute>
      <attribute name="version" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Version number to get; 
 optional, only one of <tt>version</tt>, <tt>label</tt>, or <tt>date</tt>
 allowed.]]></short-description>
        <description><![CDATA[
          Set a version number to get; 
 optional, only one of <tt>version</tt>, <tt>label</tt>, or <tt>date</tt>
 allowed.
 <p>
 ORIGINAL COMMENT THAT DOES NOT SEEM AT ALL VALID:
 Note we assume that if the supplied string has the value "null" that something
 went wrong and that the string value got populated from a null object. This
 happens if a ant variable is used e.g. version="${ver_server}" when ver_server
 has not been defined to ant!
 NO, in this case the version string is "${ver_server}".
        ]]></description>
      </attribute>
      <attribute name="vsspath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.]]></short-description>
        <description><![CDATA[
          SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required. You should not specify the leading dollar-sign - 
 it is prepended by Ant automatically.
 <p>
 Ant can't cope with a '$' sign in an attribute so we have to add it here.
 Also we strip off any 'vss://' prefix which is an XMS special and should probably be removed!
        ]]></description>
      </attribute>
      <attribute name="writable" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Make fetched files  writable; optional, default false.]]></short-description>
        <description><![CDATA[
          make fetched files  writable; optional, default false.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="vsshistory" category="scm"
      classname="org.apache.tools.ant.taskdefs.optional.vss.MSVSSHISTORY"
      >

  <short-description><![CDATA[Performs History commands to Microsoft Visual SourceSafe.]]></short-description>
  <description>
    <![CDATA[Performs History commands to Microsoft Visual SourceSafe.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="dateformat" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Format of dates in fromDate and toDate; optional.]]></short-description>
        <description><![CDATA[
          Format of dates in fromDate and toDate; optional.
 Used when calculating dates with 
 the numdays attribute. 
 This string uses the formatting rules of SimpleDateFormat. 
  Defaults to DateFormat.SHORT.
        ]]></description>
      </attribute>
      <attribute name="fromdate" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Start Date for the Comparison of two versions; optional.]]></short-description>
        <description><![CDATA[
          Set the Start Date for the Comparison of two versions; optional.
        ]]></description>
      </attribute>
      <attribute name="fromlabel" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Start Label; optional.]]></short-description>
        <description><![CDATA[
          Set the Start Label; optional
        ]]></description>
      </attribute>
      <attribute name="login" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The login to use when accessing VSS, formatted as "username,password";
 optional.]]></short-description>
        <description><![CDATA[
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 <p>
 You can omit the password if your database is not password protected.
  if you have a password and omit it, Ant/VSS will hang.
        ]]></description>
      </attribute>
      <attribute name="numdays" type="int"
                 briefType="int" required="NOTDEFINED">
        <short-description><![CDATA[Number of days for comparison; 
 optional.]]></short-description>
        <description><![CDATA[
          Set the number of days for comparison; 
 optional.
 <p>
 The default value is 2 days. (maybe)
        ]]></description>
      </attribute>
      <attribute name="output" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Output file name for the history; optional.]]></short-description>
        <description><![CDATA[
          Set the output file name for the history; optional.
        ]]></description>
      </attribute>
      <attribute name="recursive" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to tell the task to recurse down the tree;
 optional, default false.]]></short-description>
        <description><![CDATA[
          Flag to tell the task to recurse down the tree;
 optional, default false.
        ]]></description>
      </attribute>
      <attribute name="serverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>srssafe.ini</code> resides; optional.]]></short-description>
        <description><![CDATA[
          Set the directory where <code>srssafe.ini</code> resides; optional.
        ]]></description>
      </attribute>
      <attribute name="ssdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>ss.exe</code> resides; optional.]]></short-description>
        <description><![CDATA[
          directory where <code>ss.exe</code> resides; optional.
 By default the task expects it to be in the PATH.
        ]]></description>
      </attribute>
      <attribute name="style" type="org.apache.tools.ant.taskdefs.optional.vss.MSVSSHISTORY.BriefCodediffNofile"
                 briefType="&quot;brief&quot;, &quot;codediff&quot;, &quot;nofile&quot;, &quot;default&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Specify the output style; optional.]]></short-description>
        <description><![CDATA[
          Specify the output style; optional.
        ]]></description>
      </attribute>
      <attribute name="todate" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[End Date for the Comparison of two versions; optional.]]></short-description>
        <description><![CDATA[
          Set the End Date for the Comparison of two versions; optional.
        ]]></description>
      </attribute>
      <attribute name="tolabel" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[End Label ; optional.]]></short-description>
        <description><![CDATA[
          Set the End Label ; optional
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name the user whose changes we would like to see; optional.]]></short-description>
        <description><![CDATA[
          Name the user whose changes we would like to see; optional
        ]]></description>
      </attribute>
      <attribute name="vsspath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.]]></short-description>
        <description><![CDATA[
          SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required. You should not specify the leading dollar-sign - 
 it is prepended by Ant automatically.
 <p>
 Ant can't cope with a '$' sign in an attribute so we have to add it here.
 Also we strip off any 'vss://' prefix which is an XMS special and should probably be removed!
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="vsslabel" category="scm"
      classname="org.apache.tools.ant.taskdefs.optional.vss.MSVSSLABEL"
      >

  <short-description><![CDATA[Performs Label commands to Microsoft Visual SourceSafe.]]></short-description>
  <description>
    <![CDATA[Performs Label commands to Microsoft Visual SourceSafe.

 <p>
 The following attributes are interpreted:
 <table border="1">
   <tr>
     <th>Attribute</th>
     <th>Values</th>
     <th>Required</th>
   </tr>
   <tr>
      <td>login</td>
      <td>username,password</td>
      <td>No</td>
   </tr>
   <tr>
      <td>vsspath</td>
      <td>SourceSafe path</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>ssdir</td>
      <td>directory where <code>ss.exe</code> resides. By default the task
      expects it to be in the PATH.</td>
      <td>No</td>
   </tr>
   <tr>
      <td>label</td>
      <td>A label to apply to the hierarchy</td>
      <td>Yes</td>
   </tr>
   <tr>
      <td>version</td>
      <td>An existing file or project version to label</td>
      <td>No</td>
   </tr>
   <tr>
      <td>autoresponse</td>
      <td>What to respond with (sets the -I option). By default, -I- is
      used; values of Y or N will be appended to this.</td>
      <td>No</td>
   </tr>
   <tr>
      <td>comment</td>
      <td>The comment to use for this label. Empty or '-' for no comment.</td>
      <td>No</td>
   </tr>
 </table>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="autoresponse" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[What to respond with (sets the -I option).]]></short-description>
        <description><![CDATA[
          What to respond with (sets the -I option). By default, -I- is
 used; values of Y or N will be appended to this.
        ]]></description>
      </attribute>
      <attribute name="comment" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The comment to use for this label; optional.]]></short-description>
        <description><![CDATA[
          The comment to use for this label; optional.
 Empty or '-' for no comment.
 <p>
 If this is null or empty, it will be replaced with "-" which
 is what SourceSafe uses for an empty comment.
        ]]></description>
      </attribute>
      <attribute name="label" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Label to apply; required.]]></short-description>
        <description><![CDATA[
          Set the label to apply; required.
 <p>
 Note we assume that if the supplied string has the value "null" that something
 went wrong and that the string value got populated from a null object. This
 happens if a ant variable is used e.g. label="${label_server}" when label_server
 has not been defined to ant!
        ]]></description>
      </attribute>
      <attribute name="login" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The login to use when accessing VSS, formatted as "username,password";
 optional.]]></short-description>
        <description><![CDATA[
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 <p>
 You can omit the password if your database is not password protected.
  if you have a password and omit it, Ant/VSS will hang.
        ]]></description>
      </attribute>
      <attribute name="serverpath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>srssafe.ini</code> resides; optional.]]></short-description>
        <description><![CDATA[
          Set the directory where <code>srssafe.ini</code> resides; optional.
        ]]></description>
      </attribute>
      <attribute name="ssdir" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Directory where <code>ss.exe</code> resides; optional.]]></short-description>
        <description><![CDATA[
          directory where <code>ss.exe</code> resides; optional.
 By default the task expects it to be in the PATH.
        ]]></description>
      </attribute>
      <attribute name="version" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name an existing file or project version to label; optional.]]></short-description>
        <description><![CDATA[
          Name an existing file or project version to label; optional.
 By default the current version is labelled.
 <p>
 Note we assume that if the supplied string has the value "null" that something
 went wrong and that the string value got populated from a null object. This
 happens if a ant variable is used e.g. version="${ver_server}" when ver_server
 has not been defined to ant!
        ]]></description>
      </attribute>
      <attribute name="vsspath" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.]]></short-description>
        <description><![CDATA[
          SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required. You should not specify the leading dollar-sign - 
 it is prepended by Ant automatically.
 <p>
 Ant can't cope with a '$' sign in an attribute so we have to add it here.
 Also we strip off any 'vss://' prefix which is an XMS special and should probably be removed!
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="waitfor" category="control"
      classname="org.apache.tools.ant.taskdefs.WaitFor"
      >

  <short-description><![CDATA[Wait for an external event to occur.]]></short-description>
  <description>
    <![CDATA[Wait for an external event to occur.

 Wait for an external process to start or to complete some
 task. This is useful with the <code>parallel</code> task to
 syncronize the execution of tests with server startup.

 The following attributes can be specified on a waitfor task:
 <ul>
 <li>maxwait - maximum length of time to wait before giving up</li>
 <li>maxwaitunit - The unit to be used to interpret maxwait attribute</li>
 <li>checkevery - amount of time to sleep between each check</li>
 <li>checkeveryunit - The unit to be used to interpret checkevery attribute</li>
 <li>timeoutproperty - name of a property to set if maxwait has been exceeded.</li>
 </ul>

 The maxwaitunit and checkeveryunit are allowed to have the following values:
 millesond, second, minute, hour, day and week. The default is millisecond.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="checkevery" type="long"
                 briefType="long" required="NOTDEFINED">
        <short-description><![CDATA[Time between each check.]]></short-description>
        <description><![CDATA[
          Set the time between each check
        ]]></description>
      </attribute>
      <attribute name="checkeveryunit" type="org.apache.tools.ant.taskdefs.WaitFor.Unit"
                 briefType="&quot;millisecond&quot;, &quot;second&quot;, &quot;minute&quot;, &quot;hour&quot;, &quot;day&quot;, &quot;week&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Check every time unit.]]></short-description>
        <description><![CDATA[
          Set the check every time unit
        ]]></description>
      </attribute>
      <attribute name="maxwait" type="long"
                 briefType="long" required="NOTDEFINED">
        <short-description><![CDATA[Maximum length of time to wait.]]></short-description>
        <description><![CDATA[
          Set the maximum length of time to wait
        ]]></description>
      </attribute>
      <attribute name="maxwaitunit" type="org.apache.tools.ant.taskdefs.WaitFor.Unit"
                 briefType="&quot;millisecond&quot;, &quot;second&quot;, &quot;minute&quot;, &quot;hour&quot;, &quot;day&quot;, &quot;week&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Max wait time unit.]]></short-description>
        <description><![CDATA[
          Set the max wait time unit
        ]]></description>
      </attribute>
      <attribute name="timeoutproperty" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name the property to set after a timeout.]]></short-description>
        <description><![CDATA[
          Name the property to set after a timeout.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="and" type="org.apache.tools.ant.taskdefs.condition.And"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;and&gt; condition "container".]]></short-description>
        <description>
          <![CDATA[Add an &lt;and&gt; condition "container".]]>
        </description>
      </element>

      <element name="available" type="org.apache.tools.ant.taskdefs.Available"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;available&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;available&gt; condition.]]>
        </description>
      </element>

      <element name="checksum" type="org.apache.tools.ant.taskdefs.Checksum"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;checksum&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;checksum&gt; condition.]]>
        </description>
      </element>

      <element name="contains" type="org.apache.tools.ant.taskdefs.condition.Contains"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a &lt;contains&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add a &lt;contains&gt; condition.]]>
        </description>
      </element>

      <element name="equals" type="org.apache.tools.ant.taskdefs.condition.Equals"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;equals&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;equals&gt; condition.]]>
        </description>
      </element>

      <element name="filesmatch" type="org.apache.tools.ant.taskdefs.condition.FilesMatch"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a &lt;filesmatch&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add a &lt;filesmatch&gt; condition.]]>
        </description>
      </element>

      <element name="http" type="org.apache.tools.ant.taskdefs.condition.Http"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;http&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;http&gt; condition.]]>
        </description>
      </element>

      <element name="isfalse" type="org.apache.tools.ant.taskdefs.condition.IsFalse"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a &lt;isfalse&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add a &lt;isfalse&gt; condition.]]>
        </description>
      </element>

      <element name="isset" type="org.apache.tools.ant.taskdefs.condition.IsSet"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;isset&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;isset&gt; condition.]]>
        </description>
      </element>

      <element name="istrue" type="org.apache.tools.ant.taskdefs.condition.IsTrue"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a &lt;istrue&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add a &lt;istrue&gt; condition.]]>
        </description>
      </element>

      <element name="not" type="org.apache.tools.ant.taskdefs.condition.Not"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;not&gt; condition "container".]]></short-description>
        <description>
          <![CDATA[Add an &lt;not&gt; condition "container".]]>
        </description>
      </element>

      <element name="or" type="org.apache.tools.ant.taskdefs.condition.Or"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;or&gt; condition "container".]]></short-description>
        <description>
          <![CDATA[Add an &lt;or&gt; condition "container".]]>
        </description>
      </element>

      <element name="os" type="org.apache.tools.ant.taskdefs.condition.Os"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;os&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;os&gt; condition.]]>
        </description>
      </element>

      <element name="socket" type="org.apache.tools.ant.taskdefs.condition.Socket"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add a &lt;socket&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add a &lt;socket&gt; condition.]]>
        </description>
      </element>

      <element name="uptodate" type="org.apache.tools.ant.taskdefs.UpToDate"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Add an &lt;uptodate&gt; condition.]]></short-description>
        <description>
          <![CDATA[Add an &lt;uptodate&gt; condition.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="war" category="packaging"
      classname="org.apache.tools.ant.taskdefs.War"
      matchingTask="true">

  <short-description><![CDATA[An extension of &lt;jar&gt; to create a WAR archive.]]></short-description>
  <description>
    <![CDATA[An extension of &lt;jar&gt; to create a WAR archive.
 Contains special treatment for files that should end up in the
 <code>WEB-INF/lib</code>, <code>WEB-INF/classes</code> or
 <code>WEB-INF</code> directories of the Web Application Archive.</p>
 <p>(The War task is a shortcut for specifying the particular layout of a WAR file. 
 The same thing can be accomplished by using the <i>prefix</i> and <i>fullpath</i>
 attributes of zipfilesets in a Zip or Jar task.)</p>
 <p>The extended zipfileset element from the zip task (with attributes <i>prefix</i>, <i>fullpath</i>, and <i>src</i>) is available in the War task.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="basedir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Directory from which to archive files; optional.]]></short-description>
        <description><![CDATA[
          Directory from which to archive files; optional.
        ]]></description>
      </attribute>
      <attribute name="compress" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether we want to compress the files or only store them;
 optional, default=true;.]]></short-description>
        <description><![CDATA[
          Whether we want to compress the files or only store them;
 optional, default=true;
        ]]></description>
      </attribute>
      <attribute name="destfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file to create; required.]]></short-description>
        <description><![CDATA[
          The file to create; required.
        ]]></description>
      </attribute>
      <attribute name="duplicate" type="org.apache.tools.ant.taskdefs.Zip.Duplicate"
                 briefType="&quot;add&quot;, &quot;preserve&quot;, &quot;fail&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Sets behavior for when a duplicate file is about to be added -
 one of <code>keep</code>, <code>skip</code> or <code>overwrite</code>.]]></short-description>
        <description><![CDATA[
          Sets behavior for when a duplicate file is about to be added -
 one of <code>keep</code>, <code>skip</code> or <code>overwrite</code>.
 Possible values are: <code>keep</code> (keep both
 of the files); <code>skip</code> (keep the first version
 of the file found); <code>overwrite</code> overwrite the file
 with the new file
 Default for zip tasks is <code>keep</code>
        ]]></description>
      </attribute>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Encoding to use for filenames, defaults to the platform's
 default encoding.]]></short-description>
        <description><![CDATA[
          Encoding to use for filenames, defaults to the platform's
 default encoding.

 <p>For a list of possible values see <a
 href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html">http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html</a>.</p>
        ]]></description>
      </attribute>
      <attribute name="filesonly" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.]]></short-description>
        <description><![CDATA[
          If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.
        ]]></description>
      </attribute>
      <attribute name="index" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set whether or not to create an index list for classes.]]></short-description>
        <description><![CDATA[
          Set whether or not to create an index list for classes.
 This may speed up classloading in some cases.
        ]]></description>
      </attribute>
      <attribute name="manifest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The manifest file to use.]]></short-description>
        <description><![CDATA[
          The manifest file to use. This can be either the location of a manifest,
 or the name of a jar added through a fileset. If its the name of an added
 jar, the task expects the manifest to be in the jar at META-INF/MANIFEST.MF.
        ]]></description>
      </attribute>
      <attribute name="update" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.]]></short-description>
        <description><![CDATA[
          If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.
        ]]></description>
      </attribute>
      <attribute name="webxml" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Deployment descriptor to use (WEB-INF/web.xml);
 required unless <tt>update=true</tt>.]]></short-description>
        <description><![CDATA[
          set the deployment descriptor to use (WEB-INF/web.xml);
 required unless <tt>update=true</tt>
        ]]></description>
      </attribute>
      <attribute name="whenempty" type="org.apache.tools.ant.taskdefs.Zip.WhenEmpty"
                 briefType="&quot;fail&quot;, &quot;skip&quot;, &quot;create&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Sets behavior of the task when no files match.]]></short-description>
        <description><![CDATA[
          Sets behavior of the task when no files match.
 Possible values are: <code>fail</code> (throw an exception
 and halt the build); <code>skip</code> (do not create
 any archive, but issue a warning); <code>create</code>
 (make an archive with no entries).
 Default for zip tasks is <code>skip</code>;
 for jar tasks, <code>create</code>.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classes" type="org.apache.tools.ant.types.ZipFileSet"
               briefType="ZipFileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add files under WEB-INF/classes.]]></short-description>
        <description>
          <![CDATA[add files under WEB-INF/classes]]>
        </description>
      </element>

      <element name="manifest" type="org.apache.tools.ant.taskdefs.Manifest"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Allows the manifest for the archive file to be provided inline
 in the buildfile rather than in an external file.]]></short-description>
        <description>
          <![CDATA[Allows the manifest for the archive file to be provided inline
 in the buildfile rather than in an external file.]]>
        </description>
      </element>

      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files.]]></short-description>
        <description>
          <![CDATA[Adds a set of files.]]>
        </description>
      </element>

      <element name="lib" type="org.apache.tools.ant.types.ZipFileSet"
               briefType="ZipFileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Add files under WEB-INF/lib/.]]></short-description>
        <description>
          <![CDATA[add files under WEB-INF/lib/]]>
        </description>
      </element>

      <element name="metainf" type="org.apache.tools.ant.types.ZipFileSet"
               briefType="ZipFileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a zipfileset to include in the META-INF directory.]]></short-description>
        <description>
          <![CDATA[Adds a zipfileset to include in the META-INF directory.]]>
        </description>
      </element>

      <element name="webinf" type="org.apache.tools.ant.types.ZipFileSet"
               briefType="ZipFileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Files to add under WEB-INF;.]]></short-description>
        <description>
          <![CDATA[files to add under WEB-INF;]]>
        </description>
      </element>

      <element name="zipgroupfileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a group of zip files.]]></short-description>
        <description>
          <![CDATA[Adds a group of zip files.]]>
        </description>
      </element>

      <element name="zipfileset" type="org.apache.tools.ant.types.ZipFileSet"
               briefType="ZipFileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files that can be
 read from an archive and be given a prefix/fullpath.]]></short-description>
        <description>
          <![CDATA[Adds a set of files that can be
 read from an archive and be given a prefix/fullpath.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="wljspc" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.jsp.WLJspc"
      matchingTask="true">

  <short-description><![CDATA[Precompiles JSP's using WebLogic's JSP compiler (weblogic.jspc).]]></short-description>
  <description>
    <![CDATA[Precompiles JSP's using WebLogic's JSP compiler (weblogic.jspc).]]>
  </description>

  <structure>

    <attributes>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Classpath to be used for this compilation.]]></short-description>
        <description><![CDATA[
          Set the classpath to be used for this compilation.
        ]]></description>
      </attribute>
      <attribute name="dest" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Directory containing the source jsp's.]]></short-description>
        <description><![CDATA[
          Set the directory containing the source jsp's
        ]]></description>
      </attribute>
      <attribute name="package" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Package under which the compiled classes go.]]></short-description>
        <description><![CDATA[
          Set the package under which the compiled classes go
        ]]></description>
      </attribute>
      <attribute name="src" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Directory containing the source jsp's.]]></short-description>
        <description><![CDATA[
          Set the directory containing the source jsp's
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Maybe creates a nested classpath element.]]></short-description>
        <description>
          <![CDATA[Maybe creates a nested classpath element.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="wlrun" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ejb.WLRun"
      >

  <short-description><![CDATA[Starts a WebLogic server.]]></short-description>
  <description>
    <![CDATA[Starts a WebLogic server.
 A number of parameters are used to control the operation of the weblogic instance. Note that the task,
 and hence ant, will not complete until the weblogic instance is stopped.</p>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="args" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Additional argument string passed to the Weblogic instance;
 optional.]]></short-description>
        <description><![CDATA[
          Additional argument string passed to the Weblogic instance;
 optional.
        ]]></description>
      </attribute>
      <attribute name="beahome" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The location of the BEA Home; implicitly
 selects Weblogic 6.0; optional.]]></short-description>
        <description><![CDATA[
          The location of the BEA Home; implicitly
 selects Weblogic 6.0; optional.
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[The classpath to be used with the Java Virtual Machine that runs the Weblogic
 Server; required.]]></short-description>
        <description><![CDATA[
          The classpath to be used with the Java Virtual Machine that runs the Weblogic
 Server; required. Prior to Weblogic 6.0, this is typically set to the Weblogic
 boot classpath. Under Weblogic 6.0 this should include all the
 weblogic jars
        ]]></description>
      </attribute>
      <attribute name="domain" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Domain to run in; required for WL6.0.]]></short-description>
        <description><![CDATA[
          Set the Domain to run in; required for WL6.0
        ]]></description>
      </attribute>
      <attribute name="home" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The location where weblogic lives.]]></short-description>
        <description><![CDATA[
          The location where weblogic lives.
 Required. This is the absolute location, not relative to
  BEA home.
        ]]></description>
      </attribute>
      <attribute name="jvmargs" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Additional arguments to pass to the weblogic JVM.]]></short-description>
        <description><![CDATA[
          Set the additional arguments to pass to the weblogic JVM
        ]]></description>
      </attribute>
      <attribute name="name" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of the weblogic server within the weblogic home which is to be run.]]></short-description>
        <description><![CDATA[
          The name of the weblogic server within the weblogic home which is to be run.
 Optiona, defaults to &quot;myserver&quot;
        ]]></description>
      </attribute>
      <attribute name="pkpassword" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Private key password so the server can decrypt the SSL private key file;
 optional and only applicable to WL6.0.]]></short-description>
        <description><![CDATA[
          Set the private key password so the server can decrypt the SSL private key file;
 optional and only applicable to WL6.0.
        ]]></description>
      </attribute>
      <attribute name="password" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Management password of the server;
 optional and only applicable to WL6.0.]]></short-description>
        <description><![CDATA[
          Set the management password of the server;
 optional and only applicable to WL6.0.
        ]]></description>
      </attribute>
      <attribute name="policy" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of the security policy file within the weblogic home directory that
 is to be used.]]></short-description>
        <description><![CDATA[
          The name of the security policy file within the weblogic home directory that
 is to be used. If not specified, the default policy file <code>weblogic.policy</code>
 is used.
        ]]></description>
      </attribute>
      <attribute name="properties" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The name of the server's properties file within the weblogic home directory
 used to control the weblogic instance;
 required for WL4.5.1.]]></short-description>
        <description><![CDATA[
          The name of the server's properties file within the weblogic home directory
 used to control the weblogic instance;
 required for WL4.5.1
        ]]></description>
      </attribute>
      <attribute name="username" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Management username to run the server;
 optional and only applicable to WL6.0.]]></short-description>
        <description><![CDATA[
          Set the management username to run the server;
 optional and only applicable to WL6.0.
        ]]></description>
      </attribute>
      <attribute name="weblogicmainclass" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the main class for weblogic; optional.]]></short-description>
        <description><![CDATA[
          name of the main class for weblogic; optional.
        ]]></description>
      </attribute>
      <attribute name="wlclasspath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Weblogic classpath used by the Weblogic Server;
 optional, and only applicable to WL4.5.1

 The weblogic classpath is used by weblogic to support dynamic class loading.]]></short-description>
        <description><![CDATA[
          Set the weblogic classpath used by the Weblogic Server;
 optional, and only applicable to WL4.5.1

 The weblogic classpath is used by weblogic to support dynamic class loading.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Add the classpath for the user classes.]]></short-description>
        <description>
          <![CDATA[Add the classpath for the user classes]]>
        </description>
      </element>

      <element name="wlclasspath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Get the classpath to the weblogic classpaths.]]></short-description>
        <description>
          <![CDATA[Get the classpath to the weblogic classpaths]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="wlstop" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.ejb.WLStop"
      >

  <short-description><![CDATA[Shuts down a WebLogic server.]]></short-description>
  <description>
    <![CDATA[Shuts down a WebLogic server.
 To shut down an instance you must supply both a username and
 a password.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="beahome" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The location of the BEA Home; implicitly
 selects Weblogic 6.0 shutdown; optional.]]></short-description>
        <description><![CDATA[
          The location of the BEA Home; implicitly
 selects Weblogic 6.0 shutdown; optional.
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[The classpath to be used with the Java Virtual Machine that runs the Weblogic
 Shutdown command;.]]></short-description>
        <description><![CDATA[
          The classpath to be used with the Java Virtual Machine that runs the Weblogic
 Shutdown command;
        ]]></description>
      </attribute>
      <attribute name="delay" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Delay (in seconds) before shutting down the server;
 optional.]]></short-description>
        <description><![CDATA[
          Set the delay (in seconds) before shutting down the server;
 optional.
        ]]></description>
      </attribute>
      <attribute name="password" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The password for the account specified in the
 user parameter; required.]]></short-description>
        <description><![CDATA[
          The password for the account specified in the
 user parameter; required
        ]]></description>
      </attribute>
      <attribute name="url" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[URL to which the weblogic server is listening
 for T3 connections; required.]]></short-description>
        <description><![CDATA[
          Set the URL to which the weblogic server is listening
 for T3 connections; required.
        ]]></description>
      </attribute>
      <attribute name="user" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The username of the account which will be used to shutdown the server;
 required.]]></short-description>
        <description><![CDATA[
          The username of the account which will be used to shutdown the server;
 required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[The classpath to be used with the Java Virtual Machine that runs the Weblogic
 Shutdown command;.]]></short-description>
        <description>
          <![CDATA[The classpath to be used with the Java Virtual Machine that runs the Weblogic
 Shutdown command;]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="wsdltodotnet" category="dotnet"
      classname="org.apache.tools.ant.taskdefs.optional.dotnet.WsdlToDotnet"
      >

  <short-description><![CDATA[Converts a WSDL file or URL resource into a .NET language.]]></short-description>
  <description>
    <![CDATA[Converts a WSDL file or URL resource into a .NET language.

 See "Creating an XML Web Service Proxy", "wsdl.exe" docs in
 the framework SDK documentation]]>
  </description>

  <structure>

    <attributes>
      <attribute name="destfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Name of the file to generate.]]></short-description>
        <description><![CDATA[
          Name of the file to generate. Required
        ]]></description>
      </attribute>
      <attribute name="extraoptions" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Any extra WSDL.EXE options which aren't explicitly
  supported by the ant wrapper task; optional.]]></short-description>
        <description><![CDATA[
          Any extra WSDL.EXE options which aren't explicitly
  supported by the ant wrapper task; optional
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Should failure halt the build?.]]></short-description>
        <description><![CDATA[
          Should failure halt the build? optional, default=true
        ]]></description>
      </attribute>
      <attribute name="language" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Language; one of "CS", "JS", or "VB"
 optional, default is CS for C# source.]]></short-description>
        <description><![CDATA[
          set the language; one of "CS", "JS", or "VB"
 optional, default is CS for C# source
        ]]></description>
      </attribute>
      <attribute name="namespace" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Namespace to place  the source in.
 optional; default "".]]></short-description>
        <description><![CDATA[
          namespace to place  the source in.
 optional; default ""
        ]]></description>
      </attribute>
      <attribute name="server" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to enable server side code generation;
 optional, default=false.]]></short-description>
        <description><![CDATA[
          flag to enable server side code generation;
 optional, default=false
        ]]></description>
      </attribute>
      <attribute name="srcfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The local WSDL file to parse; either url or srcFile is required.]]></short-description>
        <description><![CDATA[
          The local WSDL file to parse; either url or srcFile is required.
        ]]></description>
      </attribute>
      <attribute name="url" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[URL to fetch.]]></short-description>
        <description><![CDATA[
          Sets the URL to fetch. Fetching is by wsdl.exe; Ant proxy settings
 are ignored; either url or srcFile is required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="xmlproperty" category="xml"
      classname="org.apache.tools.ant.taskdefs.XmlProperty"
      >

  <short-description><![CDATA[Loads property values from a valid XML file, generating the property names from the file's element and attribute names.]]></short-description>
  <description>
    <![CDATA[Loads property values from a valid XML file,
 generating the property names from the file's element and attribute names.

 Example:
 <pre>
   &lt;root-tag myattr="true"&gt;
     &lt;inner-tag someattr="val"&gt;Text&lt;/inner-tag&gt;
     &lt;a2&gt;&lt;a3&gt;&lt;a4&gt;false&lt;/a4&gt;&lt;/a3&gt;&lt;/a2&gt;
   &lt;/root-tag&gt;
</pre>
 this generates
 <pre>
  root-tag(myattr)=true
  root-tag.inner-tag=Text
  root-tag.inner-tag(someattr)=val
  root-tag.a2.a3.a4=false
 </pre>]]>
  </description>

  <structure>

    <attributes>
      <attribute name="collapseattributes" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to treat attributes as nested elements;
 optional, default false.]]></short-description>
        <description><![CDATA[
          flag to treat attributes as nested elements;
 optional, default false
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The XML file to parse; required.]]></short-description>
        <description><![CDATA[
          The XML file to parse; required.
        ]]></description>
      </attribute>
      <attribute name="keeproot" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to include the xml root tag as a 
 first value in the property name; optional, 
 default is true.]]></short-description>
        <description><![CDATA[
          flag to include the xml root tag as a 
 first value in the property name; optional, 
 default is true
        ]]></description>
      </attribute>
      <attribute name="prefix" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[The prefix to prepend to each property.]]></short-description>
        <description><![CDATA[
          the prefix to prepend to each property
        ]]></description>
      </attribute>
      <attribute name="validate" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Flag to validate the XML file; optional, default false.]]></short-description>
        <description><![CDATA[
          flag to validate the XML file; optional, default false
        ]]></description>
      </attribute>
    </attributes>

    <elements>
    </elements>

  </structure>

</task>


<task name="xmlvalidate" category="other"
      classname="org.apache.tools.ant.taskdefs.optional.XMLValidateTask"
      >

  <short-description><![CDATA[Checks XML files are valid (or only well formed).]]></short-description>
  <description>
    <![CDATA[Checks XML files are valid (or only well formed). The
 task uses the SAX2 parser implementation provided by JAXP by default
 (probably the one that is used by Ant itself), but one can specify any
 SAX1/2 parser if needed]]>
  </description>

  <structure>

    <attributes>
      <attribute name="classname" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Specify the class name of the SAX parser to be used. (optional).]]></short-description>
        <description><![CDATA[
          Specify the class name of the SAX parser to be used. (optional)
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Specify the classpath to be searched to load the parser (optional).]]></short-description>
        <description><![CDATA[
          Specify the classpath to be searched to load the parser (optional)
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Where to find the parser class; optional.]]></short-description>
        <description><![CDATA[
          Where to find the parser class; optional.
        ]]></description>
      </attribute>
      <attribute name="failonerror" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Specify how parser error are to be handled; 
 optional, default=true
 <p>
 If set to <code>true</code> (default), throw a buildException if the parser yields an error.]]></short-description>
        <description><![CDATA[
          Specify how parser error are to be handled; 
 optional, default=true
 <p>
 If set to <code>true</code> (default), throw a buildException if the parser yields an error.
        ]]></description>
      </attribute>
      <attribute name="file" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Specify the file to be checked; optional.]]></short-description>
        <description><![CDATA[
          specify the file to be checked; optional.
        ]]></description>
      </attribute>
      <attribute name="lenient" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Specify whether the parser should be validating.]]></short-description>
        <description><![CDATA[
          Specify whether the parser should be validating. Default is <code>true</code>.
 <p>
 If set to false, the validation will fail only if the parsed document is not well formed XML.
 <p>
 this option is ignored if the specified class with {@link #setClassName(String)} is not a SAX2
 XMLReader.
        ]]></description>
      </attribute>
      <attribute name="warn" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Specify how parser error are to be handled.]]></short-description>
        <description><![CDATA[
          Specify how parser error are to be handled.
 <p>
 If set to <code>true</true> (default), log a warn message for each SAX warn event.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="xmlcatalog" type="org.apache.tools.ant.types.XMLCatalog"
               briefType="XMLCatalog"
               required="NOTDEFINED">
        <short-description><![CDATA[Add an XMLCatalog as a nested element; optional.]]></short-description>
        <description>
          <![CDATA[add an XMLCatalog as a nested element; optional.]]>
        </description>
      </element>

      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Specify a set of file to be checked.]]></short-description>
        <description>
          <![CDATA[specify a set of file to be checked]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[No description.]]></short-description>
        <description>
          <![CDATA[]]>
        </description>
      </element>

      <element name="dtd" type="org.apache.tools.ant.types.DTDLocation"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Create a DTD location record; optional.]]></short-description>
        <description>
          <![CDATA[Create a DTD location record; optional.
 This stores the location of a DTD. The DTD is identified
 by its public Id.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="xslt" category="xml"
      classname="org.apache.tools.ant.taskdefs.XSLTProcess"
      matchingTask="true">

  <short-description><![CDATA[Processes a set of XML documents via XSLT.]]></short-description>
  <description>
    <![CDATA[Processes a set of XML documents via XSLT. This is
 useful for building views of XML based documentation.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="basedir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Base directory; 
 optional, default is the project's basedir.]]></short-description>
        <description><![CDATA[
          Set the base directory; 
 optional, default is the project's basedir.
        ]]></description>
      </attribute>
      <attribute name="classpath" type="org.apache.tools.ant.types.Path"
                 briefType="Path" required="NOTDEFINED">
        <short-description><![CDATA[Optional classpath to the XSL processor.]]></short-description>
        <description><![CDATA[
          Set the optional classpath to the XSL processor
        ]]></description>
      </attribute>
      <attribute name="classpathref" type="org.apache.tools.ant.types.Reference"
                 briefType="Reference" required="NOTDEFINED">
        <short-description><![CDATA[Reference to an optional classpath to the XSL processor.]]></short-description>
        <description><![CDATA[
          Set the reference to an optional classpath to the XSL processor
        ]]></description>
      </attribute>
      <attribute name="destdir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Destination directory into which the XSL result
 files should be copied to; 
 required, unless <tt>in</tt> and <tt>out</tt> are
 specified.]]></short-description>
        <description><![CDATA[
          Set the destination directory into which the XSL result
 files should be copied to; 
 required, unless <tt>in</tt> and <tt>out</tt> are
 specified.
        ]]></description>
      </attribute>
      <attribute name="extension" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Desired file extension to be used for the target;
 optional, default is html.]]></short-description>
        <description><![CDATA[
          Set the desired file extension to be used for the target;
 optional, default is html.
        ]]></description>
      </attribute>
      <attribute name="force" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Set whether to check dependencies, or always generate;
 optional, default is false.]]></short-description>
        <description><![CDATA[
          Set whether to check dependencies, or always generate;
 optional, default is false.
        ]]></description>
      </attribute>
      <attribute name="in" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Specifies a single XML document to be styled.]]></short-description>
        <description><![CDATA[
          specifies a single XML document to be styled. Should be used 
 with the <tt>out</tt> attribute; ; required if <tt>out</tt> is set
        ]]></description>
      </attribute>
      <attribute name="out" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Specifies the output name for the styled result from the 
 <tt>in</tt> attribute; required if <tt>in</tt> is set.]]></short-description>
        <description><![CDATA[
          Specifies the output name for the styled result from the 
 <tt>in</tt> attribute; required if <tt>in</tt> is set
        ]]></description>
      </attribute>
      <attribute name="processor" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the XSL processor to use; optional, default trax.]]></short-description>
        <description><![CDATA[
          Set the name of the XSL processor to use; optional, default trax.
 Other values are "xalan" for Xalan1 and "xslp" for XSL:P, though the
 later is strongly deprecated.
        ]]></description>
      </attribute>
      <attribute name="scanincludeddirectories" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether to style all files in the included directories as well;
 optional, default is true.]]></short-description>
        <description><![CDATA[
          Whether to style all files in the included directories as well;
 optional, default is true.
        ]]></description>
      </attribute>
      <attribute name="style" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Name of the stylesheet to use - given either relative
 to the project's basedir or as an absolute path; required.]]></short-description>
        <description><![CDATA[
          Name of the stylesheet to use - given either relative
 to the project's basedir or as an absolute path; required.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="xmlcatalog" type="org.apache.tools.ant.types.XMLCatalog"
               briefType="XMLCatalog"
               required="NOTDEFINED">
        <short-description><![CDATA[Add the catalog to our internal catalog.]]></short-description>
        <description>
          <![CDATA[Add the catalog to our internal catalog]]>
        </description>
      </element>

      <element name="classpath" type="org.apache.tools.ant.types.Path"
               briefType="Path"
               required="NOTDEFINED">
        <short-description><![CDATA[Optional classpath to the XSL processor.]]></short-description>
        <description>
          <![CDATA[Set the optional classpath to the XSL processor]]>
        </description>
      </element>

      <element name="outputproperty" type="org.apache.tools.ant.taskdefs.XSLTProcess.OutputProperty"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Create an instance of an output property to be configured.]]></short-description>
        <description>
          <![CDATA[Create an instance of an output property to be configured.]]>
        </description>
      </element>

      <element name="param" type="org.apache.tools.ant.taskdefs.XSLTProcess.Param"
               briefType=""
               required="NOTDEFINED">
        <short-description><![CDATA[Create an instance of an XSL parameter for configuration by Ant.]]></short-description>
        <description>
          <![CDATA[Create an instance of an XSL parameter for configuration by Ant.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>


<task name="zip" category="packaging"
      classname="org.apache.tools.ant.taskdefs.Zip"
      matchingTask="true">

  <short-description><![CDATA[Create a Zip file.]]></short-description>
  <description>
    <![CDATA[Create a Zip file.]]>
  </description>

  <structure>

    <attributes>
      <attribute name="basedir" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[Directory from which to archive files; optional.]]></short-description>
        <description><![CDATA[
          Directory from which to archive files; optional.
        ]]></description>
      </attribute>
      <attribute name="compress" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[Whether we want to compress the files or only store them;
 optional, default=true;.]]></short-description>
        <description><![CDATA[
          Whether we want to compress the files or only store them;
 optional, default=true;
        ]]></description>
      </attribute>
      <attribute name="destfile" type="java.io.File"
                 briefType="File" required="NOTDEFINED">
        <short-description><![CDATA[The file to create; required.]]></short-description>
        <description><![CDATA[
          The file to create; required.
        ]]></description>
      </attribute>
      <attribute name="duplicate" type="org.apache.tools.ant.taskdefs.Zip.Duplicate"
                 briefType="&quot;add&quot;, &quot;preserve&quot;, &quot;fail&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Sets behavior for when a duplicate file is about to be added -
 one of <code>keep</code>, <code>skip</code> or <code>overwrite</code>.]]></short-description>
        <description><![CDATA[
          Sets behavior for when a duplicate file is about to be added -
 one of <code>keep</code>, <code>skip</code> or <code>overwrite</code>.
 Possible values are: <code>keep</code> (keep both
 of the files); <code>skip</code> (keep the first version
 of the file found); <code>overwrite</code> overwrite the file
 with the new file
 Default for zip tasks is <code>keep</code>
        ]]></description>
      </attribute>
      <attribute name="encoding" type="java.lang.String"
                 briefType="String" required="NOTDEFINED">
        <short-description><![CDATA[Encoding to use for filenames, defaults to the platform's
 default encoding.]]></short-description>
        <description><![CDATA[
          Encoding to use for filenames, defaults to the platform's
 default encoding.

 <p>For a list of possible values see <a
 href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html">http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html</a>.</p>
        ]]></description>
      </attribute>
      <attribute name="filesonly" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.]]></short-description>
        <description><![CDATA[
          If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.
        ]]></description>
      </attribute>
      <attribute name="update" type="boolean"
                 briefType="boolean" required="NOTDEFINED">
        <short-description><![CDATA[If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.]]></short-description>
        <description><![CDATA[
          If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.
        ]]></description>
      </attribute>
      <attribute name="whenempty" type="org.apache.tools.ant.taskdefs.Zip.WhenEmpty"
                 briefType="&quot;fail&quot;, &quot;skip&quot;, &quot;create&quot;" required="NOTDEFINED">
        <short-description><![CDATA[Sets behavior of the task when no files match.]]></short-description>
        <description><![CDATA[
          Sets behavior of the task when no files match.
 Possible values are: <code>fail</code> (throw an exception
 and halt the build); <code>skip</code> (do not create
 any archive, but issue a warning); <code>create</code>
 (make an archive with no entries).
 Default for zip tasks is <code>skip</code>;
 for jar tasks, <code>create</code>.
        ]]></description>
      </attribute>
    </attributes>

    <elements>
      <element name="fileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files.]]></short-description>
        <description>
          <![CDATA[Adds a set of files.]]>
        </description>
      </element>

      <element name="zipgroupfileset" type="org.apache.tools.ant.types.FileSet"
               briefType="Fileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a group of zip files.]]></short-description>
        <description>
          <![CDATA[Adds a group of zip files.]]>
        </description>
      </element>

      <element name="zipfileset" type="org.apache.tools.ant.types.ZipFileSet"
               briefType="ZipFileset"
               required="NOTDEFINED">
        <short-description><![CDATA[Adds a set of files that can be
 read from an archive and be given a prefix/fullpath.]]></short-description>
        <description>
          <![CDATA[Adds a set of files that can be
 read from an archive and be given a prefix/fullpath.]]>
        </description>
      </element>

    </elements>

  </structure>

</task>
</tasks>
