<?xml version="1.0" encoding="UTF-8"?>

<tasks>

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

  
    <short-description>Build a sub-project.</short-description>
  
    <description>
    Build a sub-project.

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="antfile" type="java.lang.String" briefType="String" required="no">
        
          <short-description>The buildfile to use.</short-description>
        
          <description>
          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="no">
        
          <short-description>The directory to use as a base directory for the new Ant project.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, pass all properties to the new Ant project.</short-description>
        
          <description>
          If true, pass all properties to the new Ant project.
 Defaults to true.
        </description>
      
        </attribute>
      
        <attribute name="inheritrefs" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, pass all references to the new Ant project.</short-description>
        
          <description>
          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="no">
        
          <short-description>Filename to write the output to.</short-description>
        
          <description>
          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="no">
        
          <short-description>The target of the new Ant project to execute.</short-description>
        
          <description>
          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>Reference element identifying a data type to carry
 over to the new project.</short-description>
        
          <description>
          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>Property to pass to the new project.</short-description>
        
          <description>
          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>Call another target in the same project.</short-description>
  
    <description>
    Call another target in the same project.

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

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

 &lt;p&gt;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="no">
        
          <short-description>If true, pass all properties to the new Ant project.</short-description>
        
          <description>
          If true, pass all properties to the new Ant project.
 Defaults to true.
        </description>
      
        </attribute>
      
        <attribute name="inheritrefs" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, pass all references to the new Ant project.</short-description>
        
          <description>
          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="yes">
        
          <short-description>Target to execute, required.</short-description>
        
          <description>
          Target to execute, required.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="reference" type="org.apache.tools.ant.taskdefs.Ant.Reference" briefType="" required="NOTDEFINED">
        
          <short-description>Reference element identifying a data type to carry
 over to the invoked target.</short-description>
        
          <description>
          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>Property to pass to the invoked target.</short-description>
        
          <description>
          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>Invokes the ANTLR Translator generator on a grammar file.</short-description>
  
    <description>
    Invokes the ANTLR Translator generator on a grammar file.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="debug" type="boolean" briefType="boolean" required="no">
        
          <short-description>Flag to enable ParseView debugging.</short-description>
        
          <description>
          Sets a flag to enable ParseView debugging
        </description>
      
        </attribute>
      
        <attribute name="diagnostic" type="boolean" briefType="boolean" required="no">
        
          <short-description>Flag to emit diagnostic text.</short-description>
        
          <description>
          Sets a flag to emit diagnostic text
        </description>
      
        </attribute>
      
        <attribute name="dir" type="java.io.File" briefType="File" required="no">
        
          <short-description>The working directory of the process.</short-description>
        
          <description>
          The working directory of the process
        </description>
      
        </attribute>
      
        <attribute name="glib" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Sets an optional super grammar file.</short-description>
        
          <description>
          Sets an optional super grammar file.
        </description>
      
        </attribute>
      
        <attribute name="html" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, emit html.</short-description>
        
          <description>
          If true, emit html
        </description>
      
        </attribute>
      
        <attribute name="outputdirectory" type="java.io.File" briefType="File" required="no">
        
          <short-description>The directory to write the generated files to.</short-description>
        
          <description>
          The directory to write the generated files to.
        </description>
      
        </attribute>
      
        <attribute name="target" type="java.io.File" briefType="File" required="yes">
        
          <short-description>The grammar file to process.</short-description>
        
          <description>
          The grammar file to process.
        </description>
      
        </attribute>
      
        <attribute name="trace" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, enables all tracing.</short-description>
        
          <description>
          If true, enables all tracing.
        </description>
      
        </attribute>
      
        <attribute name="tracelexer" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, enables lexer tracing.</short-description>
        
          <description>
          If true, enables lexer tracing.
        </description>
      
        </attribute>
      
        <attribute name="traceparser" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, enables parser tracing.</short-description>
        
          <description>
          If true, enables parser tracing.
        </description>
      
        </attribute>
      
        <attribute name="tracetreewalker" type="boolean" briefType="boolean" required="no">
        
          <short-description>Flag to allow the user to enable tree walker tracing.</short-description>
        
          <description>
          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>Adds a classpath to be set
 because a directory might be given for Antlr debug.</short-description>
        
          <description>
          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>Adds a new JVM argument.</short-description>
        
          <description>
          Adds a new JVM argument.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="output" type="java.io.File" briefType="File" required="yes">
        
          <short-description>The output file.</short-description>
        
          <description>
          The output file.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



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

  
    <short-description>Executes a given command, supplying a set of files as arguments.</short-description>
  
    <description>
    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>Whether output should be appended to or overwrite an existing file.</short-description>
        
          <description>
          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="yes, if you specify a nested mapper">
        
          <short-description>The directory where target files are to be placed.</short-description>
        
          <description>
          The directory where target files are to be placed.
        </description>
      
        </attribute>
      
        <attribute name="dir" type="java.io.File" briefType="File" required="no">
        
          <short-description>The working directory of the process.</short-description>
        
          <description>
          The working directory of the process.
        </description>
      
        </attribute>
      
        <attribute name="executable" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>The command to execute.</short-description>
        
          <description>
          The command to execute.
        </description>
      
        </attribute>
      
        <attribute name="failifexecutionfails" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Stop the build if program cannot be started.</short-description>
        
          <description>
          Stop the build if program cannot be started. Defaults to true.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no">
        
          <short-description>Fail if the command exits with a non-zero return code.</short-description>
        
          <description>
          Fail if the command exits with a non-zero return code.
        </description>
      
        </attribute>
      
        <attribute name="newenvironment" type="boolean" briefType="boolean" required="no, default is false">
        
          <short-description>Do not propagate old environment when new environment variables are specified.</short-description>
        
          <description>
          Do not propagate old environment when new environment variables are specified.
        </description>
      
        </attribute>
      
        <attribute name="os" type="java.lang.String" briefType="String" required="no">
        
          <short-description>List of operating systems on which the command may be executed.</short-description>
        
          <description>
          List of operating systems on which the command may be executed.
        </description>
      
        </attribute>
      
        <attribute name="output" type="java.io.File" briefType="File" required="no">
        
          <short-description>File the output of the process is redirected to.</short-description>
        
          <description>
          File the output of the process is redirected to.
        </description>
      
        </attribute>
      
        <attribute name="outputproperty" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Property name whose value should be set to the output of
 the process.</short-description>
        
          <description>
          Property name whose value should be set to the output of
 the process.
        </description>
      
        </attribute>
      
        <attribute name="parallel" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, run the command only once, appending all files as arguments.</short-description>
        
          <description>
          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="no, default is false">
        
          <short-description>Whether the filenames should be passed on the command line as
 absolute or relative pathnames.</short-description>
        
          <description>
          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>The name of a property in which the return code of the
 command should be stored.</short-description>
        
          <description>
          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="no, default is false">
        
          <short-description>If no source files have been found or are newer than their
 corresponding target files, do not run the command.</short-description>
        
          <description>
          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="no, default is file">
        
          <short-description>Whether the command works only on files, directories or both?.</short-description>
        
          <description>
          Whether the command works only on files, directories or both?
        </description>
      
        </attribute>
      
        <attribute name="vmlauncher" type="boolean" briefType="boolean" required="no, default is true">
        
          <short-description>If true, launch new process with VM, otherwise use the OS's shell.</short-description>
        
          <description>
          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>Add an environment variable to the launched process.</short-description>
        
          <description>
          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>Source files to operate upon.</short-description>
        
          <description>
          Source files to operate upon.
        </description>
      
        </element>

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

      
        <element name="mapper" type="org.apache.tools.ant.types.Mapper" briefType="Mapper" required="NOTDEFINED">
        
          <short-description>Mapper to use for mapping source files to target files.</short-description>
        
          <description>
          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>Marker that indicates where the name of the source file should
 be put on the command line.</short-description>
        
          <description>
          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>Marker that indicates where the name of the target file should
 be put on the command line.</short-description>
        
          <description>
          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>Will set the given property if the requested resource is available at runtime.</short-description>
  
    <description>
    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="yes">
        
          <short-description>Classname of a class which must be available to set the given 
 property.</short-description>
        
          <description>
          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="no">
        
          <short-description>Classpath to be used when searching for classes and resources.</short-description>
        
          <description>
          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="no">
        
          <short-description>Classpath by reference.</short-description>
        
          <description>
          Set the classpath by reference.
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="">
        
          <short-description>File which must be present in the file system to set the given
 property.</short-description>
        
          <description>
          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="no">
        
          <short-description>Path to use when looking for a file.</short-description>
        
          <description>
          Set the path to use when looking for a file.
        </description>
      
        </attribute>
      
        <attribute name="ignoresystemclasses" type="boolean" briefType="boolean" required="no">
        
          <short-description>Set whether the search for classes should ignore the runtime classes and
 just use the given classpath.</short-description>
        
          <description>
          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="yes">
        
          <short-description>Name of the property which will be set if the particular resource
 is available.</short-description>
        
          <description>
          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="">
        
          <short-description>Name of a Java resource which is required to set the property.</short-description>
        
          <description>
          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="no">
        
          <short-description>Set what type of file is required - either directory or file.</short-description>
        
          <description>
          Set what type of file is required - either directory or file.
        </description>
      
        </attribute>
      
        <attribute name="value" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Value to be given to the property if the desired resource is
 available.</short-description>
        
          <description>
          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>Classpath to be used when searching for classes and resources.</short-description>
        
          <description>
          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>Path to search for file resources.</short-description>
        
          <description>
          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>Sets a property to the base name of a specified file, optionally minus a suffix.</short-description>
  
    <description>
    Sets a property to the base name of a specified file, optionally minus a
 suffix.

 This task can accept the following attributes:
 &lt;ul&gt;
 &lt;li&gt;file
 &lt;li&gt;property
 &lt;li&gt;suffix
 &lt;/ul&gt;
 The &lt;b&gt;file&lt;/b&gt; and &lt;b&gt;property&lt;/b&gt; attributes are required. The
 &lt;b&gt;suffix&lt;/b&gt; attribute can be specified either with or without
 the &amp;quot;.&amp;quot;, and the result will be the same (ie., the
 returned file name will be minus the .suffix).
 &lt;p&gt;
 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="yes">
        
          <short-description>File or directory to get base name from.</short-description>
        
          <description>
          File or directory to get base name from.
        </description>
      
        </attribute>
      
        <attribute name="property" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>Property to set base name to.</short-description>
        
          <description>
          Property to set base name to.
        </description>
      
        </attribute>
      
        <attribute name="suffix" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Optional suffix to remove from base name.</short-description>
        
          <description>
          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>Generates a Borland Application Server 4.5 client JAR using as input the EJB JAR file.</short-description>
  
    <description>
    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>Path to use for classpath.</short-description>
        
          <description>
          Path to use for classpath.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="NOTDEFINED">
        
          <short-description>Reference to existing path, to use as a classpath.</short-description>
        
          <description>
          Reference to existing path, to use as a classpath.
        </description>
      
        </attribute>
      
        <attribute name="clientjar" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Client JAR file name.</short-description>
        
          <description>
          Client JAR file name.
        </description>
      
        </attribute>
      
        <attribute name="debug" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, turn on the debug mode for each of the Borland tools launched.</short-description>
        
          <description>
          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>EJB JAR file.</short-description>
        
          <description>
          EJB JAR file.
        </description>
      
        </attribute>
      
        <attribute name="mode" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Command launching mode: java or fork.</short-description>
        
          <description>
          Command launching mode: java or fork.
        </description>
      
        </attribute>
      
        <attribute name="version" type="int" briefType="int" required="NOTDEFINED">
        
          <short-description>No description.</short-description>
        
          <description>
        </description>
      
        </attribute>
    
      </attributes>

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

    
      </elements>

  
    </structure>


  </task>



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

  
    <short-description>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>
    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="no; defaults to &quot;build.number&quot;">
        
          <short-description>The file in which the build number is stored.</short-description>
        
          <description>
          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>Expands a file that has been compressed with the BZIP2 algorithm.</short-description>
  
    <description>
    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>The destination file or directory; optional.</short-description>
        
          <description>
          The destination file or directory; optional.
        </description>
      
        </attribute>
      
        <attribute name="src" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>The file to expand; required.</short-description>
        
          <description>
          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>Compresses a file with the BZIP2 algorithm.</short-description>
  
    <description>
    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>The file to compress; required.</short-description>
        
          <description>
          the file to compress; required.
        </description>
      
        </attribute>
      
        <attribute name="zipfile" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>The required destination file.</short-description>
        
          <description>
          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>Create a CAB archive.</short-description>
  
    <description>
    Create a CAB archive.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="basedir" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Base directory to look in for files to CAB.</short-description>
        
          <description>
          Base directory to look in for files to CAB.
        </description>
      
        </attribute>
      
        <attribute name="cabfile" type="java.io.File" briefType="File" required="yes">
        
          <short-description>The name/location of where to create the .cab file.</short-description>
        
          <description>
          The name/location of where to create the .cab file.
        </description>
      
        </attribute>
      
        <attribute name="compress" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, compress the files otherwise only store them.</short-description>
        
          <description>
          If true, compress the files otherwise only store them.
        </description>
      
        </attribute>
      
        <attribute name="options" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Sets additional cabarc options that are not supported directly.</short-description>
        
          <description>
          Sets additional cabarc options that are not supported directly.
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, display cabarc output.</short-description>
        
          <description>
          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>Adds a set of files to archive.</short-description>
        
          <description>
          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>Performs ClearCase checkin.</short-description>
  
    <description>
    Performs ClearCase checkin.

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

  
    <structure>

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

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

  
    <structure>

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

  
    <structure>

    
      <attributes>
      
        <attribute name="ccmdir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where the ccm executable is located.</short-description>
        
          <description>
          Set the directory where the ccm executable is located.
        </description>
      
        </attribute>
      
        <attribute name="comment" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Specifies a comment.</short-description>
        
          <description>
          Specifies a comment.
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Path to the file that the command will operate on.</short-description>
        
          <description>
          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>Specifies the task number used to check
 in the file (may use 'default').</short-description>
        
          <description>
          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>Performs Continuus Checkin Default task command.</short-description>
  
    <description>
    Performs Continuus Checkin Default task command.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="ccmdir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where the ccm executable is located.</short-description>
        
          <description>
          Set the directory where the ccm executable is located.
        </description>
      
        </attribute>
      
        <attribute name="comment" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Specifies a comment.</short-description>
        
          <description>
          Specifies a comment.
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Path to the file that the command will operate on.</short-description>
        
          <description>
          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>Specifies the task number used to check
 in the file (may use 'default').</short-description>
        
          <description>
          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>Performs Continuus checkout command.</short-description>
  
    <description>
    Performs Continuus checkout command.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="ccmdir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where the ccm executable is located.</short-description>
        
          <description>
          Set the directory where the ccm executable is located.
        </description>
      
        </attribute>
      
        <attribute name="comment" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Specifies a comment.</short-description>
        
          <description>
          Specifies a comment.
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Path to the file that the command will operate on.</short-description>
        
          <description>
          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>Specifies the task number used to check
 in the file (may use 'default').</short-description>
        
          <description>
          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>Creates new Continuus ccm task and sets it as the default.</short-description>
  
    <description>
    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>Directory where the ccm executable is located.</short-description>
        
          <description>
          Set the directory where the ccm executable is located.
        </description>
      
        </attribute>
      
        <attribute name="comment" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Specifies a comment.</short-description>
        
          <description>
          Specifies a comment.
        </description>
      
        </attribute>
      
        <attribute name="platform" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Specifies the target platform.</short-description>
        
          <description>
          Specifies the target platform.
        </description>
      
        </attribute>
      
        <attribute name="release" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Specify the CCM release.</short-description>
        
          <description>
          Specify the CCM release.
        </description>
      
        </attribute>
      
        <attribute name="resolver" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Specifies the resolver.</short-description>
        
          <description>
          Specifies the resolver.
        </description>
      
        </attribute>
      
        <attribute name="subsystem" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Specifies the subsystem.</short-description>
        
          <description>
          Specifies the subsystem.
        </description>
      
        </attribute>
      
        <attribute name="task" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Specifies the task number used to checkin
 the file (may use 'default').</short-description>
        
          <description>
          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>Task allows to reconfigure a project, recurcively or not</short-description>
  
    <description>
    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>Directory where the ccm executable is located.</short-description>
        
          <description>
          Set the directory where the ccm executable is located.
        </description>
      
        </attribute>
      
        <attribute name="ccmproject" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Ccm project on which the operation is applied.</short-description>
        
          <description>
          Sets the ccm project on which the operation is applied.
        </description>
      
        </attribute>
      
        <attribute name="recurse" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, recurse on subproject (default false).</short-description>
        
          <description>
          If true, recurse on subproject (default false).
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, do a verbose reconfigure operation (default false).</short-description>
        
          <description>
          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>Performs ClearCase UnCheckout command.</short-description>
  
    <description>
    Performs ClearCase UnCheckout command.

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

  
    <structure>

    
      <attributes>
      
        <attribute name="cleartooldir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where the cleartool executable is located.</short-description>
        
          <description>
          Set the directory where the cleartool executable is located.
        </description>
      
        </attribute>
      
        <attribute name="keepcopy" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, keep a copy of the file with a .keep extension.</short-description>
        
          <description>
          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>Path to the item in a ClearCase view to operate on.</short-description>
        
          <description>
          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>Performs a ClearCase Update command.</short-description>
  
    <description>
    Performs a ClearCase Update command.

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

  
    <structure>

    
      <attributes>
      
        <attribute name="cleartooldir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where the cleartool executable is located.</short-description>
        
          <description>
          Set the directory where the cleartool executable is located.
        </description>
      
        </attribute>
      
        <attribute name="currenttime" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, modification time should be written as the current time.</short-description>
        
          <description>
          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>If true, displays a graphical dialog during the update.</short-description>
        
          <description>
          If true, displays a graphical dialog during the update.
        </description>
      
        </attribute>
      
        <attribute name="log" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Log file where cleartool records
 the status of the command.</short-description>
        
          <description>
          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>If true, overwrite hijacked files.</short-description>
        
          <description>
          If true, overwrite hijacked files.
        </description>
      
        </attribute>
      
        <attribute name="preservetime" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, modification time should be preserved from the VOB time.</short-description>
        
          <description>
          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>If true, hijacked files are renamed with a .keep extension.</short-description>
        
          <description>
          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>Path to the item in a ClearCase view to operate on.</short-description>
        
          <description>
          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>Used to create or verify file checksums.</short-description>
  
    <description>
    Used to create or verify file checksums.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="algorithm" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Specifies the algorithm to be used to compute the checksum.</short-description>
        
          <description>
          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="one of either file or      at least one nested fileset element.">
        
          <short-description>File for which the checksum is to be calculated.</short-description>
        
          <description>
          Sets the file for which the checksum is to be calculated.
        </description>
      
        </attribute>
      
        <attribute name="fileext" type="java.lang.String" briefType="String" required="no">
        
          <short-description>File extension that is be to used to
 create or identify destination file.</short-description>
        
          <description>
          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="no">
        
          <short-description>Whether or not to overwrite existing file irrespective of 
 whether it is newer than
 the source file.</short-description>
        
          <description>
          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="no">
        
          <short-description>Property to hold the generated checksum.</short-description>
        
          <description>
          Sets the property to hold the generated checksum.
        </description>
      
        </attribute>
      
        <attribute name="provider" type="java.lang.String" briefType="String" required="no">
        
          <short-description>MessageDigest algorithm provider to be used
 to calculate the checksum.</short-description>
        
          <description>
          Sets the MessageDigest algorithm provider to be used
 to calculate the checksum.
        </description>
      
        </attribute>
      
        <attribute name="readbuffersize" type="int" briefType="int" required="no">
        
          <short-description>The size of the read buffer to use.</short-description>
        
          <description>
          The size of the read buffer to use.
        </description>
      
        </attribute>
      
        <attribute name="verifyproperty" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Verify property.</short-description>
        
          <description>
          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>Files to generate checksums for.</short-description>
        
          <description>
          Files to generate checksums for.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



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

  
    <short-description>Chmod equivalent for unix-like environments.</short-description>
  
    <description>
    Chmod equivalent for unix-like environments.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="append" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Whether output should be appended to or overwrite an existing file.</short-description>
        
          <description>
          Whether output should be appended to or overwrite an existing file.
 Defaults to false.
        </description>
      
        </attribute>
      
        <attribute name="defaultexcludes" type="boolean" briefType="boolean" required="no">
        
          <short-description>Sets whether default exclusions should be used or not.</short-description>
        
          <description>
          Sets whether default exclusions should be used or not.
        </description>
      
        </attribute>
      
        <attribute name="dest" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>The directory where target files are to be placed.</short-description>
        
          <description>
          The directory where target files are to be placed.
        </description>
      
        </attribute>
      
        <attribute name="dir" type="java.io.File" briefType="File" required="">
        
          <short-description>The directory which holds the files whose permissions must be changed.</short-description>
        
          <description>
          The directory which holds the files whose permissions must be changed.
        </description>
      
        </attribute>
      
        <attribute name="excludes" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Set of exclude patterns.</short-description>
        
          <description>
          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>The command to execute.</short-description>
        
          <description>
          The command to execute.
        </description>
      
        </attribute>
      
        <attribute name="failifexecutionfails" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Stop the build if program cannot be started.</short-description>
        
          <description>
          Stop the build if program cannot be started. Defaults to true.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Fail if the command exits with a non-zero return code.</short-description>
        
          <description>
          Fail if the command exits with a non-zero return code.
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="exactly one of the two or nested &lt;fileset&gt; elements.">
        
          <short-description>The file or single directory of which the permissions must be changed.</short-description>
        
          <description>
          The file or single directory of which the permissions must be changed.
        </description>
      
        </attribute>
      
        <attribute name="includes" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Set of include patterns.</short-description>
        
          <description>
          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>Do not propagate old environment when new environment variables are specified.</short-description>
        
          <description>
          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>List of operating systems on which the command may be executed.</short-description>
        
          <description>
          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>File the output of the process is redirected to.</short-description>
        
          <description>
          File the output of the process is redirected to.
        </description>
      
        </attribute>
      
        <attribute name="outputproperty" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Property name whose value should be set to the output of
 the process.</short-description>
        
          <description>
          Property name whose value should be set to the output of
 the process.
        </description>
      
        </attribute>
      
        <attribute name="parallel" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, run the command only once, appending all files as arguments.</short-description>
        
          <description>
          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="yes">
        
          <short-description>The new permissions.</short-description>
        
          <description>
          The new permissions.
        </description>
      
        </attribute>
      
        <attribute name="relative" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Whether the filenames should be passed on the command line as
 absolute or relative pathnames.</short-description>
        
          <description>
          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>The name of a property in which the return code of the
 command should be stored.</short-description>
        
          <description>
          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>If no source files have been found or are newer than their
 corresponding target files, do not run the command.</short-description>
        
          <description>
          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="no, default is file">
        
          <short-description>Whether the command works only on files, directories or both?.</short-description>
        
          <description>
          Whether the command works only on files, directories or both?
        </description>
      
        </attribute>
      
        <attribute name="vmlauncher" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, launch new process with VM, otherwise use the OS's shell.</short-description>
        
          <description>
          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>Add an environment variable to the launched process.</short-description>
        
          <description>
          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>Source files to operate upon.</short-description>
        
          <description>
          Source files to operate upon.
        </description>
      
        </element>

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

      
        <element name="exclude" type="org.apache.tools.ant.types.PatternSet.NameEntry" briefType="" required="NOTDEFINED">
        
          <short-description>Add a name entry on the exclude list.</short-description>
        
          <description>
          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>Add a name entry on the include list.</short-description>
        
          <description>
          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>Mapper to use for mapping source files to target files.</short-description>
        
          <description>
          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>Add a set of patterns.</short-description>
        
          <description>
          Add a set of patterns.
        </description>
      
        </element>

      
        <element name="srcfile" type="org.apache.tools.ant.types.Commandline.Marker" briefType="" required="NOTDEFINED">
        
          <short-description>Marker that indicates where the name of the source file should
 be put on the command line.</short-description>
        
          <description>
          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>Marker that indicates where the name of the target file should
 be put on the command line.</short-description>
        
          <description>
          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>This class contains the 'concat' task, used to concatenate a series of files into a single stream.</short-description>
  
    <description>
    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:

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

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="append" type="boolean" briefType="boolean" required="no">
        
          <short-description>Behavior when the destination file exists.</short-description>
        
          <description>
          Sets the behavior when the destination file exists. If set to
 &lt;code&gt;true&lt;/code&gt; the stream data will be appended to the
 existing file, otherwise the existing file will be
 overwritten. Defaults to &lt;code&gt;false&lt;/code&gt;.
        </description>
      
        </attribute>
      
        <attribute name="destfile" type="java.io.File" briefType="File" required="no     ">
        
          <short-description>Destination file, or uses the console if not specified.</short-description>
        
          <description>
          Sets the destination file, or uses the console if not specified.
        </description>
      
        </attribute>
      
        <attribute name="encoding" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Encoding for the input files, used when displaying the
 data via the console.</short-description>
        
          <description>
          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>List of files to concatenate.</short-description>
        
          <description>
          List of files to concatenate.
        </description>
      
        </element>

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

    
      </elements>

      
      <body>
        
        <description>
          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>Task to set a property conditionally using &amp;lt;uptodate&amp;gt;, &amp;lt;available&amp;gt;, and many other supported conditions.</short-description>
  
    <description>
    Task to set a property conditionally using &amp;lt;uptodate&amp;gt;, &amp;lt;available&amp;gt;,
 and many other supported conditions.

 &lt;p&gt;This task supports boolean logic as well as pluggable conditions
 to decide, whether a property should be set.&lt;/p&gt;

 &lt;p&gt;This task does not extend Task to take advantage of
 ConditionBase.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="property" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>The name of the property to set.</short-description>
        
          <description>
          The name of the property to set. Required.
        </description>
      
        </attribute>
      
        <attribute name="value" type="java.lang.String" briefType="String" required="no">
        
          <short-description>The value for the property to set, if condition evaluates to true.</short-description>
        
          <description>
          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>Add an &amp;lt;and&amp;gt; condition "container".</short-description>
        
          <description>
          Add an &amp;lt;and&amp;gt; condition "container".
        </description>
      
        </element>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
      </elements>

  
    </structure>


  </task>



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

  
    <short-description>Copies a file or directory to a new file or directory.</short-description>
  
    <description>
    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.&lt;/p&gt;

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

  
    <structure>

    
      <attributes>
      
        <attribute name="encoding" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Character encoding.</short-description>
        
          <description>
          Sets the character encoding
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no; defaults to true.">
        
          <short-description>If false, note errors to the output but keep going.</short-description>
        
          <description>
          If false, note errors to the output but keep going.
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="yes, unless a nested      &lt;fileset&gt; element is used.">
        
          <short-description>Single source file to copy.</short-description>
        
          <description>
          Sets a single source file to copy.
        </description>
      
        </attribute>
      
        <attribute name="filtering" type="boolean" briefType="boolean" required="no; defaults to false.">
        
          <short-description>If true, enables filtering.</short-description>
        
          <description>
          If true, enables filtering.
        </description>
      
        </attribute>
      
        <attribute name="flatten" type="boolean" briefType="boolean" required="no; defaults to false.">
        
          <short-description>When copying directory trees, the files can be "flattened"
 into a single directory.</short-description>
        
          <description>
          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="no; defaults to true.">
        
          <short-description>Used to copy empty directories.</short-description>
        
          <description>
          Used to copy empty directories.
        </description>
      
        </attribute>
      
        <attribute name="overwrite" type="boolean" briefType="boolean" required="no; defaults to false.">
        
          <short-description>Overwrite any existing destination file(s).</short-description>
        
          <description>
          Overwrite any existing destination file(s).
        </description>
      
        </attribute>
      
        <attribute name="preservelastmodified" type="boolean" briefType="boolean" required="no; defaults to false.">
        
          <short-description>Give the copied files the same last modified time as the original files.</short-description>
        
          <description>
          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="">
        
          <short-description>Destination directory.</short-description>
        
          <description>
          Sets the destination directory.
        </description>
      
        </attribute>
      
        <attribute name="tofile" type="java.io.File" briefType="File" required="with the file        attribute, either tofile or todir can be used.        with nested &lt;fileset&gt; elements, if the set of files        is greater than 1, or if only the dir attribute is        specified in the &lt;fileset&gt;, or if the        file attribute is also specified, then only        todir is allowed.">
        
          <short-description>Destination file.</short-description>
        
          <description>
          Sets the destination file.
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="no; defaults to false.">
        
          <short-description>Used to force listing of all names of copied files.</short-description>
        
          <description>
          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>Adds a set of files to copy.</short-description>
        
          <description>
          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>Adds a FilterChain.</short-description>
        
          <description>
          Adds a FilterChain.
        </description>
      
        </element>

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

      
        <element name="mapper" type="org.apache.tools.ant.types.Mapper" briefType="Mapper" required="NOTDEFINED">
        
          <short-description>Defines the mapper to map source to destination files.</short-description>
        
          <description>
          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>Copies a directory.</short-description>
  
    <description>
    Copies a directory.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="dest" type="java.io.File" briefType="File" required="yes">
        
          <short-description>No description.</short-description>
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="filtering" type="boolean" briefType="boolean" required="no">
        
          <short-description>No description.</short-description>
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="flatten" type="boolean" briefType="boolean" required="no">
        
          <short-description>No description.</short-description>
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="forceoverwrite" type="boolean" briefType="boolean" required="no">
        
          <short-description>No description.</short-description>
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="src" type="java.io.File" briefType="File" required="yes">
        
          <short-description>No description.</short-description>
        
          <description>
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



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

  
    <short-description>Copies a file.</short-description>
  
    <description>
    Copies a file.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="dest" type="java.io.File" briefType="File" required="yes">
        
          <short-description>No description.</short-description>
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="filtering" type="java.lang.String" briefType="String" required="no">
        
          <short-description>No description.</short-description>
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="forceoverwrite" type="boolean" briefType="boolean" required="no">
        
          <short-description>No description.</short-description>
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="src" type="java.io.File" briefType="File" required="yes">
        
          <short-description>No description.</short-description>
        
          <description>
        </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>Compiles C# source into executables or modules.</short-description>
  
    <description>
    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. &lt;p&gt;

  All parameters are optional: &amp;lt;csc/&amp;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. &lt;p&gt;

  The task is a directory based task, so attributes like &lt;b&gt;includes="*.cs"
  &lt;/b&gt; and &lt;b&gt;excludes="broken.cs"&lt;/b&gt; 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 &lt;b&gt;'outfile'&lt;/b&gt; seems prudent. &lt;p&gt;

  &lt;p&gt;

  TODO
  &lt;ol&gt;
    &lt;li&gt; is incremental build still broken in beta-1?
    &lt;li&gt; is Win32Icon broken?
    &lt;li&gt; all the missing options
  &lt;/ol&gt;
  &lt;p&gt;

  History
  &lt;Table&gt;

    &lt;tr&gt;

      &lt;td&gt;
        0.3
      &lt;/td&gt;

      &lt;td&gt;
        Beta 1 edition
      &lt;/td&gt;

      &lt;td&gt;
        To avoid having to remember which assemblies to include, the task
        automatically refers to the main dotnet libraries in Beta1.
      &lt;/tr&gt;

      &lt;tr&gt;

        &lt;td&gt;
          0.2
        &lt;/td&gt;

        &lt;td&gt;
          Slightly different
        &lt;/td&gt;

        &lt;td&gt;
          Split command execution to a separate class;
        &lt;/tr&gt;

        &lt;tr&gt;

          &lt;td&gt;
            0.1
          &lt;/td&gt;

          &lt;td&gt;
            "I can't believe it's so rudimentary"
          &lt;/td&gt;

          &lt;td&gt;
            First pass; minimal builds only support;
          &lt;/tr&gt;

        &lt;/table&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="additionalmodules" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Semicolon separated list of modules to refer to.</short-description>
        
          <description>
          Semicolon separated list of modules to refer to.
        </description>
      
        </attribute>
      
        <attribute name="debug" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Debug flag on or off.</short-description>
        
          <description>
          set the debug flag on or off.
        </description>
      
        </attribute>
      
        <attribute name="definitions" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Semicolon separated list of defined constants.</short-description>
        
          <description>
          Semicolon separated list of defined constants.
        </description>
      
        </attribute>
      
        <attribute name="destdir" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Destination directory of files to be compiled.</short-description>
        
          <description>
          Set the destination directory of files to be compiled.
        </description>
      
        </attribute>
      
        <attribute name="destfile" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Name of exe/library to create.</short-description>
        
          <description>
          Set the name of exe/library to create.
        </description>
      
        </attribute>
      
        <attribute name="docfile" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>File for generated XML documentation.</short-description>
        
          <description>
          file for generated XML documentation
        </description>
      
        </attribute>
      
        <attribute name="extraoptions" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Any extra options which are not explicitly supported
 by this task.</short-description>
        
          <description>
          Any extra options which are not explicitly supported
 by this task.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, fail on compilation errors.</short-description>
        
          <description>
          If true, fail on compilation errors.
        </description>
      
        </attribute>
      
        <attribute name="filealign" type="int" briefType="int" required="NOTDEFINED">
        
          <short-description>File alignment.</short-description>
        
          <description>
          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>If true, print the full path of files on errors.</short-description>
        
          <description>
          If true, print the full path of files on errors.
        </description>
      
        </attribute>
      
        <attribute name="includedefaultreferences" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>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>
          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>Incremental compilation flag on or off.</short-description>
        
          <description>
          set the incremental compilation flag on or off.
        </description>
      
        </attribute>
      
        <attribute name="mainclass" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Name of main class for executables.</short-description>
        
          <description>
          Sets the name of main class for executables.
        </description>
      
        </attribute>
      
        <attribute name="noconfig" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>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>
          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>If true, enables optimization flag.</short-description>
        
          <description>
          If true, enables optimization flag.
        </description>
      
        </attribute>
      
        <attribute name="outputfile" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Output file.</short-description>
        
          <description>
          Set the output file
        </description>
      
        </attribute>
      
        <attribute name="referencefiles" type="org.apache.tools.ant.types.Path" briefType="Path" required="NOTDEFINED">
        
          <short-description>Path of references to include.</short-description>
        
          <description>
          Path of references to include.
 Wildcards should work.
        </description>
      
        </attribute>
      
        <attribute name="references" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Semicolon separated list of DLLs to refer to.</short-description>
        
          <description>
          Semicolon separated list of DLLs to refer to.
        </description>
      
        </attribute>
      
        <attribute name="srcdir" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Source directory of the files to be compiled.</short-description>
        
          <description>
          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>Type of target.</short-description>
        
          <description>
          Set the type of target.
        </description>
      
        </attribute>
      
        <attribute name="unsafe" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, enables the unsafe keyword.</short-description>
        
          <description>
          If true, enables the unsafe keyword.
        </description>
      
        </attribute>
      
        <attribute name="utf8output" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, require all compiler output to be in UTF8 format.</short-description>
        
          <description>
          If true, require all compiler output to be in UTF8 format.
        </description>
      
        </attribute>
      
        <attribute name="warnlevel" type="int" briefType="int" required="NOTDEFINED">
        
          <short-description>Level of warning currently between 1 and 4
 with 4 being the strictest.</short-description>
        
          <description>
          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>Filename of icon to include.</short-description>
        
          <description>
          Set the filename of icon to include.
        </description>
      
        </attribute>
      
        <attribute name="win32res" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Filename of a win32 resource (.RES) file to include.</short-description>
        
          <description>
          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>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>
    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="no, default to &quot;false&quot;.">
        
          <short-description>Whether to append output/error when redirecting to a file.</short-description>
        
          <description>
          Whether to append output/error when redirecting to a file.
        </description>
      
        </attribute>
      
        <attribute name="command" type="java.lang.String" briefType="String" required="no, default &quot;checkout&quot;.">
        
          <short-description>The CVS command to execute.</short-description>
        
          <description>
          The CVS command to execute.
        </description>
      
        </attribute>
      
        <attribute name="compression" type="boolean" briefType="boolean" required="no. defaults to false.">
        
          <short-description>If true, this is the same as compressionlevel="3".</short-description>
        
          <description>
          If true, this is the same as compressionlevel="3".
        </description>
      
        </attribute>
      
        <attribute name="compressionlevel" type="int" briefType="int" required="no. defaults to no compression.">
        
          <short-description>If set to a value 1-9 it adds -zN to the cvs command line, else
 it disables compression.</short-description>
        
          <description>
          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="no">
        
          <short-description>The CVSROOT variable.</short-description>
        
          <description>
          The CVSROOT variable.
        </description>
      
        </attribute>
      
        <attribute name="cvsrsh" type="java.lang.String" briefType="String" required="no">
        
          <short-description>The CVS_RSH variable.</short-description>
        
          <description>
          The CVS_RSH variable.
        </description>
      
        </attribute>
      
        <attribute name="date" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Use the most recent revision no later than the given date.</short-description>
        
          <description>
          Use the most recent revision no later than the given date.
        </description>
      
        </attribute>
      
        <attribute name="dest" type="java.io.File" briefType="File" required="no, default is project&apos;s basedir.">
        
          <short-description>The directory where the checked out files should be placed.</short-description>
        
          <description>
          The directory where the checked out files should be placed.
        </description>
      
        </attribute>
      
        <attribute name="error" type="java.io.File" briefType="File" required="no, default error to ant log as msg_warn.">
        
          <short-description>The file to direct standard error from the command.</short-description>
        
          <description>
          The file to direct standard error from the command.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no">
        
          <short-description>Stop the build process if the command exits with
 a return code other than 0.</short-description>
        
          <description>
          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="no, default to &quot;false&quot;">
        
          <short-description>If true, report only and don't change any files.</short-description>
        
          <description>
          If true, report only and don't change any files.
        </description>
      
        </attribute>
      
        <attribute name="output" type="java.io.File" briefType="File" required="no, default output to ant log as msg_info.">
        
          <short-description>The file to direct standard output from the command.</short-description>
        
          <description>
          The file to direct standard output from the command.
        </description>
      
        </attribute>
      
        <attribute name="package" type="java.lang.String" briefType="String" required="no">
        
          <short-description>The package/module to operate upon.</short-description>
        
          <description>
          The package/module to operate upon.
        </description>
      
        </attribute>
      
        <attribute name="passfile" type="java.io.File" briefType="File" required="no, default file ~/.cvspass.">
        
          <short-description>Password file to read passwords from.</short-description>
        
          <description>
          Password file to read passwords from.
        </description>
      
        </attribute>
      
        <attribute name="port" type="int" briefType="int" required="no, default port 2401.">
        
          <short-description>Port used by CVS to communicate with the server.</short-description>
        
          <description>
          Port used by CVS to communicate with the server.
        </description>
      
        </attribute>
      
        <attribute name="quiet" type="boolean" briefType="boolean" required="no, default &quot;false&quot;">
        
          <short-description>If true, suppress informational messages.</short-description>
        
          <description>
          If true, suppress informational messages.
        </description>
      
        </attribute>
      
        <attribute name="tag" type="java.lang.String" briefType="String" required="no">
        
          <short-description>The tag of the package/module to operate upon.</short-description>
        
          <description>
          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>Adds direct command-line to execute.</short-description>
        
          <description>
          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>Examines the output of cvs log and group related changes together.</short-description>
  
    <description>
    Examines the output of cvs log and group related changes together.

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

  
    <structure>

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

    
      <elements>
      
        <element name="fileset" type="org.apache.tools.ant.types.FileSet" briefType="Fileset" required="NOTDEFINED">
        
          <short-description>Adds a set of files about which cvs logs will be generated.</short-description>
        
          <description>
          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>Add a user to list changelog knows about.</short-description>
        
          <description>
          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>Adds an new entry to a CVS password file.</short-description>
  
    <description>
    Adds an new entry to a CVS password file.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="cvsroot" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>The CVS repository to add an entry for.</short-description>
        
          <description>
          The CVS repository to add an entry for.
        </description>
      
        </attribute>
      
        <attribute name="passfile" type="java.io.File" briefType="File" required="no, default is ~/.cvspass.">
        
          <short-description>Password file to add the entry to.</short-description>
        
          <description>
          Password file to add the entry to.
        </description>
      
        </attribute>
      
        <attribute name="password" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>Password to be added to the password file.</short-description>
        
          <description>
          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>Examines the output of cvs rdiff between two tags.</short-description>
  
    <description>
    Examines the output of cvs rdiff between two tags.

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="compression" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, this is the same as compressionlevel="3".</short-description>
        
          <description>
          If true, this is the same as compressionlevel="3".
        </description>
      
        </attribute>
      
        <attribute name="compressionlevel" type="int" briefType="int" required="NOTDEFINED">
        
          <short-description>If set to a value 1-9 it adds -zN to the cvs command line, else
 it disables compression.</short-description>
        
          <description>
          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>The CVSROOT variable.</short-description>
        
          <description>
          The CVSROOT variable.
        </description>
      
        </attribute>
      
        <attribute name="cvsrsh" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The CVS_RSH variable.</short-description>
        
          <description>
          The CVS_RSH variable.
        </description>
      
        </attribute>
      
        <attribute name="destfile" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Output file for the diff.</short-description>
        
          <description>
          Set the output file for the diff.
        </description>
      
        </attribute>
      
        <attribute name="enddate" type="java.lang.String" briefType="String" required="">
        
          <short-description>End date.</short-description>
        
          <description>
          Set the end date.
        </description>
      
        </attribute>
      
        <attribute name="endtag" type="java.lang.String" briefType="String" required="exactly one of the two.">
        
          <short-description>End tag.</short-description>
        
          <description>
          Set the end tag.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Stop the build process if the command exits with
 a return code other than 0.</short-description>
        
          <description>
          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>The package/module to analyze.</short-description>
        
          <description>
          The package/module to analyze.
        </description>
      
        </attribute>
      
        <attribute name="passfile" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Password file to read passwords from.</short-description>
        
          <description>
          Password file to read passwords from.
        </description>
      
        </attribute>
      
        <attribute name="port" type="int" briefType="int" required="NOTDEFINED">
        
          <short-description>Port used by CVS to communicate with the server.</short-description>
        
          <description>
          Port used by CVS to communicate with the server.
        </description>
      
        </attribute>
      
        <attribute name="quiet" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, suppress informational messages.</short-description>
        
          <description>
          If true, suppress informational messages.
        </description>
      
        </attribute>
      
        <attribute name="startdate" type="java.lang.String" briefType="String" required="">
        
          <short-description>Start date.</short-description>
        
          <description>
          Set the start date.
        </description>
      
        </attribute>
      
        <attribute name="starttag" type="java.lang.String" briefType="String" required="exactly one of the two.">
        
          <short-description>Start tag.</short-description>
        
          <description>
          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>Builds a serialized deployment descriptor given a text file description of the descriptor in the format supported by WebLogic.</short-description>
  
    <description>
    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>Classpath to be used for this compilation.</short-description>
        
          <description>
          Set the classpath to be used for this compilation.
        </description>
      
        </attribute>
      
        <attribute name="descriptors" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory from where the text descriptions of the deployment descriptors are
 to be read.</short-description>
        
          <description>
          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>Directory into which the serialized deployment descriptors are to
 be written.</short-description>
        
          <description>
          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>Deletes a file or directory, or set of files defined by a fileset.</short-description>
  
    <description>
    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.
 &lt;p&gt;Currently Delete extends MatchingTask.  This is intend &lt;i&gt;only&lt;/i&gt;
 to provide backwards compatibility for a release.  The future position
 is to use nested filesets exclusively.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="defaultexcludes" type="boolean" briefType="boolean" required="no">
        
          <short-description>Sets whether default exclusions should be used or not.</short-description>
        
          <description>
          Sets whether default exclusions should be used or not.
        </description>
      
        </attribute>
      
        <attribute name="dir" type="java.io.File" briefType="File" required="">
        
          <short-description>Directory from which files are to be deleted.</short-description>
        
          <description>
          Set the directory from which files are to be deleted
        </description>
      
        </attribute>
      
        <attribute name="excludes" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Set of exclude patterns.</short-description>
        
          <description>
          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="no">
        
          <short-description>Name of the file containing the includes patterns.</short-description>
        
          <description>
          Sets the name of the file containing the includes patterns.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no">
        
          <short-description>If false, note errors but continue.</short-description>
        
          <description>
          If false, note errors but continue.
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="at least one of the two,       unless a &lt;fileset&gt; is specified.">
        
          <short-description>Name of a single file to be removed.</short-description>
        
          <description>
          Set the name of a single file to be removed.
        </description>
      
        </attribute>
      
        <attribute name="includeemptydirs" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, delete empty directories.</short-description>
        
          <description>
          If true, delete empty directories.
        </description>
      
        </attribute>
      
        <attribute name="includes" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Set of include patterns.</short-description>
        
          <description>
          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="no">
        
          <short-description>Name of the file containing the includes patterns.</short-description>
        
          <description>
          Sets the name of the file containing the includes patterns.
        </description>
      
        </attribute>
      
        <attribute name="quiet" type="boolean" briefType="boolean" required="no">
        
          <short-description>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>
          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 &amp;quot;rm&amp;quot; command.
 Default is false meaning things are &amp;quot;noisy&amp;quot;
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, list all names of deleted files.</short-description>
        
          <description>
          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>Adds a set of files to be deleted.</short-description>
        
          <description>
          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>Add a name entry on the exclude list.</short-description>
        
          <description>
          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>Add a name entry on the include files list.</short-description>
        
          <description>
          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>Add a name entry on the include list.</short-description>
        
          <description>
          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>Add a name entry on the include files list.</short-description>
        
          <description>
          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>Add a set of patterns.</short-description>
        
          <description>
          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>No Description.</short-description>
  
    <description>
    
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="dir" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Directory to be deleted.</short-description>
        
          <description>
          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>Generates a dependency file for a given set of classes.</short-description>
  
    <description>
    Generates a dependency file for a given set of classes.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="cache" type="java.io.File" briefType="File" required="no">
        
          <short-description>Dependency cache file.</short-description>
        
          <description>
          Sets the dependency cache file.
        </description>
      
        </attribute>
      
        <attribute name="classpath" type="org.apache.tools.ant.types.Path" briefType="Path" required="no">
        
          <short-description>Classpath to be used for this dependency check.</short-description>
        
          <description>
          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>Adds a reference to a classpath defined elsewhere.</short-description>
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="closure" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, transitive dependencies are followed until the
 closure of the dependency set if reached.</short-description>
        
          <description>
          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="no">
        
          <short-description>Destination directory where the compiled Java files exist.</short-description>
        
          <description>
          Set the destination directory where the compiled Java files exist.
        </description>
      
        </attribute>
      
        <attribute name="dump" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, the dependency information will be written
 to the debug level log.</short-description>
        
          <description>
          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="yes">
        
          <short-description>Directories path to find the Java source files.</short-description>
        
          <description>
          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>Adds a classpath to be used for this dependency check.</short-description>
        
          <description>
          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>Examines and removes out of date target files.</short-description>
  
    <description>
    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:
 &lt;ul&gt;
 &lt;li&gt;srcfileset     (fileset describing the source files to examine)
 &lt;li&gt;srcfilelist    (filelist describing the source files to examine)
 &lt;li&gt;targetfileset  (fileset describing the target files to examine)
 &lt;li&gt;targetfilelist (filelist describing the target files to examine)
 &lt;/ul&gt;
 At least one instance of either a fileset or filelist for both source and 
 target are required.
 &lt;p&gt;
 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.
 &lt;/p&gt;&lt;p&gt;
 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.
 &lt;/p&gt;&lt;p&gt;
 Example uses: 
 &lt;ul&gt;&lt;li&gt;
 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.
 &lt;/li&gt;&lt;li&gt;
 Record the fact that an XSL stylesheet includes other
 sub-stylesheets
 &lt;/li&gt;&lt;li&gt;
 Record the fact that java files must be recompiled if the ant build
 file changes
 &lt;/li&gt;&lt;/ul&gt;
  </description>

  
    <structure>

    
      <attributes>
    </attributes>

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

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

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

      
        <element name="targetfileset" type="org.apache.tools.ant.types.FileSet" briefType="Fileset" required="NOTDEFINED">
        
          <short-description>Add a set of target files.</short-description>
        
          <description>
          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>Determines the directory name of the specified file.</short-description>
  
    <description>
    Determines the directory name of the specified file.

 This task can accept the following attributes:
 &lt;ul&gt;
 &lt;li&gt;file
 &lt;li&gt;property
 &lt;/ul&gt;
 Both &lt;b&gt;file&lt;/b&gt; and &lt;b&gt;property&lt;/b&gt; are required.
 &lt;p&gt;
 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="yes">
        
          <short-description>Path to take the dirname of.</short-description>
        
          <description>
          Path to take the dirname of.
        </description>
      
        </attribute>
      
        <attribute name="property" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>The name of the property to set.</short-description>
        
          <description>
          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>Creates a EAR archive.</short-description>
  
    <description>
    Creates a EAR archive. Based on WAR task
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="appxml" type="java.io.File" briefType="File" required="yes, unless update is set to true">
        
          <short-description>File to incorporate as application.xml.</short-description>
        
          <description>
          File to incorporate as application.xml.
        </description>
      
        </attribute>
      
        <attribute name="basedir" type="java.io.File" briefType="File" required="no">
        
          <short-description>Directory from which to archive files; optional.</short-description>
        
          <description>
          Directory from which to archive files; optional.
        </description>
      
        </attribute>
      
        <attribute name="compress" type="boolean" briefType="boolean" required="no">
        
          <short-description>Whether we want to compress the files or only store them;
 optional, default=true;.</short-description>
        
          <description>
          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="yes">
        
          <short-description>The file to create; required.</short-description>
        
          <description>
          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="no">
        
          <short-description>Sets behavior for when a duplicate file is about to be added -
 one of &lt;code&gt;keep&lt;/code&gt;, &lt;code&gt;skip&lt;/code&gt; or &lt;code&gt;overwrite&lt;/code&gt;.</short-description>
        
          <description>
          Sets behavior for when a duplicate file is about to be added -
 one of &lt;code&gt;keep&lt;/code&gt;, &lt;code&gt;skip&lt;/code&gt; or &lt;code&gt;overwrite&lt;/code&gt;.
 Possible values are: &lt;code&gt;keep&lt;/code&gt; (keep both
 of the files); &lt;code&gt;skip&lt;/code&gt; (keep the first version
 of the file found); &lt;code&gt;overwrite&lt;/code&gt; overwrite the file
 with the new file
 Default for zip tasks is &lt;code&gt;keep&lt;/code&gt;
        </description>
      
        </attribute>
      
        <attribute name="encoding" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Encoding to use for filenames, defaults to the platform's
 default encoding.</short-description>
        
          <description>
          Encoding to use for filenames, defaults to the platform's
 default encoding.

 &lt;p&gt;For a list of possible values see &lt;a
 href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html"&gt;http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html&lt;/a&gt;.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="filesonly" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.</short-description>
        
          <description>
          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>Set whether or not to create an index list for classes.</short-description>
        
          <description>
          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="no">
        
          <short-description>The manifest file to use.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.</short-description>
        
          <description>
          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>Sets behavior of the task when no files match.</short-description>
        
          <description>
          Sets behavior of the task when no files match.
 Possible values are: &lt;code&gt;fail&lt;/code&gt; (throw an exception
 and halt the build); &lt;code&gt;skip&lt;/code&gt; (do not create
 any archive, but issue a warning); &lt;code&gt;create&lt;/code&gt;
 (make an archive with no entries).
 Default for zip tasks is &lt;code&gt;skip&lt;/code&gt;;
 for jar tasks, &lt;code&gt;create&lt;/code&gt;.
        </description>
      
        </attribute>
    
      </attributes>

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

      
        <element name="manifest" type="org.apache.tools.ant.taskdefs.Manifest" briefType="" required="NOTDEFINED">
        
          <short-description>Allows the manifest for the archive file to be provided inline
 in the buildfile rather than in an external file.</short-description>
        
          <description>
          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>Adds a set of files.</short-description>
        
          <description>
          Adds a set of files.
        </description>
      
        </element>

      
        <element name="metainf" type="org.apache.tools.ant.types.ZipFileSet" briefType="ZipFileset" required="NOTDEFINED">
        
          <short-description>Adds a zipfileset to include in the META-INF directory.</short-description>
        
          <description>
          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>Adds a group of zip files.</short-description>
        
          <description>
          Adds a group of zip files.
        </description>
      
        </element>

      
        <element name="zipfileset" type="org.apache.tools.ant.types.ZipFileSet" briefType="ZipFileset" required="NOTDEFINED">
        
          <short-description>Adds a set of files that can be
 read from an archive and be given a prefix/fullpath.</short-description>
        
          <description>
          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>Writes a message to the Ant logging facilities.</short-description>
  
    <description>
    Writes a message to the Ant logging facilities.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="append" type="boolean" briefType="boolean" required="no - default is false.">
        
          <short-description>If true, append to existing file.</short-description>
        
          <description>
          If true, append to existing file.
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="no">
        
          <short-description>File to write to.</short-description>
        
          <description>
          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="no - default is &quot;warning&quot;.">
        
          <short-description>Logging level.</short-description>
        
          <description>
          Set the logging level. Level should be one of
 &lt;ul&gt;
  &lt;li&gt;error&lt;/li&gt;
  &lt;li&gt;warning&lt;/li&gt;
  &lt;li&gt;info&lt;/li&gt;
  &lt;li&gt;verbose&lt;/li&gt;
  &lt;li&gt;debug&lt;/li&gt;
 &lt;/ul&gt;
 &lt;p&gt;The default is &amp;quot;warning&amp;quot; to ensure that messages are
 displayed by default when using the -quiet command line option.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="message" type="java.lang.String" briefType="String" required="yes, unless data is included in a        character section within this element.">
        
          <short-description>Message to write.</short-description>
        
          <description>
          Message to write.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

      
      <body>
        
        <description>
          Set a multiline message.
        </description>
      
      </body>

  
    </structure>


  </task>



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

  
    <short-description>Displays all the current properties in the build.</short-description>
  
    <description>
    Displays all the current properties in the build. The output can be sent to
  a file if desired. &lt;P&gt;

  Attribute "destfile" defines a file to send the properties to. This can be
  processed as a standard property file later. &lt;P&gt;

  Attribute "prefix" defines a prefix which is used to filter the properties
  only those properties starting with this prefix will be echoed. &lt;P&gt;

  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. &lt;P&gt;

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

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

  &lt;pre&gt;
  &amp;lt;echoproperties destfile="my.properties" failonerror="false"
      prefix="ant" /&amp;gt;
 &lt;/pre&gt; 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="no">
        
          <short-description>File to store the property output.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, the task will fail if an error occurs writing the properties
 file, otherwise errors are just logged.</short-description>
        
          <description>
          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="no">
        
          <short-description>If the prefix is set, then only properties which start with this
  prefix string will be recorded.</short-description>
        
          <description>
          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 &lt;tt&gt;null&lt;/tt&gt;, then all properties will be
  recorded. &lt;P&gt;

  For example, if the property is set as:
    &lt;PRE&gt;&amp;lt;echoproperties  prefix="ant." /&amp;gt;&lt;/PRE&gt;
  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>Builds EJB support classes using WebLogic's ejbc tool from a directory containing a set of deployment descriptors.</short-description>
  
    <description>
    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>Classpath to be used for this compilation.</short-description>
        
          <description>
          Set the classpath to be used for this compilation.
        </description>
      
        </attribute>
      
        <attribute name="descriptors" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory from where the serialized deployment descriptors are
 to be read.</short-description>
        
          <description>
          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>Directory into which the support classes, RMI stubs, etc are to be written.</short-description>
        
          <description>
          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>If true, ejbc will keep the
 intermediate Java files used to build the class files.</short-description>
        
          <description>
          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>Name of the generated manifest file.</short-description>
        
          <description>
          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>Directory containing the source code for the home interface, remote interface
 and public key class definitions.</short-description>
        
          <description>
          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>Provides automated EJB JAR file creation.</short-description>
  
    <description>
    Provides automated EJB JAR file creation.
 &lt;p&gt;
 Extends the
 MatchingTask class provided in the default ant distribution to provide a
 directory scanning EJB jarfile generator.
 &lt;/p&gt;

 &lt;p&gt;
 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.
 &lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="basejarname" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>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>
          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>The string which terminates the bean name.</short-description>
        
          <description>
          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>Classpath to use when resolving classes for inclusion in the jar.</short-description>
        
          <description>
          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>Analyzer to use when adding in dependencies to the JAR.</short-description>
        
          <description>
          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>Descriptor directory.</short-description>
        
          <description>
          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>Destination directory.</short-description>
        
          <description>
          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>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>
          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>Suffix for the generated jar file.</short-description>
        
          <description>
          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>Manifest file to use when jarring.</short-description>
        
          <description>
          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>Naming scheme used to determine the name of the generated jars
 from the deployment descriptor.</short-description>
        
          <description>
          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>Source directory, which is the directory that
 contains the classes that will be added to the EJB jar.</short-description>
        
          <description>
          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>Adds a deployment tool for Borland server.</short-description>
        
          <description>
          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>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>
          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>Create a DTD location record.</short-description>
        
          <description>
          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>Adds a deployment tool for iPlanet Application Server.</short-description>
        
          <description>
          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>Adds a deployment tool for JBoss server.</short-description>
        
          <description>
          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>Adds a deployment tool for JOnAS server.</short-description>
        
          <description>
          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>Adds a fileset for support elements.</short-description>
        
          <description>
          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>Adds a deployment tool for Weblogic server.</short-description>
        
          <description>
          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>Adds a deployment tool for Weblogic when using the Toplink
 Object-Relational mapping.</short-description>
        
          <description>
          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>Adds a deployment tool for Websphere 4.0 server.</short-description>
        
          <description>
          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>Executes a given command if the os platform is appropriate.</short-description>
  
    <description>
    Executes a given command if the os platform is appropriate.
  </description>

  
    <structure>

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

    
      </elements>

  
    </structure>


  </task>



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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="if" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Only fail if a property of the given name exists in the current project.</short-description>
        
          <description>
          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="no">
        
          <short-description>A message giving further information on why the build exited.</short-description>
        
          <description>
          A message giving further information on why the build exited.
        </description>
      
        </attribute>
      
        <attribute name="unless" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Only fail if a property of the given name does not
 exist in the current project.</short-description>
        
          <description>
          Only fail if a property of the given name does not
 exist in the current project.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

      
      <body>
        
        <description>
          Set a multiline message.
        </description>
      
      </body>

  
    </structure>


  </task>



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

  
    <short-description>Sets a token filter that is used by the file copy tasks to do token substitution.</short-description>
  
    <description>
    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="yes*">
        
          <short-description>The file from which the filters must be read.</short-description>
        
          <description>
          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="yes*">
        
          <short-description>The token string without @ delimiters.</short-description>
        
          <description>
          The token string without @ delimiters.
        </description>
      
        </attribute>
      
        <attribute name="value" type="java.lang.String" briefType="String" required="yes*">
        
          <short-description>The string that should replace the token during filtered copies.</short-description>
        
          <description>
          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>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>
    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.
 &lt;p&gt;
 This task can take the following arguments:
 &lt;ul&gt;
 &lt;li&gt;srcdir
 &lt;li&gt;destdir
 &lt;li&gt;include
 &lt;li&gt;exclude
 &lt;li&gt;cr
 &lt;li&gt;eol
 &lt;li&gt;tab
 &lt;li&gt;eof
 &lt;li&gt;encoding
 &lt;/ul&gt;
 Of these arguments, only &lt;b&gt;sourcedir&lt;/b&gt; is required.
 &lt;p&gt;
 When this task executes, it will scan the srcdir based on the include
 and exclude properties.
 &lt;p&gt;
 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.
 &lt;p&gt;
 &lt;em&gt;Warning:&lt;/em&gt; do not run on binary files.
 &lt;em&gt;Caution:&lt;/em&gt; 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="no">
        
          <short-description>Destination where the fixed files should be placed.</short-description>
        
          <description>
          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="no - defaults to default jvm encoding">
        
          <short-description>Specifies the encoding Ant expects the files to be in -
 defaults to the platforms default encoding.</short-description>
        
          <description>
          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="no">
        
          <short-description>Specify how DOS EOF (control-z) characters are to be handled.</short-description>
        
          <description>
          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="no">
        
          <short-description>Specify how EndOfLine characters are to be handled.</short-description>
        
          <description>
          Specify how EndOfLine characters are to be handled.
        </description>
      
        </attribute>
      
        <attribute name="javafiles" type="boolean" briefType="boolean" required="no">
        
          <short-description>Set to true if modifying Java source files.</short-description>
        
          <description>
          Set to true if modifying Java source files.
        </description>
      
        </attribute>
      
        <attribute name="srcdir" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Source dir to find the source text files.</short-description>
        
          <description>
          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="no">
        
          <short-description>Specify how tab characters are to be handled.</short-description>
        
          <description>
          Specify how tab characters are to be handled.
        </description>
      
        </attribute>
      
        <attribute name="tablength" type="int" briefType="int" required="no">
        
          <short-description>Specify tab length in characters.</short-description>
        
          <description>
          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>Basic FTP client.</short-description>
  
    <description>
    Basic FTP client. Performs the following actions:
 &lt;ul&gt;
   &lt;li&gt; &lt;strong&gt;send&lt;/strong&gt; - send files to a remote server. This is the
   default action.&lt;/li&gt;
   &lt;li&gt; &lt;strong&gt;get&lt;/strong&gt; - retrive files from a remote server.&lt;/li&gt;
   &lt;li&gt; &lt;strong&gt;del&lt;/strong&gt; - delete files from a remote server.&lt;/li&gt;
   &lt;li&gt; &lt;strong&gt;list&lt;/strong&gt; - create a file listing.&lt;/li&gt;
   &lt;li&gt; &lt;strong&gt;chmod&lt;/strong&gt; - change unix file permissions.&lt;/li&gt;
 &lt;/ul&gt;
 &lt;strong&gt;Note:&lt;/strong&gt; 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="no">
        
          <short-description>FTP action to be taken.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, uses binary mode, otherwise text mode (default is binary).</short-description>
        
          <description>
          If true, uses binary mode, otherwise text mode (default is binary).
        </description>
      
        </attribute>
      
        <attribute name="chmod" type="java.lang.String" briefType="String" required="no">
        
          <short-description>File permission mode (Unix only) for files sent to the server.</short-description>
        
          <description>
          Sets the file permission mode (Unix only) for files sent to the server.
        </description>
      
        </attribute>
      
        <attribute name="depends" type="boolean" briefType="boolean" required="no">
        
          <short-description>Set to true to transmit only files that are new or changed from their
 remote counterparts.</short-description>
        
          <description>
          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="no">
        
          <short-description>Flag to skip errors on directory creation.
 (and maybe later other server specific errors).</short-description>
        
          <description>
          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="no">
        
          <short-description>The output file for the "list" action.</short-description>
        
          <description>
          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="no">
        
          <short-description>A synonym for &lt;tt&gt;depends&lt;/tt&gt;.</short-description>
        
          <description>
          A synonym for &lt;tt&gt;depends&lt;/tt&gt;. Set to true to transmit only new or changed
 files.
        </description>
      
        </attribute>
      
        <attribute name="passive" type="boolean" briefType="boolean" required="no">
        
          <short-description>Specifies whether to use passive mode.</short-description>
        
          <description>
          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="yes">
        
          <short-description>Login password for the given user id.</short-description>
        
          <description>
          Sets the login password for the given user id.
        </description>
      
        </attribute>
      
        <attribute name="port" type="int" briefType="int" required="no">
        
          <short-description>FTP port used by the remote server.</short-description>
        
          <description>
          Sets the FTP port used by the remote server.
        </description>
      
        </attribute>
      
        <attribute name="remotedir" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Remote directory where files will be placed.</short-description>
        
          <description>
          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="no">
        
          <short-description>Remote file separator character.</short-description>
        
          <description>
          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="yes">
        
          <short-description>FTP server to send files to.</short-description>
        
          <description>
          Sets the FTP server to send files to.
        </description>
      
        </attribute>
      
        <attribute name="skipfailedtransfers" type="boolean" briefType="boolean" required="no">
        
          <short-description>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>
          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="no">
        
          <short-description>Default mask for file creation on a unix server.</short-description>
        
          <description>
          Sets the default mask for file creation on a unix server.
        </description>
      
        </attribute>
      
        <attribute name="userid" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>Login user id to use on the specified server.</short-description>
        
          <description>
          Sets the login user id to use on the specified server.
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="no">
        
          <short-description>Set to true to receive notification about each file as it is
 transferred.</short-description>
        
          <description>
          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>A set of files to upload or download.</short-description>
        
          <description>
          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>Generates a key in a keystore.</short-description>
  
    <description>
    Generates a key in a keystore.
  </description>

  
    <structure>

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

    
      </elements>

  
    </structure>


  </task>



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

  
    <short-description>Gets a particular file from a URL source.</short-description>
  
    <description>
    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="yes">
        
          <short-description>Where to copy the source file.</short-description>
        
          <description>
          Where to copy the source file.
        </description>
      
        </attribute>
      
        <attribute name="ignoreerrors" type="boolean" briefType="boolean" required="no; default &quot;false&quot;">
        
          <short-description>If true, log errors but do not treat as fatal.</short-description>
        
          <description>
          If true, log errors but do not treat as fatal.
        </description>
      
        </attribute>
      
        <attribute name="password" type="java.lang.String" briefType="String" required="if username is set">
        
          <short-description>Password for the basic authentication.</short-description>
        
          <description>
          password for the basic authentication.
        </description>
      
        </attribute>
      
        <attribute name="src" type="java.net.URL" briefType="URL" required="yes">
        
          <short-description>URL to get.</short-description>
        
          <description>
          Set the URL to get.
        </description>
      
        </attribute>
      
        <attribute name="usetimestamp" type="boolean" briefType="boolean" required="no; default &quot;false&quot;">
        
          <short-description>If true, conditionally download a file based on the timestamp
 of the local copy.</short-description>
        
          <description>
          If true, conditionally download a file based on the timestamp
 of the local copy.

 &lt;p&gt;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.&lt;/p&gt;

 &lt;p&gt;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.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="username" type="java.lang.String" briefType="String" required="if password is set">
        
          <short-description>Username for basic auth.</short-description>
        
          <description>
          Username for basic auth.
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="no; default &quot;false&quot;">
        
          <short-description>If true, show verbose progress information.</short-description>
        
          <description>
          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>Expands a file that has been compressed with the GZIP algorithm.</short-description>
  
    <description>
    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>The destination file or directory; optional.</short-description>
        
          <description>
          The destination file or directory; optional.
        </description>
      
        </attribute>
      
        <attribute name="src" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>The file to expand; required.</short-description>
        
          <description>
          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>Compresses a file with the GZIP algorithm.</short-description>
  
    <description>
    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>The file to compress; required.</short-description>
        
          <description>
          the file to compress; required.
        </description>
      
        </attribute>
      
        <attribute name="zipfile" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>The required destination file.</short-description>
        
          <description>
          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>Instruments Java classes with iContract DBC preprocessor.</short-description>
  
    <description>
    Instruments Java classes with iContract DBC preprocessor.
 &lt;br/&gt;
 The task can generate a properties file for &lt;a href="http://hjem.sol.no/hellesoy/icontrol.html"&gt;iControl&lt;/a&gt;,
 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 &lt;a href="http://www.reliable-systems.com/tools/"&gt;http://www.reliable-systems.com/tools/&lt;/a&gt;
 &lt;p/&gt;
 Thanks to Rainer Schmitz for enhancements and comments.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="builddir" type="java.io.File" briefType="File" required="no">
        
          <short-description>Build directory for instrumented classes.</short-description>
        
          <description>
          Sets the build directory for instrumented classes.
        </description>
      
        </attribute>
      
        <attribute name="classdir" type="java.io.File" briefType="File" required="only if updateicontrol=true">
        
          <short-description>Class directory (uninstrumented classes).</short-description>
        
          <description>
          Sets the class directory (uninstrumented classes).
        </description>
      
        </attribute>
      
        <attribute name="classpath" type="org.apache.tools.ant.types.Path" briefType="Path" required="NOTDEFINED">
        
          <short-description>Classpath to be used for invocation of iContract.</short-description>
        
          <description>
          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>Adds a reference to a classpath defined elsewhere.</short-description>
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="controlfile" type="java.io.File" briefType="File" required="only if updateicontrol=true">
        
          <short-description>Control file to pass to iContract.</short-description>
        
          <description>
          Sets the control file to pass to iContract.
        </description>
      
        </attribute>
      
        <attribute name="failthrowable" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Throwable (Exception) to be thrown on assertion violation.</short-description>
        
          <description>
          Sets the Throwable (Exception) to be thrown on assertion violation.
        </description>
      
        </attribute>
      
        <attribute name="instrumentdir" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Instrumentation directory.</short-description>
        
          <description>
          Sets the instrumentation directory.
        </description>
      
        </attribute>
      
        <attribute name="invariant" type="boolean" briefType="boolean" required="no">
        
          <short-description>Turns on/off invariant instrumentation.</short-description>
        
          <description>
          Turns on/off invariant instrumentation.
        </description>
      
        </attribute>
      
        <attribute name="post" type="boolean" briefType="boolean" required="no">
        
          <short-description>Turns on/off postcondition instrumentation.</short-description>
        
          <description>
          Turns on/off postcondition instrumentation.
        </description>
      
        </attribute>
      
        <attribute name="pre" type="boolean" briefType="boolean" required="no">
        
          <short-description>Turns on/off precondition instrumentation.</short-description>
        
          <description>
          Turns on/off precondition instrumentation.
        </description>
      
        </attribute>
      
        <attribute name="quiet" type="boolean" briefType="boolean" required="no">
        
          <short-description>Tells iContract to be quiet.</short-description>
        
          <description>
          Tells iContract to be quiet.
        </description>
      
        </attribute>
      
        <attribute name="repbuilddir" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Build directory for instrumented classes.</short-description>
        
          <description>
          Sets the build directory for instrumented classes.
        </description>
      
        </attribute>
      
        <attribute name="repositorydir" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Build directory for repository classes.</short-description>
        
          <description>
          Sets the build directory for repository classes.
        </description>
      
        </attribute>
      
        <attribute name="srcdir" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Source directory.</short-description>
        
          <description>
          Sets the source directory.
        </description>
      
        </attribute>
      
        <attribute name="targets" type="java.io.File" briefType="File" required="no">
        
          <short-description>Name of the file where targets will be written.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, updates iControl properties file.</short-description>
        
          <description>
          If true, updates iControl properties file
        </description>
      
        </attribute>
      
        <attribute name="verbosity" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Verbosity level of iContract.</short-description>
        
          <description>
          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>Classpath.</short-description>
        
          <description>
          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>Assembles .NET Intermediate Language files.</short-description>
  
    <description>
    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. &lt;p&gt;

  &lt;p&gt;

  All parameters are optional: &amp;lt;il/&amp;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) &lt;p&gt;

  The task is a directory based task, so attributes like &lt;b&gt;includes="*.il"
  &lt;/b&gt; and &lt;b&gt;excludes="broken.il"&lt;/b&gt; 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 &lt;b&gt;outfile&lt;/b&gt;
  </description>

  
    <structure>

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

  
    <structure>

    
      <attributes>
      
        <attribute name="addproperty" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Defines the name of a property to be created from input.</short-description>
        
          <description>
          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="no">
        
          <short-description>Message which gets displayed to the user during the build run.</short-description>
        
          <description>
          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="no">
        
          <short-description>Defines valid input parameters as comma separated strings.</short-description>
        
          <description>
          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>
          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>Compiles EJB stubs and skeletons for the iPlanet Application Server.</short-description>
  
    <description>
    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:
   &lt;ul&gt;
     &lt;li&gt;&lt;i&gt;ejbdescriptor&lt;/i&gt; -- Standard EJB 1.1 XML descriptor (typically
                                 titled "ejb-jar.xml").  This attribute is
                                 required.
     &lt;li&gt;&lt;i&gt;iasdescriptor&lt;/i&gt; -- EJB XML descriptor for iPlanet Application
                                 Server (typically titled "ias-ejb-jar.xml).
                                 This attribute is required.
     &lt;li&gt;&lt;i&gt;dest&lt;/i&gt; -- 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.
     &lt;li&gt;&lt;i&gt;classpath&lt;/i&gt; -- 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.
     &lt;li&gt;&lt;i&gt;keepgenerated&lt;/i&gt; -- 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").
     &lt;li&gt;&lt;i&gt;debug&lt;/i&gt; -- 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").
     &lt;li&gt;&lt;i&gt;iashome&lt;/i&gt; -- 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 &lt;code&gt;[install-location]/iplanet/ias6/ias
                           &lt;/code&gt; directory).  If omitted, the ejbc utility
                           must be on the user's system path.
   &lt;/ul&gt;
 &lt;p&gt;
 For each EJB specified, this task will locate the three classes that comprise
 the EJB.  If these class files cannot be located in the &lt;code&gt;dest&lt;/code&gt;
 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>Classpath to be used when compiling the EJB stubs and skeletons.</short-description>
        
          <description>
          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>If true, debugging output will be generated when ejbc is
 executed.</short-description>
        
          <description>
          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>Destination directory where the EJB source classes must exist
 and where the stubs and skeletons will be written.</short-description>
        
          <description>
          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>Location of the standard XML EJB descriptor.</short-description>
        
          <description>
          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>Location of the iAS-specific XML EJB descriptor.</short-description>
        
          <description>
          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>May be used to specify the "home" directory for this iAS installation.</short-description>
        
          <description>
          May be used to specify the "home" directory for this iAS installation.
 The directory specified should typically be
 &lt;code&gt;[install-location]/iplanet/ias6/ias&lt;/code&gt;.
        </description>
      
        </attribute>
      
        <attribute name="keepgenerated" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, the Java source files which are generated by ejbc will be saved .</short-description>
        
          <description>
          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>Adds to the classpath used when compiling the EJB stubs and skeletons.</short-description>
        
          <description>
          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>Creates a JAR archive.</short-description>
  
    <description>
    Creates a JAR archive.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="basedir" type="java.io.File" briefType="File" required="no">
        
          <short-description>Directory from which to archive files; optional.</short-description>
        
          <description>
          Directory from which to archive files; optional.
        </description>
      
        </attribute>
      
        <attribute name="compress" type="boolean" briefType="boolean" required="no">
        
          <short-description>Whether we want to compress the files or only store them;
 optional, default=true;.</short-description>
        
          <description>
          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="yes">
        
          <short-description>The file to create; required.</short-description>
        
          <description>
          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="no">
        
          <short-description>Sets behavior for when a duplicate file is about to be added -
 one of &lt;code&gt;keep&lt;/code&gt;, &lt;code&gt;skip&lt;/code&gt; or &lt;code&gt;overwrite&lt;/code&gt;.</short-description>
        
          <description>
          Sets behavior for when a duplicate file is about to be added -
 one of &lt;code&gt;keep&lt;/code&gt;, &lt;code&gt;skip&lt;/code&gt; or &lt;code&gt;overwrite&lt;/code&gt;.
 Possible values are: &lt;code&gt;keep&lt;/code&gt; (keep both
 of the files); &lt;code&gt;skip&lt;/code&gt; (keep the first version
 of the file found); &lt;code&gt;overwrite&lt;/code&gt; overwrite the file
 with the new file
 Default for zip tasks is &lt;code&gt;keep&lt;/code&gt;
        </description>
      
        </attribute>
      
        <attribute name="encoding" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Encoding to use for filenames, defaults to the platform's
 default encoding.</short-description>
        
          <description>
          Encoding to use for filenames, defaults to the platform's
 default encoding.

 &lt;p&gt;For a list of possible values see &lt;a
 href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html"&gt;http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html&lt;/a&gt;.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="filesonly" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.</short-description>
        
          <description>
          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="no">
        
          <short-description>Set whether or not to create an index list for classes.</short-description>
        
          <description>
          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="no">
        
          <short-description>The manifest file to use.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.</short-description>
        
          <description>
          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="no">
        
          <short-description>Sets behavior of the task when no files match.</short-description>
        
          <description>
          Sets behavior of the task when no files match.
 Possible values are: &lt;code&gt;fail&lt;/code&gt; (throw an exception
 and halt the build); &lt;code&gt;skip&lt;/code&gt; (do not create
 any archive, but issue a warning); &lt;code&gt;create&lt;/code&gt;
 (make an archive with no entries).
 Default for zip tasks is &lt;code&gt;skip&lt;/code&gt;;
 for jar tasks, &lt;code&gt;create&lt;/code&gt;.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="manifest" type="org.apache.tools.ant.taskdefs.Manifest" briefType="" required="NOTDEFINED">
        
          <short-description>Allows the manifest for the archive file to be provided inline
 in the buildfile rather than in an external file.</short-description>
        
          <description>
          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>Adds a set of files.</short-description>
        
          <description>
          Adds a set of files.
        </description>
      
        </element>

      
        <element name="metainf" type="org.apache.tools.ant.types.ZipFileSet" briefType="ZipFileset" required="NOTDEFINED">
        
          <short-description>Adds a zipfileset to include in the META-INF directory.</short-description>
        
          <description>
          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>Adds a group of zip files.</short-description>
        
          <description>
          Adds a group of zip files.
        </description>
      
        </element>

      
        <element name="zipfileset" type="org.apache.tools.ant.types.ZipFileSet" briefType="ZipFileset" required="NOTDEFINED">
        
          <short-description>Adds a set of files that can be
 read from an archive and be given a prefix/fullpath.</short-description>
        
          <description>
          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>Checks whether an extension is present in a fileset or an extensionSet.</short-description>
  
    <description>
    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="no, one of file, nested      extensionset or nested fileset must be present.">
        
          <short-description>The JAR library to check.</short-description>
        
          <description>
          The JAR library to check.
        </description>
      
        </attribute>
      
        <attribute name="property" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>The name of property to set if extensions are available.</short-description>
        
          <description>
          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>Extension looking for.</short-description>
        
          <description>
          Set the Extension looking for.
        </description>
      
        </element>

      
        <element name="extensionset" type="org.apache.tools.ant.taskdefs.optional.extension.ExtensionSet" briefType="" required="NOTDEFINED">
        
          <short-description>Adds a set of extensions to search in.</short-description>
        
          <description>
          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>Displays the "Optional Package" and "Package Specification" information contained within the specified JARs.</short-description>
  
    <description>
    Displays the "Optional Package" and "Package Specification" information
 contained within the specified JARs.

 &lt;p&gt;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 &lt;a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html"&gt;
 http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html&lt;/a&gt;.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="file" type="java.io.File" briefType="File" required="no, but one of file or fileset must be      present.">
        
          <short-description>The JAR library to display information for.</short-description>
        
          <description>
          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>Adds a set of files about which library data will be displayed.</short-description>
        
          <description>
          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>Generates a manifest that declares all the dependencies.</short-description>
  
    <description>
    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.

 &lt;p&gt;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 &lt;a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html"&gt;
 http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html&lt;/a&gt;.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="destfile" type="java.io.File" briefType="File" required="yes.">
        
          <short-description>The location where generated manifest is placed.</short-description>
        
          <description>
          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>Adds an attribute that is to be put in main section of manifest.</short-description>
        
          <description>
          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>Adds a set of extensions that this library requires.</short-description>
        
          <description>
          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>Adds an extension that this library implements.</short-description>
        
          <description>
          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>Adds a set of extensions that this library optionally requires.</short-description>
        
          <description>
          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>Tries to locate a JAR to satisfy an extension and place location of JAR into property.</short-description>
  
    <description>
    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="no, defaults to true.">
        
          <short-description>If true, libraries returned by nested resolvers should be
 checked to see if they supply extension.</short-description>
        
          <description>
          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="no, defaults to true.">
        
          <short-description>If true, failure to locate library should fail build.</short-description>
        
          <description>
          If true, failure to locate library should fail build.
        </description>
      
        </attribute>
      
        <attribute name="property" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>The name of the property in which the location of
 library is stored.</short-description>
        
          <description>
          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>Adds Ant resolver to run an Ant buildfile to generate a library.</short-description>
        
          <description>
          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>Extension looking for.</short-description>
        
          <description>
          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>Adds location resolver to look for a library in a location
 relative to project directory.</short-description>
        
          <description>
          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>Adds a URL resolver to download a library from a URL
 to a local file.</short-description>
        
          <description>
          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>Launcher for Java applications.</short-description>
  
    <description>
    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="no">
        
          <short-description>If true, append output to existing file.</short-description>
        
          <description>
          If true, append output to existing file.
        </description>
      
        </attribute>
      
        <attribute name="classname" type="java.lang.String" briefType="String" required="either jar or classname">
        
          <short-description>Java class to execute.</short-description>
        
          <description>
          Sets the Java class to execute.
        </description>
      
        </attribute>
      
        <attribute name="classpath" type="org.apache.tools.ant.types.Path" briefType="Path" required="no">
        
          <short-description>Classpath to be used when running the Java class.</short-description>
        
          <description>
          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="no">
        
          <short-description>Classpath to use, by reference.</short-description>
        
          <description>
          Classpath to use, by reference.
        </description>
      
        </attribute>
      
        <attribute name="dir" type="java.io.File" briefType="File" required="no">
        
          <short-description>The working directory of the process.</short-description>
        
          <description>
          The working directory of the process
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, then fail if the command exits with a
 returncode other than 0.</short-description>
        
          <description>
          If true, then fail if the command exits with a
 returncode other than 0
        </description>
      
        </attribute>
      
        <attribute name="fork" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, execute in a new VM.</short-description>
        
          <description>
          If true, execute in a new VM.
        </description>
      
        </attribute>
      
        <attribute name="jvmversion" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>JVM version.</short-description>
        
          <description>
          Sets the JVM version.
        </description>
      
        </attribute>
      
        <attribute name="jar" type="java.io.File" briefType="File" required="either jar or classname">
        
          <short-description>The location of the JAR file to execute.</short-description>
        
          <description>
          The location of the JAR file to execute.
        </description>
      
        </attribute>
      
        <attribute name="jvm" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Command used to start the VM (only if not forking).</short-description>
        
          <description>
          Set the command used to start the VM (only if not forking).
        </description>
      
        </attribute>
      
        <attribute name="jvmargs" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Command line arguments for the JVM.</short-description>
        
          <description>
          Set the command line arguments for the JVM.
        </description>
      
        </attribute>
      
        <attribute name="maxmemory" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Corresponds to -mx or -Xmx depending on VM version.</short-description>
        
          <description>
          Corresponds to -mx or -Xmx depending on VM version.
        </description>
      
        </attribute>
      
        <attribute name="newenvironment" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, use a completely new environment.</short-description>
        
          <description>
          If true, use a completely new environment.

 &lt;p&gt;Will be ignored if we are not forking a new VM.
        </description>
      
        </attribute>
      
        <attribute name="output" type="java.io.File" briefType="File" required="no">
        
          <short-description>File the output of the process is redirected to.</short-description>
        
          <description>
          File the output of the process is redirected to.
        </description>
      
        </attribute>
      
        <attribute name="timeout" type="java.lang.Long" briefType="long" required="no">
        
          <short-description>Timeout in milliseconds after which the process will be killed.</short-description>
        
          <description>
          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>Adds an environment variable.</short-description>
        
          <description>
          Adds an environment variable.

 &lt;p&gt;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>Adds a system property.</short-description>
        
          <description>
          Adds a system property.
        </description>
      
        </element>

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

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

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

    
      </elements>

  
    </structure>


  </task>



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

  

    <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
"build.compiler" 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 "build.compiler" 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="${src}"
         destdir="${build}"
         classpath="xyz.jar"
         debug="on"
  /&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="${src}"
         destdir="${build}"
         fork="true"
  /&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="${src}"
         destdir="${build}"
         fork="java$$javac.exe"
  /&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="${src}"
         destdir="${build}"
         includes="mypackage/p1/**,mypackage/p2/**"
         excludes="mypackage/p1/testpackage/**"
         classpath="xyz.jar"
         debug="on"
  /&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="${src}:${src2}"
         destdir="${build}"
         includes="mypackage/p1/**,mypackage/p2/**"
         excludes="mypackage/p1/testpackage/**"
         classpath="xyz.jar"
         debug="on"
  /&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="${build}"
         classpath="xyz.jar"
         debug="on"&gt;
    &lt;src path="${src}"/&gt;
    &lt;src path="${src2}"/&gt;
    &lt;include name="mypackage/p1/**"/&gt;
    &lt;include name="mypackage/p2/**"/&gt;
    &lt;exclude name="mypackage/p1/testpackage/**"/&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 "true" or "yes" to be
interpreted as anything other than false; by default
build.compiler.warnings is "true" while all others are "false"</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 />
	"+F" in the jikes manual.
    
            </td>
  
          </tr>

        </table>


      </section>

    </external>

  
    <short-description>Compiles Java source files.</short-description>
  
    <description>
    Compiles Java source files. This task can take the following
 arguments:
 &lt;ul&gt;
 &lt;li&gt;sourcedir
 &lt;li&gt;destdir
 &lt;li&gt;deprecation
 &lt;li&gt;classpath
 &lt;li&gt;bootclasspath
 &lt;li&gt;extdirs
 &lt;li&gt;optimize
 &lt;li&gt;debug
 &lt;li&gt;encoding
 &lt;li&gt;target
 &lt;li&gt;depend
 &lt;li&gt;vebose
 &lt;li&gt;failonerror
 &lt;li&gt;includeantruntime
 &lt;li&gt;includejavaruntime
 &lt;li&gt;source
 &lt;li&gt;compiler
 &lt;/ul&gt;
 Of these arguments, the &lt;b&gt;sourcedir&lt;/b&gt; and &lt;b&gt;destdir&lt;/b&gt; are required.
 &lt;p&gt;
 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="no">
        
          <short-description>Adds a reference to a classpath defined elsewhere.</short-description>
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="bootclasspath" type="org.apache.tools.ant.types.Path" briefType="Path" required="no">
        
          <short-description>Bootclasspath that will be used to compile the classes
 against.</short-description>
        
          <description>
          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="no">
        
          <short-description>Classpath to be used for this compilation.</short-description>
        
          <description>
          Set the classpath to be used for this compilation.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="no">
        
          <short-description>Adds a reference to a classpath defined elsewhere.</short-description>
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="compiler" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Choose the implementation for this particular task.</short-description>
        
          <description>
          Choose the implementation for this particular task.
        </description>
      
        </attribute>
      
        <attribute name="debug" type="boolean" briefType="boolean" required="no">
        
          <short-description>Indicates whether source should be compiled
 with debug information; defaults to off.</short-description>
        
          <description>
          Indicates whether source should be compiled
 with debug information; defaults to off.
        </description>
      
        </attribute>
      
        <attribute name="debuglevel" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Keyword list to be appended to the -g command-line switch.</short-description>
        
          <description>
          Keyword list to be appended to the -g command-line switch.

 This will be ignored by all implementations except modern
 and classic(ver &gt;= 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="no">
        
          <short-description>Enables dependency-tracking for compilers
 that support this (jikes and classic).</short-description>
        
          <description>
          Enables dependency-tracking for compilers
 that support this (jikes and classic).
        </description>
      
        </attribute>
      
        <attribute name="deprecation" type="boolean" briefType="boolean" required="no">
        
          <short-description>Indicates whether source should be
 compiled with deprecation information; defaults to off.</short-description>
        
          <description>
          Indicates whether source should be
 compiled with deprecation information; defaults to off.
        </description>
      
        </attribute>
      
        <attribute name="destdir" type="java.io.File" briefType="File" required="no">
        
          <short-description>Destination directory into which the Java source
 files should be compiled.</short-description>
        
          <description>
          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="no">
        
          <short-description>Java source file encoding name.</short-description>
        
          <description>
          Set the Java source file encoding name.
        </description>
      
        </attribute>
      
        <attribute name="executable" type="java.lang.String" briefType="String" required="no">
        
          <short-description>The name of the javac executable.</short-description>
        
          <description>
          Sets the the name of the javac executable.

 &lt;p&gt;Ignored unless fork is true or extJavac has been specified
 as the compiler.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="extdirs" type="org.apache.tools.ant.types.Path" briefType="Path" required="no">
        
          <short-description>Extension directories that will be used during the
 compilation.</short-description>
        
          <description>
          Sets the extension directories that will be used during the
 compilation.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no">
        
          <short-description>Indicates whether the build will continue
 even if there are compilation errors; defaults to true.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, forks the javac compiler.</short-description>
        
          <description>
          If true, forks the javac compiler.
        </description>
      
        </attribute>
      
        <attribute name="includeantruntime" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, includes Ant's own classpath in the classpath.</short-description>
        
          <description>
          If true, includes Ant's own classpath in the classpath.
        </description>
      
        </attribute>
      
        <attribute name="includejavaruntime" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, includes the Java runtime libraries in the classpath.</short-description>
        
          <description>
          If true, includes the Java runtime libraries in the classpath.
        </description>
      
        </attribute>
      
        <attribute name="listfiles" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, list the source files being handed off to the compiler.</short-description>
        
          <description>
          If true, list the source files being handed off to the compiler.
        </description>
      
        </attribute>
      
        <attribute name="memoryinitialsize" type="java.lang.String" briefType="String" required="no">
        
          <short-description>The initial size of the memory for the underlying VM
 if javac is run externally; ignored otherwise.</short-description>
        
          <description>
          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="no">
        
          <short-description>The maximum size of the memory for the underlying VM
 if javac is run externally; ignored otherwise.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, enables the -nowarn option.</short-description>
        
          <description>
          If true, enables the -nowarn option.
        </description>
      
        </attribute>
      
        <attribute name="optimize" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, compiles with optimization enabled.</short-description>
        
          <description>
          If true, compiles with optimization enabled.
        </description>
      
        </attribute>
      
        <attribute name="source" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Value of the -source command-line switch; will be ignored
 by all implementations except modern and jikes.</short-description>
        
          <description>
          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="no">
        
          <short-description>Sourcepath to be used for this compilation.</short-description>
        
          <description>
          Set the sourcepath to be used for this compilation.
        </description>
      
        </attribute>
      
        <attribute name="sourcepathref" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="no">
        
          <short-description>Adds a reference to a source path defined elsewhere.</short-description>
        
          <description>
          Adds a reference to a source path defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="srcdir" type="org.apache.tools.ant.types.Path" briefType="Path" required="yes, unless nested &lt;src&gt; elements are present.">
        
          <short-description>Source directories to find the source Java files.</short-description>
        
          <description>
          Set the source directories to find the source Java files.
        </description>
      
        </attribute>
      
        <attribute name="target" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Target VM that the classes will be compiled for.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, asks the compiler for verbose output.</short-description>
        
          <description>
          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>Adds a path to the bootclasspath.</short-description>
        
          <description>
          Adds a path to the bootclasspath.
        </description>
      
        </element>

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

      
        <element name="compilerarg" type="org.apache.tools.ant.taskdefs.Javac.ImplementationSpecificArgument" briefType="" required="NOTDEFINED">
        
          <short-description>Adds an implementation specific command-line argument.</short-description>
        
          <description>
          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>Adds a path to extdirs.</short-description>
        
          <description>
          Adds a path to extdirs.
        </description>
      
        </element>

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

      
        <element name="src" type="org.apache.tools.ant.types.Path" briefType="Path" required="NOTDEFINED">
        
          <short-description>Adds a path for source compilation.</short-description>
        
          <description>
          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>JavaCC compiler compiler task.</short-description>
  
    <description>
    JavaCC compiler compiler task.
  </description>

  
    <structure>

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

  

    <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
"changed" 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="com.dummy.test.*"
           sourcepath="src"
           excludepackagenames="com.dummy.test.doc-files.*"
           defaultexcludes="yes"
           destdir="docs/api"
           author="true"
           version="true"
           use="true"
           windowtitle="Test API"&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="todo" scope="all" description="To do:" /&gt;
    &lt;group title="Group 1 Packages" packages="com.dummy.test.a*"/&gt;
    &lt;group title="Group 2 Packages" packages="com.dummy.test.b*:com.dummy.test.c*"/&gt;
    &lt;link offline="true" href="http://java.sun.com/products/jdk/1.2/docs/api/" packagelistLoc="C:\tmp"/&gt;
    &lt;link href="http://developer.java.sun.com/developer/products/xml/docs/api/"/&gt;
  &lt;/javadoc&gt;</pre>

      </section>

    </external>

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

 &lt;P&gt;Current known limitations are:

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

 &lt;P&gt;If no &lt;CODE&gt;doclet&lt;/CODE&gt; is set, then the &lt;CODE&gt;version&lt;/CODE&gt; and
 &lt;CODE&gt;author&lt;/CODE&gt; are by default &lt;CODE&gt;"yes"&lt;/CODE&gt;.

 &lt;P&gt;Note: This task is run on another VM because the Javadoc code calls
 &lt;CODE&gt;System.exit()&lt;/CODE&gt; 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="no (default protected)">
        
          <short-description>Scope to be processed.</short-description>
        
          <description>
          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="no">
        
          <short-description>Set an additional parameter on the command line.</short-description>
        
          <description>
          Set an additional parameter on the command line
        </description>
      
        </attribute>
      
        <attribute name="author" type="boolean" briefType="boolean" required="no">
        
          <short-description>Include the author tag in the generated documentation.</short-description>
        
          <description>
          Include the author tag in the generated documentation.
        </description>
      
        </attribute>
      
        <attribute name="bootclasspathref" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="no">
        
          <short-description>Adds a reference to a CLASSPATH defined elsewhere.</short-description>
        
          <description>
          Adds a reference to a CLASSPATH defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="bootclasspath" type="org.apache.tools.ant.types.Path" briefType="Path" required="no">
        
          <short-description>Boot classpath to use.</short-description>
        
          <description>
          Set the boot classpath to use.
        </description>
      
        </attribute>
      
        <attribute name="bottom" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Text to be placed at the bottom of each output file.</short-description>
        
          <description>
          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="no">
        
          <short-description>Charset for cross-platform viewing of generated documentation.</short-description>
        
          <description>
          Charset for cross-platform viewing of generated documentation.
        </description>
      
        </attribute>
      
        <attribute name="classpath" type="org.apache.tools.ant.types.Path" briefType="Path" required="no">
        
          <short-description>Classpath to be used for this javadoc run.</short-description>
        
          <description>
          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="no">
        
          <short-description>Adds a reference to a CLASSPATH defined elsewhere.</short-description>
        
          <description>
          Adds a reference to a CLASSPATH defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="defaultexcludes" type="boolean" briefType="boolean" required="no">
        
          <short-description>Sets whether default exclusions should be used or not.</short-description>
        
          <description>
          Sets whether default exclusions should be used or not.
        </description>
      
        </attribute>
      
        <attribute name="destdir" type="java.io.File" briefType="File" required="yes, unless a doclet has been specified.">
        
          <short-description>Directory where the Javadoc output will be generated.</short-description>
        
          <description>
          Set the directory where the Javadoc output will be generated.
        </description>
      
        </attribute>
      
        <attribute name="docencoding" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Output file encoding name.</short-description>
        
          <description>
          Output file encoding name.
        </description>
      
        </attribute>
      
        <attribute name="doclet" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Class that starts the doclet used in generating the 
 documentation.</short-description>
        
          <description>
          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="no">
        
          <short-description>Classpath used to find the doclet class.</short-description>
        
          <description>
          Set the classpath used to find the doclet class.
        </description>
      
        </attribute>
      
        <attribute name="docletpathref" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="no">
        
          <short-description>Classpath used to find the doclet class by reference.</short-description>
        
          <description>
          Set the classpath used to find the doclet class by reference.
        </description>
      
        </attribute>
      
        <attribute name="doctitle" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Title of the generated overview page.</short-description>
        
          <description>
          Set the title of the generated overview page.
        </description>
      
        </attribute>
      
        <attribute name="encoding" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Encoding name of the source files,.</short-description>
        
          <description>
          Set the encoding name of the source files,
        </description>
      
        </attribute>
      
        <attribute name="excludepackagenames" type="java.lang.String" briefType="String" required="no">
        
          <short-description>List of packages to be excluded.</short-description>
        
          <description>
          Set the list of packages to be excluded.
        </description>
      
        </attribute>
      
        <attribute name="extdirs" type="org.apache.tools.ant.types.Path" briefType="Path" required="no">
        
          <short-description>Location of the extensions directories.</short-description>
        
          <description>
          Set the location of the extensions directories.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no">
        
          <short-description>Should the build process fail if javadoc fails (as indicated by
 a non zero return code)?.</short-description>
        
          <description>
          Should the build process fail if javadoc fails (as indicated by
 a non zero return code)?

 &lt;p&gt;Default is false.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="footer" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Footer text to be placed at the bottom of each output file.</short-description>
        
          <description>
          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="no">
        
          <short-description>Group specified packages together in overview page.</short-description>
        
          <description>
          Group specified packages together in overview page.
        </description>
      
        </attribute>
      
        <attribute name="header" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Header text to be placed at the top of each output file.</short-description>
        
          <description>
          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="no">
        
          <short-description>Specifies the HTML help file to use.</short-description>
        
          <description>
          Specifies the HTML help file to use.
        </description>
      
        </attribute>
      
        <attribute name="link" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Create links to javadoc output at the given URL.</short-description>
        
          <description>
          Create links to javadoc output at the given URL.
        </description>
      
        </attribute>
      
        <attribute name="linkoffline" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Link to docs at "url" using package list at "url2"
 - separate the URLs by using a space character.</short-description>
        
          <description>
          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="no">
        
          <short-description>Local to use in documentation generation.</short-description>
        
          <description>
          Set the local to use in documentation generation.
        </description>
      
        </attribute>
      
        <attribute name="maxmemory" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Maximum memory to be used by the javadoc process.</short-description>
        
          <description>
          Set the maximum memory to be used by the javadoc process
        </description>
      
        </attribute>
      
        <attribute name="nodeprecated" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, do not include @deprecated information.</short-description>
        
          <description>
          If true, do not include @deprecated information.
        </description>
      
        </attribute>
      
        <attribute name="nodeprecatedlist" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, do not generate deprecated list.</short-description>
        
          <description>
          If true, do not generate deprecated list.
        </description>
      
        </attribute>
      
        <attribute name="nohelp" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, do not generate help link.</short-description>
        
          <description>
          If true, do not generate help link
        </description>
      
        </attribute>
      
        <attribute name="noindex" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, do not generate index.</short-description>
        
          <description>
          If true, do not generate index.
        </description>
      
        </attribute>
      
        <attribute name="nonavbar" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, do not generate navigation bar.</short-description>
        
          <description>
          If true, do not generate navigation bar.
        </description>
      
        </attribute>
      
        <attribute name="notree" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, do not generate class hierarchy.</short-description>
        
          <description>
          If true, do not generate class hierarchy.
        </description>
      
        </attribute>
      
        <attribute name="old" type="boolean" briefType="boolean" required="no">
        
          <short-description>Indicate whether Javadoc should produce old style (JDK 1.1) 
 documentation.</short-description>
        
          <description>
          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="no">
        
          <short-description>Specify the file containing the overview to be included in the generated
 documentation.</short-description>
        
          <description>
          Specify the file containing the overview to be included in the generated
 documentation.
        </description>
      
        </attribute>
      
        <attribute name="package" type="boolean" briefType="boolean" required="no">
        
          <short-description>Indicate whether only package, protected and public classes and 
 members are to be included in the scope processed.</short-description>
        
          <description>
          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="no">
        
          <short-description>The name of a file containing the packages to process.</short-description>
        
          <description>
          The name of a file containing the packages to process.
        </description>
      
        </attribute>
      
        <attribute name="packagenames" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Package names to be processed.</short-description>
        
          <description>
          Set the package names to be processed.
        </description>
      
        </attribute>
      
        <attribute name="private" type="boolean" briefType="boolean" required="no">
        
          <short-description>Indicate whether all classes and 
 members are to be included in the scope processed.</short-description>
        
          <description>
          Indicate whether all classes and 
 members are to be included in the scope processed
        </description>
      
        </attribute>
      
        <attribute name="protected" type="boolean" briefType="boolean" required="no">
        
          <short-description>Indicate whether only protected and public classes and members are to 
 be included in the scope processed.</short-description>
        
          <description>
          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="no">
        
          <short-description>Indicate whether only public classes and members are to be included in 
 the scope processed.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, generate warning about @serial tag.</short-description>
        
          <description>
          If true, generate warning about @serial tag.
        </description>
      
        </attribute>
      
        <attribute name="source" type="java.lang.String" briefType="String" required="no">
        
          <short-description>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>
          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="">
        
          <short-description>List of source files to process.</short-description>
        
          <description>
          Set the list of source files to process.
        </description>
      
        </attribute>
      
        <attribute name="sourcepath" type="org.apache.tools.ant.types.Path" briefType="Path" required="at least one of the three or nested      &lt;sourcepath&gt;, &lt;fileset&gt; or      &lt;packageset&gt;">
        
          <short-description>Specify where to find source file.</short-description>
        
          <description>
          Specify where to find source file
        </description>
      
        </attribute>
      
        <attribute name="sourcepathref" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="">
        
          <short-description>Adds a reference to a CLASSPATH defined elsewhere.</short-description>
        
          <description>
          Adds a reference to a CLASSPATH defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="splitindex" type="boolean" briefType="boolean" required="no">
        
          <short-description>Generate a split index.</short-description>
        
          <description>
          Generate a split index
        </description>
      
        </attribute>
      
        <attribute name="stylesheetfile" type="java.io.File" briefType="File" required="no">
        
          <short-description>Specifies the CSS stylesheet file to use.</short-description>
        
          <description>
          Specifies the CSS stylesheet file to use.
        </description>
      
        </attribute>
      
        <attribute name="use" type="boolean" briefType="boolean" required="no">
        
          <short-description>Generate the &amp;quot;use&amp;quot page for each package.</short-description>
        
          <description>
          Generate the &amp;quot;use&amp;quot page for each package.
        </description>
      
        </attribute>
      
        <attribute name="useexternalfile" type="boolean" briefType="boolean" required="no">
        
          <short-description>Work around command line length limit by using an external file
 for the sourcefiles.</short-description>
        
          <description>
          Work around command line length limit by using an external file
 for the sourcefiles.
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="no">
        
          <short-description>Run javadoc in verbose mode.</short-description>
        
          <description>
          Run javadoc in verbose mode
        </description>
      
        </attribute>
      
        <attribute name="version" type="boolean" briefType="boolean" required="no">
        
          <short-description>Include the version tag in the generated documentation.</short-description>
        
          <description>
          Include the version tag in the generated documentation.
        </description>
      
        </attribute>
      
        <attribute name="windowtitle" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Title to be placed in the HTML &amp;lt;title&amp;gt; tag of the 
 generated documentation.</short-description>
        
          <description>
          Set the title to be placed in the HTML &amp;lt;title&amp;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>Text to be placed at the bottom of each output file.</short-description>
        
          <description>
          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>Add a document title to use for the overview page.</short-description>
        
          <description>
          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>Add a package to be excluded from the javadoc run.</short-description>
        
          <description>
          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>Adds a fileset.</short-description>
        
          <description>
          Adds a fileset.

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

      
        <element name="footer" type="org.apache.tools.ant.taskdefs.Javadoc.Html" briefType="" required="NOTDEFINED">
        
          <short-description>Footer text to be placed at the bottom of each output file.</short-description>
        
          <description>
          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>Header text to be placed at the top of each output file.</short-description>
        
          <description>
          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>Add a single package to be processed.</short-description>
        
          <description>
          Add a single package to be processed.

 If the package name ends with &amp;quot;.*&amp;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>Adds a packageset.</short-description>
        
          <description>
          Adds a packageset.

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

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

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

      
        <element name="bootclasspath" type="org.apache.tools.ant.types.Path" briefType="Path" required="NOTDEFINED">
        
          <short-description>Create a Path to be configured with the boot classpath.</short-description>
        
          <description>
          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>Create a Path to be configured with the classpath to use.</short-description>
        
          <description>
          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>Create a doclet to be used in the documentation generation.</short-description>
        
          <description>
          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>Separates packages on the overview page into whatever
 groups you specify, one group per table.</short-description>
        
          <description>
          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>Create link to javadoc output at the given URL.</short-description>
        
          <description>
          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>Create a path to be configured with the locations of the source
 files.</short-description>
        
          <description>
          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>Creates and adds a -tag argument.</short-description>
        
          <description>
          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>Generates JNI header files using javah.</short-description>
  
    <description>
    Generates JNI header files using javah.

 This task can take the following arguments:
 &lt;ul&gt;
 &lt;li&gt;classname - the fully-qualified name of a class&lt;/li&gt;
 &lt;li&gt;outputFile - Concatenates the resulting header or source files for all
     the classes listed into this file&lt;/li&gt;
 &lt;li&gt;destdir - Sets the directory where javah saves the header files or the
     stub files&lt;/li&gt;
 &lt;li&gt;classpath&lt;/li&gt;
 &lt;li&gt;bootclasspath&lt;/li&gt;
 &lt;li&gt;force - Specifies that output files should always be written
(JDK1.2 only)&lt;/li&gt;
 &lt;li&gt;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)&lt;/li&gt;
 &lt;li&gt;stubs - generate C declarations from the Java object file (used with old)&lt;/li&gt;
 &lt;li&gt;verbose - causes javah to print a message to stdout concerning the status
     of the generated files&lt;/li&gt;
 &lt;li&gt;extdirs - Override location of installed extensions&lt;/li&gt;
 &lt;/ul&gt;
 Of these arguments, either &lt;b&gt;outputFile&lt;/b&gt; or &lt;b&gt;destdir&lt;/b&gt; is required,
 but not both. More than one classname may be specified, using a comma-separated
 list or by using &lt;code&gt;&amp;lt;class name="xxx"&amp;gt;&lt;/code&gt; elements within the task.
 &lt;p&gt;
 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>Adds a reference to a classpath defined elsewhere.</short-description>
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="bootclasspath" type="org.apache.tools.ant.types.Path" briefType="Path" required="no">
        
          <short-description>Location of bootstrap class files.</short-description>
        
          <description>
          location of bootstrap class files.
        </description>
      
        </attribute>
      
        <attribute name="class" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>The fully-qualified name of the class (or classes, separated by commas).</short-description>
        
          <description>
          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="no">
        
          <short-description>The classpath to use.</short-description>
        
          <description>
          the classpath to use.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="NOTDEFINED">
        
          <short-description>Adds a reference to a classpath defined elsewhere.</short-description>
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="destdir" type="java.io.File" briefType="File" required="">
        
          <short-description>Destination directory into which the Java source
 files should be compiled.</short-description>
        
          <description>
          Set the destination directory into which the Java source
 files should be compiled.
        </description>
      
        </attribute>
      
        <attribute name="force" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, output files should always be written (JDK1.2 only).</short-description>
        
          <description>
          If true, output files should always be written (JDK1.2 only).
        </description>
      
        </attribute>
      
        <attribute name="old" type="boolean" briefType="boolean" required="no">
        
          <short-description>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>
          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="yes">
        
          <short-description>Concatenates the resulting header or source files for all
 the classes listed into this file.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, generate C declarations from the Java object file (used with old).</short-description>
        
          <description>
          If true, generate C declarations from the Java object file (used with old).
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, causes Javah to print a message concerning
 the status of the generated files.</short-description>
        
          <description>
          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>Adds path to bootstrap class files.</short-description>
        
          <description>
          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>Adds class to process.</short-description>
        
          <description>
          Adds class to process.
        </description>
      
        </element>

      
        <element name="classpath" type="org.apache.tools.ant.types.Path" briefType="Path" required="NOTDEFINED">
        
          <short-description>Path to use for classpath.</short-description>
        
          <description>
          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>Runs JDepend tests.</short-description>
  
    <description>
    Runs JDepend tests.

 &lt;p&gt;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 &lt;a
 href="http://www.clarkware.com/software/JDepend.html"&gt;http://www.clarkware.com/software/JDepend.html&lt;/a&gt;.

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

 Default is &lt;tt&gt;java&lt;/tt&gt;. Ignored if no JVM is forked.
        </description>
      
        </attribute>
      
        <attribute name="outputfile" type="java.io.File" briefType="File" required="no">
        
          <short-description>The output file name.</short-description>
        
          <description>
          The output file name.
        </description>
      
        </attribute>
    
      </attributes>

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

      
        <element name="sourcespath" type="org.apache.tools.ant.types.Path" briefType="Path" required="NOTDEFINED">
        
          <short-description>Adds a path to source code to analyze.</short-description>
        
          <description>
          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>Runs the JJTree compiler compiler.</short-description>
  
    <description>
    Runs the JJTree compiler compiler.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="buildnodefiles" type="boolean" briefType="boolean" required="no">
        
          <short-description>BUILD_NODE_FILES grammar option.</short-description>
        
          <description>
          Sets the BUILD_NODE_FILES grammar option.
        </description>
      
        </attribute>
      
        <attribute name="javacchome" type="java.io.File" briefType="File" required="yes">
        
          <short-description>The directory containing the JavaCC distribution.</short-description>
        
          <description>
          The directory containing the JavaCC distribution.
        </description>
      
        </attribute>
      
        <attribute name="multi" type="boolean" briefType="boolean" required="no">
        
          <short-description>MULTI grammar option.</short-description>
        
          <description>
          Sets the MULTI grammar option.
        </description>
      
        </attribute>
      
        <attribute name="nodedefaultvoid" type="boolean" briefType="boolean" required="no">
        
          <short-description>NODE_DEFAULT_VOID grammar option.</short-description>
        
          <description>
          Sets the NODE_DEFAULT_VOID grammar option.
        </description>
      
        </attribute>
      
        <attribute name="nodefactory" type="boolean" briefType="boolean" required="no">
        
          <short-description>NODE_FACTORY grammar option.</short-description>
        
          <description>
          Sets the NODE_FACTORY grammar option.
        </description>
      
        </attribute>
      
        <attribute name="nodepackage" type="java.lang.String" briefType="String" required="no">
        
          <short-description>NODE_PACKAGE grammar option.</short-description>
        
          <description>
          Sets the NODE_PACKAGE grammar option.
        </description>
      
        </attribute>
      
        <attribute name="nodeprefix" type="java.lang.String" briefType="String" required="no">
        
          <short-description>NODE_PREFIX grammar option.</short-description>
        
          <description>
          Sets the NODE_PREFIX grammar option.
        </description>
      
        </attribute>
      
        <attribute name="nodescopehook" type="boolean" briefType="boolean" required="no">
        
          <short-description>NODE_SCOPE_HOOK grammar option.</short-description>
        
          <description>
          Sets the NODE_SCOPE_HOOK grammar option.
        </description>
      
        </attribute>
      
        <attribute name="nodeusesparser" type="boolean" briefType="boolean" required="no">
        
          <short-description>NODE_USES_PARSER grammar option.</short-description>
        
          <description>
          Sets the NODE_USES_PARSER grammar option.
        </description>
      
        </attribute>
      
        <attribute name="outputdirectory" type="java.io.File" briefType="File" required="no">
        
          <short-description>The directory to write the generated file to.</short-description>
        
          <description>
          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="no">
        
          <short-description>STATIC grammar option.</short-description>
        
          <description>
          Sets the STATIC grammar option.
        </description>
      
        </attribute>
      
        <attribute name="target" type="java.io.File" briefType="File" required="yes">
        
          <short-description>The jjtree grammar file to process.</short-description>
        
          <description>
          The jjtree grammar file to process.
        </description>
      
        </attribute>
      
        <attribute name="visitor" type="boolean" briefType="boolean" required="no">
        
          <short-description>VISITOR grammar option.</short-description>
        
          <description>
          Sets the VISITOR grammar option.
        </description>
      
        </attribute>
      
        <attribute name="visitorexception" type="java.lang.String" briefType="String" required="no">
        
          <short-description>VISITOR_EXCEPTION grammar option.</short-description>
        
          <description>
          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>Runs Sitraka JProbe Coverage.</short-description>
  
    <description>
    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...)
 &lt;p&gt;
 For additional information, visit &lt;a href="http://www.sitraka.com"&gt;www.sitraka.com&lt;/a&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="applet" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, run an applet.</short-description>
        
          <description>
          If true, run an applet.
        </description>
      
        </attribute>
      
        <attribute name="classname" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Classname to run as standalone or runner for filesets.</short-description>
        
          <description>
          classname to run as standalone or runner for filesets.
        </description>
      
        </attribute>
      
        <attribute name="exitprompt" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Toggles display of the console prompt: always, error, never.</short-description>
        
          <description>
          Toggles display of the console prompt: always, error, never
        </description>
      
        </attribute>
      
        <attribute name="finalsnapshot" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Type of snapshot to send at program termination: none, coverage, all.</short-description>
        
          <description>
          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>The directory where JProbe is installed.</short-description>
        
          <description>
          The directory where JProbe is installed.
        </description>
      
        </attribute>
      
        <attribute name="javaexe" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Path to the java executable.</short-description>
        
          <description>
          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>"all", "coverage",  or "none".</short-description>
        
          <description>
          "all", "coverage",  or "none".
        </description>
      
        </attribute>
      
        <attribute name="seedname" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Seed name for snapshot file.</short-description>
        
          <description>
          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>The path to the directory where snapshot files are stored.</short-description>
        
          <description>
          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>If true, track native methods.</short-description>
        
          <description>
          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>Indicates which virtual machine to run: "jdk117", "jdk118" or "java2".</short-description>
        
          <description>
          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>Set warning level (0-3, where 0 is the least amount of warnings).</short-description>
        
          <description>
          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>The physical path to the working directory for the VM.</short-description>
        
          <description>
          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>The classnames to execute.</short-description>
        
          <description>
          the classnames to execute.
        </description>
      
        </element>

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

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

      
        <element name="filters" type="org.apache.tools.ant.taskdefs.optional.sitraka.Filters" briefType="" required="NOTDEFINED">
        
          <short-description>Defines class/method filters based on pattern matching.</short-description>
        
          <description>
          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>Adds a JVM argument.</short-description>
        
          <description>
          Adds a JVM argument.
        </description>
      
        </element>

      
        <element name="socket" type="org.apache.tools.ant.taskdefs.optional.sitraka.Socket" briefType="" required="NOTDEFINED">
        
          <short-description>Define a host and port to connect to if you want to do
 remote viewing.</short-description>
        
          <description>
          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>Defines events to use for interacting with the
 collection of data performed during coverage.</short-description>
        
          <description>
          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>Runs the snapshot merge utility for JProbe Coverage.</short-description>
  
    <description>
    Runs the snapshot merge utility for JProbe Coverage.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="home" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>The directory where JProbe is installed.</short-description>
        
          <description>
          The directory where JProbe is installed.
        </description>
      
        </attribute>
      
        <attribute name="tofile" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Output snapshot file.</short-description>
        
          <description>
          Set the output snapshot file.
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, perform the merge in verbose mode giving details
 about the snapshot processing.</short-description>
        
          <description>
          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>Add a fileset containing the snapshots to include.</short-description>
        
          <description>
          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>Runs the JProbe Coverage 3.0 snapshot merge utility.</short-description>
  
    <description>
    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>Format of the report: "html", "text", or "xml".</short-description>
        
          <description>
          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>The directory where JProbe is installed.</short-description>
        
          <description>
          The directory where JProbe is installed.
        </description>
      
        </attribute>
      
        <attribute name="includesource" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If true, include text of the source code lines.</short-description>
        
          <description>
          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>A numeric value for the threshold for printing methods.</short-description>
        
          <description>
          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>The name of the snapshot file that is the source to the report.</short-description>
        
          <description>
          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>The name of the generated output file.</short-description>
        
          <description>
          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>The type of report to be generated: "executive", "summary",
 "detailed" or "verydetailed".</short-description>
        
          <description>
          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>Adds a set of classes whose coverage information will be
 checked against.</short-description>
        
          <description>
          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>Adds a path to source files.</short-description>
        
          <description>
          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>Runs a JSP compiler.</short-description>
  
    <description>
    Runs a JSP compiler.

 &lt;p&gt; 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.

 &lt;p&gt; 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).
 &lt;p&gt; 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.

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

  
    <structure>

    
      <attributes>
      
        <attribute name="classpath" type="org.apache.tools.ant.types.Path" briefType="Path" required="no">
        
          <short-description>Classpath to be used for this compilation.</short-description>
        
          <description>
          Set the classpath to be used for this compilation.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="no">
        
          <short-description>Adds a reference to a classpath defined elsewhere.</short-description>
        
          <description>
          Adds a reference to a classpath defined elsewhere
        </description>
      
        </attribute>
      
        <attribute name="compiler" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Class name of a JSP compiler adapter.</short-description>
        
          <description>
          Class name of a JSP compiler adapter.
        </description>
      
        </attribute>
      
        <attribute name="compilerclasspath" type="org.apache.tools.ant.types.Path" briefType="Path" required="no">
        
          <short-description>Classpath to be used to find this compiler adapter.</short-description>
        
          <description>
          Set the classpath to be used to find this compiler adapter
        </description>
      
        </attribute>
      
        <attribute name="destdir" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Destination directory into which the JSP source
 files should be compiled.</short-description>
        
          <description>
          Set the destination directory into which the JSP source
 files should be compiled.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no">
        
          <short-description>Whether or not the build should halt if compilation fails.</short-description>
        
          <description>
          Whether or not the build should halt if compilation fails.
 Defaults to &lt;code&gt;true&lt;/code&gt;.
        </description>
      
        </attribute>
      
        <attribute name="ieplugin" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Java Plugin CLASSID for Internet Explorer.</short-description>
        
          <description>
          Java Plugin CLASSID for Internet Explorer
        </description>
      
        </attribute>
      
        <attribute name="mapped" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, generate separate write() calls for each HTML line
 in the JSP.</short-description>
        
          <description>
          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="no">
        
          <short-description>Name of the package the compiled jsp files should be in.</short-description>
        
          <description>
          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="yes">
        
          <short-description>Path for source JSP files.</short-description>
        
          <description>
          Path for source JSP files.
        </description>
      
        </attribute>
      
        <attribute name="uribase" type="java.io.File" briefType="File" required="no">
        
          <short-description>The URI context of relative URI references in the JSP pages.</short-description>
        
          <description>
          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="no">
        
          <short-description>The root directory that uri files should be resolved
  against.</short-description>
        
          <description>
          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="no">
        
          <short-description>Verbose level of the compiler.</short-description>
        
          <description>
          Set the verbose level of the compiler
        </description>
      
        </attribute>
      
        <attribute name="webinc" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Output filename for the fraction of web.xml that lists
  servlets.</short-description>
        
          <description>
          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>Filename for web.xml.</short-description>
        
          <description>
          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>Adds a single webapp.</short-description>
        
          <description>
          Adds a single webapp.
        </description>
      
        </element>

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

      
        <element name="compilerclasspath" type="org.apache.tools.ant.types.Path" briefType="Path" required="NOTDEFINED">
        
          <short-description>Support nested compiler classpath, used to locate compiler adapter.</short-description>
        
          <description>
          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>Runs JUnit tests.</short-description>
  
    <description>
    Runs JUnit tests.

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

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

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

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

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

 &lt;p&gt; To spawn a new Java VM to prevent interferences between
 different testcases, you need to enable &lt;code&gt;fork&lt;/code&gt;.  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="no">
        
          <short-description>The directory to invoke the VM in.</short-description>
        
          <description>
          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="no">
        
          <short-description>Property to set to "true" if there is a error in a test.</short-description>
        
          <description>
          Property to set to "true" if there is a error in a test.

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

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

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

 &lt;p&gt;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.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="haltonerror" type="boolean" briefType="boolean" required="no; default is off.">
        
          <short-description>If true, stop the build process when there is an error in a test.</short-description>
        
          <description>
          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="no; default is off.">
        
          <short-description>If true, stop the build process if a test fails
 (errors are considered failures as well).</short-description>
        
          <description>
          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="no; default is true.">
        
          <short-description>If true, include ant.jar, optional.jar and junit.jar in the forked VM.</short-description>
        
          <description>
          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="no; default is java.">
        
          <short-description>The command used to invoke the Java Virtual Machine,
 default is 'java'.</short-description>
        
          <description>
          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="no">
        
          <short-description>Maximum memory to be used by all forked JVMs.</short-description>
        
          <description>
          Set the maximum memory to be used by all forked JVMs.
        </description>
      
        </attribute>
      
        <attribute name="newenvironment" type="boolean" briefType="boolean" required="no; default is false.">
        
          <short-description>If true, use a new environment when forked.</short-description>
        
          <description>
          If true, use a new environment when forked.

 &lt;p&gt;Will be ignored if we are not forking a new VM.&lt;/p&gt;
        </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="no; default is off.">
        
          <short-description>If true, print one-line statistics for each test, or "withOutAndErr"
 to also show standard output and error.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, send any output generated by tests to Ant's logging system
 as well as to the formatters.</short-description>
        
          <description>
          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.

 &lt;p&gt;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.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="timeout" type="java.lang.Integer" briefType="int" required="no">
        
          <short-description>Timeout value (in milliseconds).</short-description>
        
          <description>
          Set the timeout value (in milliseconds).

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

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

 &lt;p&gt;Will be ignored if we are not forking a new VM.&lt;/p&gt;
        </description>
      
        </element>

      
        <element name="formatter" type="org.apache.tools.ant.taskdefs.optional.junit.FormatterElement" briefType="" required="NOTDEFINED">
        
          <short-description>Add a new formatter to all tests of this task.</short-description>
        
          <description>
          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>Adds a system property that tests can access.</short-description>
        
          <description>
          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>Add a new single testcase.</short-description>
        
          <description>
          Add a new single testcase.
        </description>
      
        </element>

      
        <element name="batchtest" type="org.apache.tools.ant.taskdefs.optional.junit.BatchTest" briefType="" required="NOTDEFINED">
        
          <short-description>Adds a set of tests based on pattern matching.</short-description>
        
          <description>
          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>Adds path to classpath used for tests.</short-description>
        
          <description>
          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>Adds a JVM argument; ignored if not forking.</short-description>
        
          <description>
          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>Aggregates all &amp;lt;junit&amp;gt; XML formatter testsuite data under a specific directory and transforms the results via XSLT.</short-description>
  
    <description>
    Aggregates all &amp;lt;junit&amp;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.

 &lt;p&gt; 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>Destination directory where the results should be written.</short-description>
        
          <description>
          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>Name of the aggregegated results file.</short-description>
        
          <description>
          Set the name of the aggregegated results file. It must be relative
 from the &lt;tt&gt;todir&lt;/tt&gt; 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>Add a new fileset containing the XML results to aggregate.</short-description>
        
          <description>
          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>Generate a report based on the document created by the merge.</short-description>
        
          <description>
          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>Keyword substitution.</short-description>
  
    <description>
    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>Destination file.</short-description>
        
          <description>
          Set the destination file.
        </description>
      
        </attribute>
      
        <attribute name="keys" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Keys.</short-description>
        
          <description>
          Sets the keys.
Format string is like this:
&lt;p&gt;
name=value*name2=value
&lt;p&gt;
Names are case sensitive.
&lt;p&gt;
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>Seperator between name=value arguments
in setKeys().</short-description>
        
          <description>
          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>Source file.</short-description>
        
          <description>
          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>Load a file into a property</short-description>
  
    <description>
    Load a file into a property
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="encoding" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Encoding to use for input, defaults to the platform's default
 encoding.</short-description>
        
          <description>
          Encoding to use for input, defaults to the platform's default
 encoding. &lt;p&gt;

 For a list of possible values see &lt;a href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html"&gt;
 http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html
 &lt;/a&gt;.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no, default &quot;true&quot;">
        
          <short-description>If true, fail on load error.</short-description>
        
          <description>
          If true, fail on load error.
        </description>
      
        </attribute>
      
        <attribute name="property" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>Property name to save to.</short-description>
        
          <description>
          Property name to save to.
        </description>
      
        </attribute>
      
        <attribute name="srcfile" type="java.io.File" briefType="File" required="yes">
        
          <short-description>File to load.</short-description>
        
          <description>
          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>Add the FilterChain element.</short-description>
        
          <description>
          Add the FilterChain element.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="srcfile" type="java.io.File" briefType="File" required="yes">
        
          <short-description>File to load.</short-description>
        
          <description>
          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>Adds a FilterChain.</short-description>
        
          <description>
          Adds a FilterChain.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



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

  
    <short-description>A task to send SMTP email.</short-description>
  
    <description>
    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="">
        
          <short-description>Adds "bcc" address elements.</short-description>
        
          <description>
          Adds "bcc" address elements
        </description>
      
        </attribute>
      
        <attribute name="cclist" type="java.lang.String" briefType="String" required="">
        
          <short-description>Adds "cc" address elements.</short-description>
        
          <description>
          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="no">
        
          <short-description>Allows the build writer to choose the preferred encoding method.</short-description>
        
          <description>
          Allows the build writer to choose the preferred encoding method
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no.">
        
          <short-description>Indicates whether BuildExceptions should be passed back to the core.</short-description>
        
          <description>
          Indicates whether BuildExceptions should be passed back to the core
        </description>
      
        </attribute>
      
        <attribute name="files" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Adds a list of files to be attached.</short-description>
        
          <description>
          Adds a list of files to be attached
        </description>
      
        </attribute>
      
        <attribute name="from" type="java.lang.String" briefType="String" required="either a from attribute, or a &lt;from&gt;      element.">
        
          <short-description>Shorthand to set the from address element.</short-description>
        
          <description>
          Shorthand to set the from address element
        </description>
      
        </attribute>
      
        <attribute name="includefilenames" type="boolean" briefType="boolean" required="no">
        
          <short-description>Sets Includefilenames attribute.</short-description>
        
          <description>
          Sets Includefilenames attribute
        </description>
      
        </attribute>
      
        <attribute name="mailhost" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Host.</short-description>
        
          <description>
          Sets the host
        </description>
      
        </attribute>
      
        <attribute name="mailport" type="int" briefType="int" required="no">
        
          <short-description>Mail server port.</short-description>
        
          <description>
          Sets the mail server port
        </description>
      
        </attribute>
      
        <attribute name="message" type="java.lang.String" briefType="String" required="one of these or a      &lt;message&gt; element.">
        
          <short-description>Shorthand method to set the message.</short-description>
        
          <description>
          Shorthand method to set the message
        </description>
      
        </attribute>
      
        <attribute name="messagefile" type="java.io.File" briefType="File" required="">
        
          <short-description>Shorthand method to set the message from a file.</short-description>
        
          <description>
          Shorthand method to set the message from a file
        </description>
      
        </attribute>
      
        <attribute name="messagemimetype" type="java.lang.String" briefType="String" required="no">
        
          <short-description>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>
          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="no">
        
          <short-description>Subject line of the email.</short-description>
        
          <description>
          Sets the subject line of the email
        </description>
      
        </attribute>
      
        <attribute name="tolist" type="java.lang.String" briefType="String" required="at least one of these, or the         equivalent elements.">
        
          <short-description>Adds "to" address elements.</short-description>
        
          <description>
          Adds "to" address elements
        </description>
      
        </attribute>
    
      </attributes>

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

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

      
        <element name="fileset" type="org.apache.tools.ant.types.FileSet" briefType="Fileset" required="NOTDEFINED">
        
          <short-description>Adds a set of files (nested fileset attribute).</short-description>
        
          <description>
          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>Adds a from address element.</short-description>
        
          <description>
          Adds a from address element
        </description>
      
        </element>

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

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

    
      </elements>

  
    </structure>


  </task>



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

  
    <short-description>Creates a manifest file for inclusion in a JAR, Ant task wrapper around</short-description>
  
    <description>
    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="yes">
        
          <short-description>The name of the manifest file to create/update.</short-description>
        
          <description>
          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="no">
        
          <short-description>Update policy: either "update" or "replace"; default is "replace".</short-description>
        
          <description>
          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>Add an attribute to the manifest - it is added to the main section.</short-description>
        
          <description>
          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>Add a section to the manifest.</short-description>
        
          <description>
          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>Invokes the Metamata Audit/ Webgain Quality Analyzer on a set of Java files.</short-description>
  
    <description>
    Invokes the Metamata Audit/ Webgain Quality Analyzer on a set of Java files.
 &lt;p&gt;
 &lt;i&gt;maudit&lt;/i&gt; 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 &lt;tt&gt;etc&lt;/tt&gt; directory, so that an HTML report 
 can be generated from the XML file.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="fix" type="boolean" briefType="boolean" required="no.default to false.">
        
          <short-description>Automatically fix certain errors 
 (those marked as fixable in the manual);
 optional, default=false.</short-description>
        
          <description>
          Automatically fix certain errors 
 (those marked as fixable in the manual);
 optional, default=false
        </description>
      
        </attribute>
      
        <attribute name="list" type="boolean" briefType="boolean" required="no. default to false.">
        
          <short-description>Creates listing file for each audited file; optional, default false.</short-description>
        
          <description>
          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="no">
        
          <short-description>Maximum memory for the JVM; optional.</short-description>
        
          <description>
          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="yes">
        
          <short-description>The home directory containing the Metamata distribution; required.</short-description>
        
          <description>
          The home directory containing the Metamata distribution; required
        </description>
      
        </attribute>
      
        <attribute name="tofile" type="java.io.File" briefType="File" required="yes">
        
          <short-description>The XML file to which the Audit result should be written to; required.</short-description>
        
          <description>
          The XML file to which the Audit result should be written to; required
        </description>
      
        </attribute>
      
        <attribute name="unused" type="boolean" briefType="boolean" required="no. default to false.">
        
          <short-description>Finds declarations unused in search paths; optional, default false.</short-description>
        
          <description>
          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 
 &lt;tt&gt;searchpath&lt;/tt&gt; element.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="fileset" type="org.apache.tools.ant.types.FileSet" briefType="Fileset" required="NOTDEFINED">
        
          <short-description>The java files or directory to audit.</short-description>
        
          <description>
          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>Class path (also source path unless one explicitly set).</short-description>
        
          <description>
          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>Additional optional parameters to pass to the JVM.</short-description>
        
          <description>
          Additional optional parameters to pass to the JVM. 
 You can avoid using the  &lt;code&gt;&amp;lt;jvmarg&amp;gt;&lt;/code&gt; by adding these empty 
 entries to &lt;code&gt;metamata.properties&lt;/code&gt; located at &lt;code&gt;${metamata.home}/bin&lt;/code&gt;

 &lt;pre&gt;metamata.classpath=
 metamata.sourcepath=
 metamata.baseclasspath=
 &lt;/pre&gt;
        </description>
      
        </element>

      
        <element name="rulespath" type="org.apache.tools.ant.types.Path" briefType="Path" required="NOTDEFINED">
        
          <short-description>Classpath for additional audit rules
 these must be placed before metamata.jar !!.</short-description>
        
          <description>
          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>Search path to use for unused global declarations; 
 required when &lt;tt&gt;unused&lt;/tt&gt; is set.</short-description>
        
          <description>
          search path to use for unused global declarations; 
 required when &lt;tt&gt;unused&lt;/tt&gt; is set.
        </description>
      
        </element>

      
        <element name="sourcepath" type="org.apache.tools.ant.types.Path" briefType="Path" required="NOTDEFINED">
        
          <short-description>Source path.</short-description>
        
          <description>
          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>A task to send SMTP email; Use &lt;tt&gt;mail&lt;/tt&gt; instead</short-description>
  
    <description>
    A task to send SMTP email; Use &lt;tt&gt;mail&lt;/tt&gt; instead
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="bcclist" type="java.lang.String" briefType="String" required="">
        
          <short-description>Adds "bcc" address elements.</short-description>
        
          <description>
          Adds "bcc" address elements
        </description>
      
        </attribute>
      
        <attribute name="cclist" type="java.lang.String" briefType="String" required="">
        
          <short-description>Adds "cc" address elements.</short-description>
        
          <description>
          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>Allows the build writer to choose the preferred encoding method.</short-description>
        
          <description>
          Allows the build writer to choose the preferred encoding method
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no, default to &quot;true&quot;">
        
          <short-description>Indicates whether BuildExceptions should be passed back to the core.</short-description>
        
          <description>
          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>Adds a list of files to be attached.</short-description>
        
          <description>
          Adds a list of files to be attached
        </description>
      
        </attribute>
      
        <attribute name="from" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>Shorthand to set the from address element.</short-description>
        
          <description>
          Shorthand to set the from address element
        </description>
      
        </attribute>
      
        <attribute name="includefilenames" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Sets Includefilenames attribute.</short-description>
        
          <description>
          Sets Includefilenames attribute
        </description>
      
        </attribute>
      
        <attribute name="mailhost" type="java.lang.String" briefType="String" required="no, default to &quot;localhost&quot;">
        
          <short-description>Host.</short-description>
        
          <description>
          Sets the host
        </description>
      
        </attribute>
      
        <attribute name="mailport" type="int" briefType="int" required="NOTDEFINED">
        
          <short-description>Mail server port.</short-description>
        
          <description>
          Sets the mail server port
        </description>
      
        </attribute>
      
        <attribute name="message" type="java.lang.String" briefType="String" required="no, but only one of of &apos;message&apos; or        &apos;messagefile&apos; may be specified. if not specified, a fileset must be        provided.">
        
          <short-description>Shorthand method to set the message.</short-description>
        
          <description>
          Shorthand method to set the message
        </description>
      
        </attribute>
      
        <attribute name="messagefile" type="java.io.File" briefType="File" required="">
        
          <short-description>Shorthand method to set the message from a file.</short-description>
        
          <description>
          Shorthand method to set the message from a file
        </description>
      
        </attribute>
      
        <attribute name="messagemimetype" type="java.lang.String" briefType="String" required="no, defaults to &quot;text/plain&quot;">
        
          <short-description>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>
          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="no">
        
          <short-description>Subject line of the email.</short-description>
        
          <description>
          Sets the subject line of the email
        </description>
      
        </attribute>
      
        <attribute name="tolist" type="java.lang.String" briefType="String" required="yes, at least one of &apos;tolist&apos;, &apos;cclist&apos;,        or &apos;bcclist&apos; must be specified.">
        
          <short-description>Adds "to" address elements.</short-description>
        
          <description>
          Adds "to" address elements
        </description>
      
        </attribute>
    
      </attributes>

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

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

      
        <element name="fileset" type="org.apache.tools.ant.types.FileSet" briefType="Fileset" required="NOTDEFINED">
        
          <short-description>Adds a set of files (nested fileset attribute).</short-description>
        
          <description>
          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>Adds a from address element.</short-description>
        
          <description>
          Adds a from address element
        </description>
      
        </element>

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

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

    
      </elements>

  
    </structure>


  </task>



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

  
    <short-description>Creates a given directory.</short-description>
  
    <description>
    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="yes">
        
          <short-description>The directory to create; required.</short-description>
        
          <description>
          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>Computes the metrics of a set of Java files and write the results to an XML file.</short-description>
  
    <description>
    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 &lt;tt&gt;etc&lt;/tt&gt; directory,
 so that an HTML report can be generated from the XML file.
 &lt;p&gt;
 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="yes">
        
          <short-description>Granularity of the audit.</short-description>
        
          <description>
          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="no">
        
          <short-description>Maximum memory for the JVM; optional.</short-description>
        
          <description>
          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="yes">
        
          <short-description>The home directory containing the Metamata distribution; required.</short-description>
        
          <description>
          The home directory containing the Metamata distribution; required
        </description>
      
        </attribute>
      
        <attribute name="tofile" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Output XML file.</short-description>
        
          <description>
          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>The java files or directory to audit.</short-description>
        
          <description>
          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>Class path (also source path unless one explicitly set).</short-description>
        
          <description>
          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>Additional optional parameters to pass to the JVM.</short-description>
        
          <description>
          Additional optional parameters to pass to the JVM. 
 You can avoid using the  &lt;code&gt;&amp;lt;jvmarg&amp;gt;&lt;/code&gt; by adding these empty 
 entries to &lt;code&gt;metamata.properties&lt;/code&gt; located at &lt;code&gt;${metamata.home}/bin&lt;/code&gt;

 &lt;pre&gt;metamata.classpath=
 metamata.sourcepath=
 metamata.baseclasspath=
 &lt;/pre&gt;
        </description>
      
        </element>

      
        <element name="path" type="org.apache.tools.ant.types.Path" briefType="Path" required="NOTDEFINED">
        
          <short-description>New path (directory) to measure metrics from.</short-description>
        
          <description>
          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>Source path.</short-description>
        
          <description>
          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>Moves a file or directory to a new file or directory.</short-description>
  
    <description>
    Moves a file or directory to a new file or directory.
 By default, the
 destination file is overwritten if it already exists.
 When &lt;i&gt;overwrite&lt;/i&gt; 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.

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="encoding" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Character encoding.</short-description>
        
          <description>
          Sets the character encoding
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>If false, note errors to the output but keep going.</short-description>
        
          <description>
          If false, note errors to the output but keep going.
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="one of file or       at least one nested fileset element">
        
          <short-description>Single source file to copy.</short-description>
        
          <description>
          Sets a single source file to copy.
        </description>
      
        </attribute>
      
        <attribute name="filtering" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, enables filtering.</short-description>
        
          <description>
          If true, enables filtering.
        </description>
      
        </attribute>
      
        <attribute name="flatten" type="boolean" briefType="boolean" required="no">
        
          <short-description>When copying directory trees, the files can be "flattened"
 into a single directory.</short-description>
        
          <description>
          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="no">
        
          <short-description>Used to copy empty directories.</short-description>
        
          <description>
          Used to copy empty directories.
        </description>
      
        </attribute>
      
        <attribute name="overwrite" type="boolean" briefType="boolean" required="no">
        
          <short-description>Overwrite any existing destination file(s).</short-description>
        
          <description>
          Overwrite any existing destination file(s).
        </description>
      
        </attribute>
      
        <attribute name="preservelastmodified" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Give the copied files the same last modified time as the original files.</short-description>
        
          <description>
          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="">
        
          <short-description>Destination directory.</short-description>
        
          <description>
          Sets the destination directory.
        </description>
      
        </attribute>
      
        <attribute name="tofile" type="java.io.File" briefType="File" required="with the file attribute,      either tofile or todir can be used.  with nested filesets,      if the fileset size is greater than 1 or if the only entry in the fileset is a      directory or if the file attribute is already specified, only      todir is allowed">
        
          <short-description>Destination file.</short-description>
        
          <description>
          Sets the destination file.
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Used to force listing of all names of copied files.</short-description>
        
          <description>
          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>Adds a set of files to copy.</short-description>
        
          <description>
          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>Adds a FilterChain.</short-description>
        
          <description>
          Adds a FilterChain.
        </description>
      
        </element>

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

      
        <element name="mapper" type="org.apache.tools.ant.types.Mapper" briefType="Mapper" required="NOTDEFINED">
        
          <short-description>Defines the mapper to map source to destination files.</short-description>
        
          <description>
          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>Simple Metamata MParse task.</short-description>
  
    <description>
    Simple Metamata MParse task.
 Based on the original written by
 &lt;a href="mailto:thomas.haas@softwired-inc.com"&gt;Thomas Haas&lt;/a&gt;.
 This version was written for Metamata 2.0 available at
 &lt;a href="http://www.metamata.com"&gt;http://www.metamata.com&lt;/a&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="cleanup" type="boolean" briefType="boolean" required="no. default to false">
        
          <short-description>Remove the intermediate Sun JavaCC file 
 ; optional, default false.</short-description>
        
          <description>
          Remove the intermediate Sun JavaCC file 
 ; optional, default false.
        </description>
      
        </attribute>
      
        <attribute name="debugparser" type="boolean" briefType="boolean" required="no">
        
          <short-description>Set parser debug mode; optional, default false.</short-description>
        
          <description>
          set parser debug mode; optional, default false
        </description>
      
        </attribute>
      
        <attribute name="debugscanner" type="boolean" briefType="boolean" required="no">
        
          <short-description>Set scanner debug mode; optional, default false.</short-description>
        
          <description>
          set scanner debug mode; optional, default false
        </description>
      
        </attribute>
      
        <attribute name="maxmemory" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Maximum memory for the JVM; optional.</short-description>
        
          <description>
          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="yes">
        
          <short-description>The home directory containing the Metamata distribution; required.</short-description>
        
          <description>
          The home directory containing the Metamata distribution; required
        </description>
      
        </attribute>
      
        <attribute name="target" type="java.io.File" briefType="File" required="yes">
        
          <short-description>The .jj file to process; required.</short-description>
        
          <description>
          The .jj file to process; required.
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="no">
        
          <short-description>Set verbose mode; optional, default false.</short-description>
        
          <description>
          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>Create a classpath entry.</short-description>
        
          <description>
          create a classpath entry
        </description>
      
        </element>

      
        <element name="jvmarg" type="org.apache.tools.ant.types.Commandline.Argument" briefType="" required="NOTDEFINED">
        
          <short-description>Additional optional parameters to pass to the JVM.</short-description>
        
          <description>
          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>Creates a sourcepath entry.</short-description>
        
          <description>
          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>Converts files from native encodings to ASCII.</short-description>
  
    <description>
    Converts files from native encodings to ASCII.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="dest" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Destination directory to place converted files into.</short-description>
        
          <description>
          Set the destination directory to place converted files into.
        </description>
      
        </attribute>
      
        <attribute name="encoding" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Encoding to translate to/from.</short-description>
        
          <description>
          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="no">
        
          <short-description>Extension which converted files should have.</short-description>
        
          <description>
          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="no">
        
          <short-description>Flag the conversion to run in the reverse sense,
 that is Ascii to Native encoding.</short-description>
        
          <description>
          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="no">
        
          <short-description>Source directory in which to find files to convert.</short-description>
        
          <description>
          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>Defines the FileNameMapper to use (nested mapper element).</short-description>
        
          <description>
          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>Compiles NetRexx source files.</short-description>
  
    <description>
    Compiles NetRexx source files.
 This task can take the following
 arguments:
 &lt;ul&gt;
 &lt;li&gt;binary&lt;/li&gt;
 &lt;li&gt;classpath&lt;/li&gt;
 &lt;li&gt;comments&lt;/li&gt;
 &lt;li&gt;compile&lt;/li&gt;
 &lt;li&gt;console&lt;/li&gt;
 &lt;li&gt;crossref&lt;/li&gt;
 &lt;li&gt;decimal&lt;/li&gt;
 &lt;li&gt;destdir&lt;/li&gt;
 &lt;li&gt;diag&lt;/li&gt;
 &lt;li&gt;explicit&lt;/li&gt;
 &lt;li&gt;format&lt;/li&gt;
 &lt;li&gt;keep&lt;/li&gt;
 &lt;li&gt;logo&lt;/li&gt;
 &lt;li&gt;replace&lt;/li&gt;
 &lt;li&gt;savelog&lt;/li&gt;
 &lt;li&gt;srcdir&lt;/li&gt;
 &lt;li&gt;sourcedir&lt;/li&gt;
 &lt;li&gt;strictargs&lt;/li&gt;
 &lt;li&gt;strictassign&lt;/li&gt;
 &lt;li&gt;strictcase&lt;/li&gt;
 &lt;li&gt;strictimport&lt;/li&gt;
 &lt;li&gt;symbols&lt;/li&gt;
 &lt;li&gt;time&lt;/li&gt;
 &lt;li&gt;trace&lt;/li&gt;
 &lt;li&gt;utf8&lt;/li&gt;
 &lt;li&gt;verbose&lt;/li&gt;
 &lt;li&gt;suppressMethodArgumentNotUsed&lt;/li&gt;
 &lt;li&gt;suppressPrivatePropertyNotUsed&lt;/li&gt;
 &lt;li&gt;suppressVariableNotUsed&lt;/li&gt;
 &lt;li&gt;suppressExceptionNotSignalled&lt;/li&gt;
 &lt;li&gt;suppressDeprecation&lt;/li&gt;
 &lt;/ul&gt;
 Of these arguments, the &lt;b&gt;srcdir&lt;/b&gt; argument is required.

 &lt;p&gt;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.
 &lt;p&gt;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:
 &lt;ol&gt;
 &lt;li&gt;The current directory, and,&lt;/li&gt;
 &lt;li&gt;The directory the source is in (see sourcedir option)
 &lt;/ol&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="binary" type="boolean" briefType="boolean" required="no">
        
          <short-description>Set whether literals are treated as binary, rather than NetRexx types.</short-description>
        
          <description>
          Set whether literals are treated as binary, rather than NetRexx types
        </description>
      
        </attribute>
      
        <attribute name="classpath" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Classpath used for NetRexx compilation.</short-description>
        
          <description>
          Set the classpath used for NetRexx compilation
        </description>
      
        </attribute>
      
        <attribute name="comments" type="boolean" briefType="boolean" required="no">
        
          <short-description>Set whether comments are passed through to the generated java source.</short-description>
        
          <description>
          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="no">
        
          <short-description>Set whether error messages come out in compact or verbose format.</short-description>
        
          <description>
          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="no">
        
          <short-description>Set whether the NetRexx compiler should compile the generated java code
 Valid true values are "on" or "true".</short-description>
        
          <description>
          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="no">
        
          <short-description>Set whether or not messages should be displayed on the 'console' Valid
 true values are "on" or "true".</short-description>
        
          <description>
          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="no">
        
          <short-description>Whether variable cross references are generated.</short-description>
        
          <description>
          Whether variable cross references are generated
        </description>
      
        </attribute>
      
        <attribute name="decimal" type="boolean" briefType="boolean" required="no">
        
          <short-description>Set whether decimal arithmetic should be used for the netrexx code.</short-description>
        
          <description>
          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="yes">
        
          <short-description>Destination directory into which the NetRexx source files
 should be copied and then compiled.</short-description>
        
          <description>
          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="no">
        
          <short-description>Whether diagnostic information about the compile is generated.</short-description>
        
          <description>
          Whether diagnostic information about the compile is generated
        </description>
      
        </attribute>
      
        <attribute name="explicit" type="boolean" briefType="boolean" required="no">
        
          <short-description>Sets whether variables must be declared explicitly before use.</short-description>
        
          <description>
          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="no">
        
          <short-description>Whether the generated java code is formatted nicely or left to match
 NetRexx line numbers for call stack debugging.</short-description>
        
          <description>
          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="no">
        
          <short-description>Whether the generated java code is produced Valid true values are "on"
 or "true".</short-description>
        
          <description>
          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="no">
        
          <short-description>Sets whether the generated java source file should be kept after
 compilation.</short-description>
        
          <description>
          Sets whether the generated java source file should be kept after
 compilation. The generated files will have an extension of .java.keep,
 &lt;b&gt;not&lt;/b&gt; .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="no">
        
          <short-description>Whether the compiler text logo is displayed when compiling.</short-description>
        
          <description>
          Whether the compiler text logo is displayed when compiling
        </description>
      
        </attribute>
      
        <attribute name="replace" type="boolean" briefType="boolean" required="no">
        
          <short-description>Whether the generated .java file should be replaced when compiling
 Valid true values are "on" or "true".</short-description>
        
          <description>
          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="no">
        
          <short-description>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>
          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="no">
        
          <short-description>Tells the NetRexx compiler to store the class files in the same
 directory as the source files.</short-description>
        
          <description>
          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="yes">
        
          <short-description>Source dir to find the source Java files.</short-description>
        
          <description>
          Set the source dir to find the source Java files.
        </description>
      
        </attribute>
      
        <attribute name="strictargs" type="boolean" briefType="boolean" required="no">
        
          <short-description>Tells the NetRexx compiler that method calls always need parentheses,
 even if no arguments are needed, e.g.</short-description>
        
          <description>
          Tells the NetRexx compiler that method calls always need parentheses,
 even if no arguments are needed, e.g. &lt;code&gt;aStringVar.getBytes&lt;/code&gt;
 vs. &lt;code&gt;aStringVar.getBytes()&lt;/code&gt; 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="no">
        
          <short-description>Tells the NetRexx compile that assignments must match exactly on type.</short-description>
        
          <description>
          Tells the NetRexx compile that assignments must match exactly on type
        </description>
      
        </attribute>
      
        <attribute name="strictcase" type="boolean" briefType="boolean" required="no">
        
          <short-description>Specifies whether the NetRexx compiler should be case sensitive or not.</short-description>
        
          <description>
          Specifies whether the NetRexx compiler should be case sensitive or not
        </description>
      
        </attribute>
      
        <attribute name="strictimport" type="boolean" briefType="boolean" required="no">
        
          <short-description>Sets whether classes need to be imported explicitly using an &lt;code&gt;import&lt;/code&gt;
 statement.</short-description>
        
          <description>
          Sets whether classes need to be imported explicitly using an &lt;code&gt;import&lt;/code&gt;
 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="no">
        
          <short-description>Sets whether local properties need to be qualified explicitly using
 &lt;code&gt;this&lt;/code&gt; Valid true values are "on" or "true".</short-description>
        
          <description>
          Sets whether local properties need to be qualified explicitly using
 &lt;code&gt;this&lt;/code&gt; 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="no">
        
          <short-description>Whether the compiler should force catching of exceptions by explicitly
 named types.</short-description>
        
          <description>
          Whether the compiler should force catching of exceptions by explicitly
 named types
        </description>
      
        </attribute>
      
        <attribute name="suppressdeprecation" type="boolean" briefType="boolean" required="no">
        
          <short-description>Tells whether we should filter out any deprecation-messages
 of the compiler out.</short-description>
        
          <description>
          Tells whether we should filter out any deprecation-messages
 of the compiler out.
        </description>
      
        </attribute>
      
        <attribute name="suppressexceptionnotsignalled" type="boolean" briefType="boolean" required="no">
        
          <short-description>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>
          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="no">
        
          <short-description>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>
          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="no">
        
          <short-description>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>
          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="no">
        
          <short-description>Whether the task should suppress the "Variable is set but not used" in
 strictargs-Mode.</short-description>
        
          <description>
          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="no">
        
          <short-description>Sets whether debug symbols should be generated into the class file
 Valid true values are "on" or "true".</short-description>
        
          <description>
          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="no">
        
          <short-description>Asks the NetRexx compiler to print compilation times to the console
 Valid true values are "on" or "true".</short-description>
        
          <description>
          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="no">
        
          <short-description>No description.</short-description>
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="utf8" type="boolean" briefType="boolean" required="no">
        
          <short-description>Tells the NetRexx compiler that the source is in UTF8 Valid true values
 are "on" or "true".</short-description>
        
          <description>
          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="no">
        
          <short-description>Whether lots of warnings and error messages should be generated.</short-description>
        
          <description>
          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>Adds specified files to Perforce.</short-description>
  
    <description>
    Adds specified files to Perforce.

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

  
    <structure>

    
      <attributes>
      
        <attribute name="changelist" type="int" briefType="int" required="NOTDEFINED">
        
          <short-description>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>
          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>The p4 client spec to use;
 optional, defaults to the current user.</short-description>
        
          <description>
          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>Set extra command options; only used on some
 of the Perforce tasks.</short-description>
        
          <description>
          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>Positive integer specifying the maximum length
   of the commandline when calling Perforce to add the files.</short-description>
        
          <description>
          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>Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.</short-description>
        
          <description>
          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>The p4d server and port to connect to;
 optional, default "perforce:1666".</short-description>
        
          <description>
          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>The p4 username;
 optional, defaults to the current user.</short-description>
        
          <description>
          The p4 username;
 optional, defaults to the current user
        </description>
      
        </attribute>
      
        <attribute name="view" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The client, branch or label view to operate upon;
 optional default "//...".</short-description>
        
          <description>
          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>Files to add.</short-description>
        
          <description>
          files to add
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



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

  
    <short-description>Requests a new changelist from the Perforce server.</short-description>
  
    <description>
    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>The p4 client spec to use;
 optional, defaults to the current user.</short-description>
        
          <description>
          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>Set extra command options; only used on some
 of the Perforce tasks.</short-description>
        
          <description>
          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>Description for ChangeList;optional.</short-description>
        
          <description>
          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>Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.</short-description>
        
          <description>
          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>The p4d server and port to connect to;
 optional, default "perforce:1666".</short-description>
        
          <description>
          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>The p4 username;
 optional, defaults to the current user.</short-description>
        
          <description>
          The p4 username;
 optional, defaults to the current user
        </description>
      
        </attribute>
      
        <attribute name="view" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The client, branch or label view to operate upon;
 optional default "//...".</short-description>
        
          <description>
          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>Obtains or sets the value of a counter.</short-description>
  
    <description>
    Obtains or sets the value of a counter.

 &lt;p&gt; 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.
 &lt;/p&gt;
 &lt;P&gt;
 The user performing this task must have Perforce &amp;quot;review&amp;quot; permissions
 as defined by Perforce protections in order for this task to succeed.
&lt;/P&gt;

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

  
    <structure>

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

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

 Simple re-write of P4Edit changing 'edit' to 'delete'.&lt;br&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="change" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>An existing changelist number for the deletion; optional
 but strongly recommended.</short-description>
        
          <description>
          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>The p4 client spec to use;
 optional, defaults to the current user.</short-description>
        
          <description>
          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>Set extra command options; only used on some
 of the Perforce tasks.</short-description>
        
          <description>
          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>Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.</short-description>
        
          <description>
          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>The p4d server and port to connect to;
 optional, default "perforce:1666".</short-description>
        
          <description>
          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>The p4 username;
 optional, defaults to the current user.</short-description>
        
          <description>
          The p4 username;
 optional, defaults to the current user
        </description>
      
        </attribute>
      
        <attribute name="view" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The client, branch or label view to operate upon;
 optional default "//...".</short-description>
        
          <description>
          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>Open file(s) for edit.</short-description>
  
    <description>
    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:&lt;br&gt;
 &amp;lt;p4edit change="${p4.change}" view="//depot/project/foo.txt" /&amp;gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="change" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>An existing changelist number to assign files to; optional
 but strongly recommended.</short-description>
        
          <description>
          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>The p4 client spec to use;
 optional, defaults to the current user.</short-description>
        
          <description>
          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>Set extra command options; only used on some
 of the Perforce tasks.</short-description>
        
          <description>
          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>Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.</short-description>
        
          <description>
          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>The p4d server and port to connect to;
 optional, default "perforce:1666".</short-description>
        
          <description>
          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>The p4 username;
 optional, defaults to the current user.</short-description>
        
          <description>
          The p4 username;
 optional, defaults to the current user
        </description>
      
        </attribute>
      
        <attribute name="view" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The client, branch or label view to operate upon;
 optional default "//...".</short-description>
        
          <description>
          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>Lists Perforce files currently on client.</short-description>
  
    <description>
    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>The p4 client spec to use;
 optional, defaults to the current user.</short-description>
        
          <description>
          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>Set extra command options; only used on some
 of the Perforce tasks.</short-description>
        
          <description>
          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>Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.</short-description>
        
          <description>
          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>The p4d server and port to connect to;
 optional, default "perforce:1666".</short-description>
        
          <description>
          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>The p4 username;
 optional, defaults to the current user.</short-description>
        
          <description>
          The p4 username;
 optional, defaults to the current user
        </description>
      
        </attribute>
      
        <attribute name="view" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The client, branch or label view to operate upon;
 optional default "//...".</short-description>
        
          <description>
          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>Creates a new Perforce label and set contents to reflect current client file revisions.</short-description>
  
    <description>
    Creates a new Perforce label and set contents to reflect current
  client file revisions.

  Label name defaults to AntLabel if none set.

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

  
    <structure>

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

  
    <structure>

    
      <attributes>
      
        <attribute name="client" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The p4 client spec to use;
 optional, defaults to the current user.</short-description>
        
          <description>
          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>Set extra command options; only used on some
 of the Perforce tasks.</short-description>
        
          <description>
          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>Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.</short-description>
        
          <description>
          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>The p4d server and port to connect to;
 optional, default "perforce:1666".</short-description>
        
          <description>
          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>The changelist to move files to; required.</short-description>
        
          <description>
          The changelist to move files to; required.
        </description>
      
        </attribute>
      
        <attribute name="user" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The p4 username;
 optional, defaults to the current user.</short-description>
        
          <description>
          The p4 username;
 optional, defaults to the current user
        </description>
      
        </attribute>
      
        <attribute name="view" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The client, branch or label view to operate upon;
 optional default "//...".</short-description>
        
          <description>
          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>Revert Perforce open files or files in a changelist</short-description>
  
    <description>
    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>The changelist to revert; optional.</short-description>
        
          <description>
          The changelist to revert; optional.
        </description>
      
        </attribute>
      
        <attribute name="client" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The p4 client spec to use;
 optional, defaults to the current user.</short-description>
        
          <description>
          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>Set extra command options; only used on some
 of the Perforce tasks.</short-description>
        
          <description>
          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>Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.</short-description>
        
          <description>
          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>The p4d server and port to connect to;
 optional, default "perforce:1666".</short-description>
        
          <description>
          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>Flag to revert only unchanged files (p4 revert -a); optional, default false.</short-description>
        
          <description>
          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>The p4 username;
 optional, defaults to the current user.</short-description>
        
          <description>
          The p4 username;
 optional, defaults to the current user
        </description>
      
        </attribute>
      
        <attribute name="view" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The client, branch or label view to operate upon;
 optional default "//...".</short-description>
        
          <description>
          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>Submits a numbered changelist to Perforce.</short-description>
  
    <description>
    Submits a numbered changelist to Perforce.

 &lt;B&gt;Note:&lt;/B&gt; 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:-&lt;br&gt;
 &amp;lt;p4submit change="${p4.change}" /&amp;gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="change" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The changelist number to submit; required.</short-description>
        
          <description>
          The changelist number to submit; required.
        </description>
      
        </attribute>
      
        <attribute name="client" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The p4 client spec to use;
 optional, defaults to the current user.</short-description>
        
          <description>
          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>Set extra command options; only used on some
 of the Perforce tasks.</short-description>
        
          <description>
          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>Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.</short-description>
        
          <description>
          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>The p4d server and port to connect to;
 optional, default "perforce:1666".</short-description>
        
          <description>
          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>The p4 username;
 optional, defaults to the current user.</short-description>
        
          <description>
          The p4 username;
 optional, defaults to the current user
        </description>
      
        </attribute>
      
        <attribute name="view" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The client, branch or label view to operate upon;
 optional default "//...".</short-description>
        
          <description>
          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>Synchronize client space to a Perforce depot view.</short-description>
  
    <description>
    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).&lt;/P&gt;

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

  
    <structure>

    
      <attributes>
      
        <attribute name="client" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The p4 client spec to use;
 optional, defaults to the current user.</short-description>
        
          <description>
          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>Set extra command options; only used on some
 of the Perforce tasks.</short-description>
        
          <description>
          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>Whether to stop the build (true, default) 
 or keep going if an error is returned from the p4 command.</short-description>
        
          <description>
          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>Force a refresh of files, if this attribute is set; false by default.</short-description>
        
          <description>
          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>Label to sync client to; optional.</short-description>
        
          <description>
          Label to sync client to; optional.
        </description>
      
        </attribute>
      
        <attribute name="port" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The p4d server and port to connect to;
 optional, default "perforce:1666".</short-description>
        
          <description>
          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>The p4 username;
 optional, defaults to the current user.</short-description>
        
          <description>
          The p4 username;
 optional, defaults to the current user
        </description>
      
        </attribute>
      
        <attribute name="view" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The client, branch or label view to operate upon;
 optional default "//...".</short-description>
        
          <description>
          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>Executes the contained tasks in separate threads, continuing once all are completed.</short-description>
  
    <description>
    Executes the contained tasks in separate threads, continuing
 once all are completed.
 &lt;p&gt;
  </description>

  
    <structure>

    
      <attributes>
    </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



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

  
    <short-description>Patches a file by applying a 'diff' file to it; requires "patch" to be on the execution path.</short-description>
  
    <description>
    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="no">
        
          <short-description>Flag to create backups; optional, default=false.</short-description>
        
          <description>
          flag to create backups; optional, default=false
        </description>
      
        </attribute>
      
        <attribute name="dir" type="java.io.File" briefType="File" required="no, default is the project&apos;s basedir.">
        
          <short-description>The directory to run the patch command in, defaults to the
 project's base directory.</short-description>
        
          <description>
          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="no">
        
          <short-description>Flag to ignore whitespace differences; default=false.</short-description>
        
          <description>
          flag to ignore whitespace differences; default=false
        </description>
      
        </attribute>
      
        <attribute name="originalfile" type="java.io.File" briefType="File" required="no, tries to guess it from the diff         file">
        
          <short-description>The file to patch; optional if it can be inferred from
 the diff file.</short-description>
        
          <description>
          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="yes">
        
          <short-description>The file containing the diff output; required.</short-description>
        
          <description>
          The file containing the diff output; required.
        </description>
      
        </attribute>
      
        <attribute name="quiet" type="boolean" briefType="boolean" required="no">
        
          <short-description>Work silently unless an error occurs; optional, default=false.</short-description>
        
          <description>
          Work silently unless an error occurs; optional, default=false
        </description>
      
        </attribute>
      
        <attribute name="reverse" type="boolean" briefType="boolean" required="no">
        
          <short-description>Assume patch was created with old and new files swapped; optional,
 default=false.</short-description>
        
          <description>
          Assume patch was created with old and new files swapped; optional,
 default=false
        </description>
      
        </attribute>
      
        <attribute name="strip" type="int" briefType="int" required="no">
        
          <short-description>Strip the smallest prefix containing &lt;i&gt;num&lt;/i&gt; leading slashes
 from filenames.</short-description>
        
          <description>
          Strip the smallest prefix containing &lt;i&gt;num&lt;/i&gt; leading slashes
 from filenames.

 &lt;p&gt;patch's &lt;i&gt;-p&lt;/i&gt; option.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



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

  
    <short-description>Converts path and classpath information to a specific target OS format.</short-description>
  
    <description>
    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="no, defaults to current jvm file.separator">
        
          <short-description>Default directory separator string;
 defaults to current JVM.</short-description>
        
          <description>
          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="no, defaults to current jvm file.pathseparator">
        
          <short-description>Default path separator string;
 defaults to current JVM.</short-description>
        
          <description>
          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="yes">
        
          <short-description>The property into which the converted path will be placed.</short-description>
        
          <description>
          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="no; if omitted, a nested          &lt;path&gt; element must be supplied.">
        
          <short-description>Adds a reference to a Path, FileSet, DirSet, or FileList defined
 elsewhere.</short-description>
        
          <description>
          Adds a reference to a Path, FileSet, DirSet, or FileList defined
 elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="setonempty" type="boolean" briefType="boolean" required="no; default is &quot;true&quot;.    ">
        
          <short-description>Set setonempty

 If false, don't set the new property if the result is the empty string.</short-description>
        
          <description>
          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="yes, unless pathsep and/or         dirsep are specified.      ">
        
          <short-description>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>
          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>Create a nested MAP element.</short-description>
        
          <description>
          Create a nested MAP element
        </description>
      
        </element>

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

    
      </elements>

  
    </structure>


  </task>



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

  
    <short-description>Sets a property by name, or set of properties (from file or resource) in the project.</short-description>
  
    <description>
    Sets a property by name, or set of properties (from file or
 resource) in the project.  &lt;/p&gt;
 Properties are immutable: whoever sets a property first freezes it for the
 rest of the build; they are most definately not variable. 
 &lt;p&gt;There are five ways to set properties:&lt;/p&gt;
 &lt;ul&gt;
   &lt;li&gt;By supplying both the &lt;i&gt;name&lt;/i&gt; and &lt;i&gt;value&lt;/i&gt; attribute.&lt;/li&gt;
   &lt;li&gt;By supplying both the &lt;i&gt;name&lt;/i&gt; and &lt;i&gt;refid&lt;/i&gt; attribute.&lt;/li&gt;
   &lt;li&gt;By setting the &lt;i&gt;file&lt;/i&gt; 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.&lt;/li&gt;
   &lt;li&gt;By setting the &lt;i&gt;resource&lt;/i&gt; 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.&lt;/li&gt;
   &lt;li&gt;By setting the &lt;i&gt;environment&lt;/i&gt; 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.&lt;/li&gt;
 &lt;/ul&gt;
 &lt;p&gt;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.&lt;/p&gt;
 &lt;p&gt;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.&lt;/p&gt;
 Properties are case sensitive.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="classpath" type="org.apache.tools.ant.types.Path" briefType="Path" required="no">
        
          <short-description>The classpath to use when looking up a resource.</short-description>
        
          <description>
          The classpath to use when looking up a resource.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="no">
        
          <short-description>The classpath to use when looking up a resource,
 given as reference to a &amp;lt;path&amp;gt; defined elsewhere.</short-description>
        
          <description>
          the classpath to use when looking up a resource,
 given as reference to a &amp;lt;path&amp;gt; defined elsewhere
        </description>
      
        </attribute>
      
        <attribute name="environment" type="java.lang.String" briefType="String" required="">
        
          <short-description>The prefix to use when retrieving environment variables.</short-description>
        
          <description>
          the prefix to use when retrieving environment variables. 
 Thus if you specify environment=&amp;quot;myenv&amp;quot; 
 you will be able to access OS-specific 
 environment variables via property names &amp;quot;myenv.PATH&amp;quot; or 
 &amp;quot;myenv.TERM&amp;quot;. 
 &lt;p&gt;
 Note that if you supply a property name with a final 
 &amp;quot;.&amp;quot; it will not be doubled. ie environment=&amp;quot;myenv.&amp;quot; will still 
 allow access of environment variables through &amp;quot;myenv.PATH&amp;quot; and 
 &amp;quot;myenv.TERM&amp;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 ;).&lt;br&gt;
 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="">
        
          <short-description>The filename of a property file to load.</short-description>
        
          <description>
          the filename of a property file to load.
        </description>
      
        </attribute>
      
        <attribute name="location" type="java.io.File" briefType="File" required="">
        
          <short-description>Property to the absolute filename of the
 given file.</short-description>
        
          <description>
          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="no">
        
          <short-description>Name of the property to set.</short-description>
        
          <description>
          sets the name of the property to set.
        </description>
      
        </attribute>
      
        <attribute name="prefix" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Prefix to apply to properties loaded using &lt;code&gt;file&lt;/code&gt;
 or &lt;code&gt;resource&lt;/code&gt;.</short-description>
        
          <description>
          Prefix to apply to properties loaded using &lt;code&gt;file&lt;/code&gt;
 or &lt;code&gt;resource&lt;/code&gt;. 
 A "." is appended to the prefix if not specified.
        </description>
      
        </attribute>
      
        <attribute name="refid" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="">
        
          <short-description>Reference to an Ant datatype
 declared elsewhere.</short-description>
        
          <description>
          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="one of these, when        not using the name attribute">
        
          <short-description>The resource name of a property file to load.</short-description>
        
          <description>
          the resource name of a property file to load
        </description>
      
        </attribute>
      
        <attribute name="value" type="java.lang.String" briefType="String" required="one of these, when using the         name attribute">
        
          <short-description>Value of the property.</short-description>
        
          <description>
          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>The classpath to use when looking up a resource.</short-description>
        
          <description>
          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>Modifies settings in a property file.</short-description>
  
    <description>
    Modifies settings in a property file.

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

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

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

If type is unspecified, it defaults to string

Parameter values:&lt;br&gt;
    &lt;ul&gt;&lt;li&gt;operation:&lt;/li&gt;
        &lt;ul&gt;&lt;li&gt;"=" (set -- default)&lt;/li&gt;
        &lt;li&gt;"-" (dec)&lt;/li&gt;
        &lt;li&gt;"+" (inc)&lt;/li&gt;

    &lt;li&gt;type:&lt;/li&gt;
        &lt;ul&gt;&lt;li&gt;"int"&lt;/li&gt;
        &lt;li&gt;"date"&lt;/li&gt;
        &lt;li&gt;"string"&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;

    &lt;li&gt;value:&lt;/li&gt;
      &lt;ul&gt;&lt;li&gt;holds the default value, if the property
              was not found in property file&lt;/li&gt;
          &lt;li&gt;"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.&lt;/li&gt;&lt;/ul&gt;

String property types can only use the "=" operation.
Int property types can only use the "=", "-" or "+" operations.&lt;p&gt;

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>Optional header comment for the file.</short-description>
        
          <description>
          optional header comment for the file
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Location of the property file to be edited; required.</short-description>
        
          <description>
          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>No description.</short-description>
        
          <description>
          
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



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

  
    <short-description>Extracts the latest edition of the source code from a PVCS repository.</short-description>
  
    <description>
    Extracts the latest edition of the source code from a PVCS repository.
 PVCS is a version control system
 developed by &lt;a href="http://www.merant.com/products/pvcs"&gt;Merant&lt;/a&gt;.
 &lt;br&gt;
 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.
 &lt;br&gt;
 This version has been tested agains PVCS version 6.5 and 6.6 under Windows and Solaris.

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

 &lt;b&gt;27-04-2001&lt;/b&gt; &lt;p&gt;UNC paths are now handled properly.
 Fix provided by Don Jeffery. He also added an &lt;i&gt;UpdateOnly&lt;/i&gt; 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="no">
        
          <short-description>The format of the folder names; optional.</short-description>
        
          <description>
          The format of the folder names; optional.
 This must be in a format suitable for 
 &lt;code&gt;java.text.MessageFormat&lt;/code&gt;.
  Index 1 of the format will be used as the file name.
  Defaults to &lt;code&gt;{0}-arc({1})&lt;/code&gt;
        </description>
      
        </attribute>
      
        <attribute name="force" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Specifies the value of the force argument; optional.</short-description>
        
          <description>
          Specifies the value of the force argument; optional.
 If set to &lt;i&gt;yes&lt;/i&gt; all files that exists and are 
 writable are overwritten. Default &lt;i&gt;no&lt;/i&gt; causes the files 
 that are writable to be ignored. This stops the PVCS command 
 &lt;i&gt;get&lt;/i&gt; to stop asking questions!
        </description>
      
        </attribute>
      
        <attribute name="ignorereturncode" type="boolean" briefType="boolean" required="no">
        
          <short-description>If set to true the return value from executing the pvcs
 commands are ignored; optional, default false.</short-description>
        
          <description>
          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="no">
        
          <short-description>Only files marked with this label are extracted; optional.</short-description>
        
          <description>
          Only files marked with this label are extracted; optional.
        </description>
      
        </attribute>
      
        <attribute name="linestart" type="java.lang.String" briefType="String" required="no">
        
          <short-description>What a valid return value from PVCS looks like
  when it describes a file.</short-description>
        
          <description>
          What a valid return value from PVCS looks like
  when it describes a file.  Defaults to &lt;code&gt;&amp;quot;P:&lt;/code&gt;.
 If you are not using an UNC name for your repository and the
 drive letter &lt;code&gt;P&lt;/code&gt; 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="no">
        
          <short-description>Specifies the name of the promotiongroup argument.</short-description>
        
          <description>
          Specifies the name of the promotiongroup argument
        </description>
      
        </attribute>
      
        <attribute name="pvcsbin" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Specifies the location of the PVCS bin directory; optional if on the PATH.</short-description>
        
          <description>
          Specifies the location of the PVCS bin directory; optional if on the PATH.
 On some systems the PVCS executables &lt;i&gt;pcli&lt;/i&gt;
 and &lt;i&gt;get&lt;/i&gt; 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="no">
        
          <short-description>The project within the PVCS repository to extract files from;
 optional, default &amp;quot;/&amp;quot;.</short-description>
        
          <description>
          The project within the PVCS repository to extract files from;
 optional, default &amp;quot;/&amp;quot;
        </description>
      
        </attribute>
      
        <attribute name="repository" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>The network name of the PVCS repository; required.</short-description>
        
          <description>
          The network name of the PVCS repository; required.
        </description>
      
        </attribute>
      
        <attribute name="updateonly" type="boolean" briefType="boolean" required="no">
        
          <short-description>If set to &lt;i&gt;true&lt;/i&gt; files are fetched only if 
 newer than existing local files; optional, default false.</short-description>
        
          <description>
          If set to &lt;i&gt;true&lt;/i&gt; 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="no">
        
          <short-description>Workspace to use; optional.</short-description>
        
          <description>
          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>Specify a project within the PVCS repository to extract files from.</short-description>
        
          <description>
          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>Adds a listener to the current build process that records the output to a file.</short-description>
  
    <description>
    Adds a listener to the current build process that records the
 output to a file.
 &lt;p&gt;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).&lt;/p&gt;
 &lt;p&gt;Some technical issues: the file's print stream is flushed for &amp;quot;finished&amp;quot;
 events (buildFinished, targetFinished and taskFinished), and is closed on
 a buildFinished event.&lt;/p&gt;
  </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>Action for the associated recorder entry.</short-description>
        
          <description>
          Sets the action for the associated recorder entry.
        </description>
      
        </attribute>
      
        <attribute name="append" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Whether or not the logger should append to a previous file.</short-description>
        
          <description>
          Whether or not the logger should append to a previous file.
        </description>
      
        </attribute>
      
        <attribute name="emacsmode" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>No description.</short-description>
        
          <description>
        </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>Level to which this recorder entry should log to.</short-description>
        
          <description>
          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>Name of the file to log to, and the name of the recorder
 entry.</short-description>
        
          <description>
          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>Renames a file.</short-description>
  
    <description>
    Renames a file.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="dest" type="java.io.File" briefType="File" required="yes">
        
          <short-description>New name of the file.</short-description>
        
          <description>
          Sets the new name of the file.
        </description>
      
        </attribute>
      
        <attribute name="replace" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Sets whether an existing file should be replaced.</short-description>
        
          <description>
          Sets whether an existing file should be replaced.
        </description>
      
        </attribute>
      
        <attribute name="src" type="java.io.File" briefType="File" required="yes">
        
          <short-description>File to be renamed.</short-description>
        
          <description>
          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>No Description.</short-description>
  
    <description>
    
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="fromextension" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The string that files must end in to be renamed.</short-description>
        
          <description>
          The string that files must end in to be renamed
        </description>
      
        </attribute>
      
        <attribute name="replace" type="boolean" briefType="boolean" required="no">
        
          <short-description>Store replace attribute - this determines whether the target file
 should be overwritten if present.</short-description>
        
          <description>
          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="yes">
        
          <short-description>Source dir to find the files to be renamed.</short-description>
        
          <description>
          Set the source dir to find the files to be renamed.
        </description>
      
        </attribute>
      
        <attribute name="toextension" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>The string that renamed files will end with on
 completion.</short-description>
        
          <description>
          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>Replaces all occurrences of one or more string tokens with given values in the indicated files.</short-description>
  
    <description>
    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 &lt;code&gt;&amp;lt;replacetoken&amp;gt;&lt;/code&gt; element.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="dir" type="java.io.File" briefType="File" required="">
        
          <short-description>The base directory to use when replacing a token in multiple files;
 required if &lt;code&gt;file&lt;/code&gt; is not defined.</short-description>
        
          <description>
          The base directory to use when replacing a token in multiple files;
 required if &lt;code&gt;file&lt;/code&gt; is not defined.
        </description>
      
        </attribute>
      
        <attribute name="encoding" type="java.lang.String" briefType="String" required="no - defaults to default jvm encoding">
        
          <short-description>File encoding to use on the files read and written by the task;
 optional, defaults to default JVM encoding.</short-description>
        
          <description>
          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="exactly one of the two.">
        
          <short-description>Source file; required unless &lt;code&gt;dir&lt;/code&gt; is set.</short-description>
        
          <description>
          Set the source file; required unless &lt;code&gt;dir&lt;/code&gt; is set.
        </description>
      
        </attribute>
      
        <attribute name="propertyfile" type="java.io.File" briefType="File" required="yes only if property attribute of &lt;replacefilter&gt; is used.">
        
          <short-description>The name of a property file from which properties specified using
 nested &lt;code&gt;&amp;lt;replacefilter&amp;gt;&lt;/code&gt; elements are drawn;
 Required only if &lt;i&gt;property&lt;/i&gt; attribute of
 &lt;code&gt;&amp;lt;replacefilter&amp;gt;&lt;/code&gt; is used.</short-description>
        
          <description>
          The name of a property file from which properties specified using
 nested &lt;code&gt;&amp;lt;replacefilter&amp;gt;&lt;/code&gt; elements are drawn;
 Required only if &lt;i&gt;property&lt;/i&gt; attribute of
 &lt;code&gt;&amp;lt;replacefilter&amp;gt;&lt;/code&gt; is used.
        </description>
      
        </attribute>
      
        <attribute name="replacefilterfile" type="java.io.File" briefType="File" required="no.">
        
          <short-description>Name of a property file containing filters; optional.</short-description>
        
          <description>
          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="no, by default no summary is produced">
        
          <short-description>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>
          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="yes, unless a nested      replacetoken element or the replacefilterfile      attribute is used.">
        
          <short-description>String token to replace;
 required unless a nested
 &lt;code&gt;replacetoken&lt;/code&gt; element or the &lt;code&gt;replacefilterfile&lt;/code&gt;
 attribute is used.</short-description>
        
          <description>
          Set the string token to replace;
 required unless a nested
 &lt;code&gt;replacetoken&lt;/code&gt; element or the &lt;code&gt;replacefilterfile&lt;/code&gt;
 attribute is used.
        </description>
      
        </attribute>
      
        <attribute name="value" type="java.lang.String" briefType="String" required="no">
        
          <short-description>String value to use as token replacement;
 optional, default is the empty string "".</short-description>
        
          <description>
          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>The token to filter as the text of a nested element.</short-description>
        
          <description>
          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>The string to replace the token as the text of a nested element.</short-description>
        
          <description>
          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>Add a nested &amp;lt;replacefilter&amp;gt; element.</short-description>
        
          <description>
          Add a nested &amp;lt;replacefilter&amp;gt; element.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



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

  
    <short-description>Performs regular expression string replacements in a text file.</short-description>
  
    <description>
    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 &lt;code&gt;ant.regexp.regexpimpl&lt;/code&gt;
 will be the classname of the implementation that will be used (the default
 is &lt;code&gt;org.apache.tools.ant.util.regexp.JakartaOroRegexp&lt;/code&gt; and
 requires the Jakarta Oro Package).

 &lt;pre&gt;
 For jdk  &amp;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 &amp;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:

     &amp;lt;replaceregexp file="file"
                    match="pattern" 
                    replace="pattern" 
                    flags="options"?
                    byline="true|false"? &amp;gt;
       regexp?
       substitution?
       fileset*
     &amp;lt;/replaceregexp&amp;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    --&amp;gt; A single file to operation on (mutually exclusive with the fileset subelements)
     match   --&amp;gt; The Regular expression to match 
     replace --&amp;gt; The Expression replacement string 
     flags   --&amp;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  --&amp;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'.

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="byline" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Process the file(s) one line at a time, executing the replacement
 on one line at a time.</short-description>
        
          <description>
          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 &lt;i&gt;false&lt;/i&gt;.&lt;/td&gt;
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>File for which the regular expression should be replaced;
 required unless a nested fileset is supplied.</short-description>
        
          <description>
          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>The flags to use when matching the regular expression.</short-description>
        
          <description>
          The flags to use when matching the regular expression.  For more
 information, consult the Perl5 syntax.
 &lt;ul&gt;
  &lt;li&gt;g : Global replacement.  Replace all occurences found
  &lt;li&gt;i : Case Insensitive.  Do not consider case in the match
  &lt;li&gt;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.
  &lt;li&gt; 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.
&lt;/ul&gt;
        </description>
      
        </attribute>
      
        <attribute name="match" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The regular expression pattern to match in the file(s);
 required if no nested &amp;lt;regexp&amp;gt; is used.</short-description>
        
          <description>
          the regular expression pattern to match in the file(s);
 required if no nested &amp;lt;regexp&amp;gt; is used
        </description>
      
        </attribute>
      
        <attribute name="replace" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The substitution pattern to place in the file(s) in place
 of the regular expression.</short-description>
        
          <description>
          The substitution pattern to place in the file(s) in place
 of the regular expression.
 Required if no nested &amp;lt;substitution&amp;gt; is used
        </description>
      
        </attribute>
    
      </attributes>

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

      
        <element name="regexp" type="org.apache.tools.ant.types.RegularExpression" briefType="" required="NOTDEFINED">
        
          <short-description>A regular expression.</short-description>
        
          <description>
          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>A substitution pattern.</short-description>
        
          <description>
          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>Runs the rmic compiler against classes.&lt;/p&gt; &lt;p&gt;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>
    Runs the rmic compiler against classes.&lt;/p&gt;
 &lt;p&gt;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 &lt;code&gt;Outer$$Inner&lt;/code&gt; instead of
 &lt;code&gt;Outer.Inner&lt;/code&gt;.&lt;/p&gt;
 &lt;p&gt;It is possible to refine the set of files that are being rmiced. This can be
 done with the &lt;i&gt;includes&lt;/i&gt;, &lt;i&gt;includesfile&lt;/i&gt;, &lt;i&gt;excludes&lt;/i&gt;, 
 &lt;i&gt;excludesfile&lt;/i&gt; and &lt;i&gt;defaultexcludes&lt;/i&gt;
 attributes. With the &lt;i&gt;includes&lt;/i&gt; or &lt;i&gt;includesfile&lt;/i&gt; attribute you specify the files you want to
 have included by using patterns. The &lt;i&gt;exclude&lt;/i&gt; or &lt;i&gt;excludesfile&lt;/i&gt; attribute is used to specify
 the files you want to have excluded. This is also done with patterns. And
 finally with the &lt;i&gt;defaultexcludes&lt;/i&gt; attribute, you can specify whether you
 want to use default exclusions or not. See the section on 
 directory based tasks&lt;/a&gt;, on how the
 inclusion/exclusion of files works, and how to write patterns.&lt;/p&gt;
 &lt;p&gt;This task forms an implicit FileSet and
 supports all attributes of &lt;code&gt;&amp;lt;fileset&amp;gt;&lt;/code&gt;
 (&lt;code&gt;dir&lt;/code&gt; becomes &lt;code&gt;base&lt;/code&gt;) as well as the nested
 &lt;code&gt;&amp;lt;include&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;exclude&amp;gt;&lt;/code&gt; and
 &lt;code&gt;&amp;lt;patternset&amp;gt;&lt;/code&gt; elements.&lt;/p&gt;
 &lt;p&gt;It is possible to use different compilers. This can be selected
 with the &amp;quot;build.rmic&amp;quot; property or the &lt;code&gt;compiler&lt;/code&gt;
 attribute. &lt;a name="compilervalues"&gt;There are three choices&lt;/a&gt;:&lt;/p&gt;
 &lt;ul&gt;
   &lt;li&gt;sun (the standard compiler of the JDK)&lt;/li&gt;
   &lt;li&gt;kaffe (the standard compiler of 
       {@link &lt;a href="http://www.kaffe.org"&gt;Kaffe&lt;/a&gt;})&lt;/li&gt;
   &lt;li&gt;weblogic&lt;/li&gt;
 &lt;/ul&gt;
 &lt;p&gt; The &lt;a href="http://dione.zcu.cz/~toman40/miniRMI/"&gt;miniRMI&lt;/a&gt;
 project contains a compiler implementation for this task as well,
 please consult miniRMI's documentation to learn how to use it.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="base" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Location to store the compiled files; required.</short-description>
        
          <description>
          Sets the location to store the compiled files; required
        </description>
      
        </attribute>
      
        <attribute name="classname" type="java.lang.String" briefType="String" required="no">
        
          <short-description>The class to run &lt;code&gt;rmic&lt;/code&gt; against;
 optional.</short-description>
        
          <description>
          Sets the the class to run &lt;code&gt;rmic&lt;/code&gt; against;
 optional
        </description>
      
        </attribute>
      
        <attribute name="classpath" type="org.apache.tools.ant.types.Path" briefType="Path" required="no">
        
          <short-description>Classpath to be used for this compilation.</short-description>
        
          <description>
          Set the classpath to be used for this compilation.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="no">
        
          <short-description>Adds to the classpath a reference to 
 a &amp;lt;path&amp;gt; defined elsewhere.</short-description>
        
          <description>
          Adds to the classpath a reference to 
 a &amp;lt;path&amp;gt; defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="compiler" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Compiler implementation to use; optional,
 defaults to the value of the &lt;code&gt;build.rmic&lt;/code&gt; property,
 or failing that, default compiler for the current VM.</short-description>
        
          <description>
          Sets the compiler implementation to use; optional,
 defaults to the value of the &lt;code&gt;build.rmic&lt;/code&gt; property,
 or failing that, default compiler for the current VM
        </description>
      
        </attribute>
      
        <attribute name="debug" type="boolean" briefType="boolean" required="no">
        
          <short-description>Generate debug info (passes -g to rmic);
 optional, defaults to false.</short-description>
        
          <description>
          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="no">
        
          <short-description>Extension directories that will be used during the
 compilation; optional.</short-description>
        
          <description>
          Sets the extension directories that will be used during the
 compilation; optional.
        </description>
      
        </attribute>
      
        <attribute name="filtering" type="boolean" briefType="boolean" required="no">
        
          <short-description>Indicates whether token filtering should take place;
 optional, default=false.</short-description>
        
          <description>
          indicates whether token filtering should take place;
 optional, default=false
        </description>
      
        </attribute>
      
        <attribute name="idl" type="boolean" briefType="boolean" required="no">
        
          <short-description>Indicates that IDL output should be 
 generated.</short-description>
        
          <description>
          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="no">
        
          <short-description>Pass additional arguments for idl compile.</short-description>
        
          <description>
          pass additional arguments for idl compile
        </description>
      
        </attribute>
      
        <attribute name="iiop" type="boolean" briefType="boolean" required="no">
        
          <short-description>Indicates that IIOP compatible stubs should
 be generated; optional, defaults to false 
 if not set.</short-description>
        
          <description>
          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="no">
        
          <short-description>Set additional arguments for iiop.</short-description>
        
          <description>
          Set additional arguments for iiop
        </description>
      
        </attribute>
      
        <attribute name="includeantruntime" type="boolean" briefType="boolean" required="no">
        
          <short-description>Sets whether or not to include ant's own classpath in this task's 
 classpath.</short-description>
        
          <description>
          Sets whether or not to include ant's own classpath in this task's 
 classpath.
 Optional; default is &lt;code&gt;true&lt;/code&gt;.
        </description>
      
        </attribute>
      
        <attribute name="includejavaruntime" type="boolean" briefType="boolean" required="no">
        
          <short-description>Task's classpath.</short-description>
        
          <description>
          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="no">
        
          <short-description>Optional directory to save generated source files to.</short-description>
        
          <description>
          optional directory to save generated source files to.
        </description>
      
        </attribute>
      
        <attribute name="stubversion" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Specify the JDK version for the generated stub code.</short-description>
        
          <description>
          Specify the JDK version for the generated stub code.
 Specify &amp;quot;1.1&amp;quot; to pass the &amp;quot;-v1.1&amp;quot; option to rmic.&lt;/td&gt;
        </description>
      
        </attribute>
      
        <attribute name="verify" type="boolean" briefType="boolean" required="no">
        
          <short-description>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>
          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>Creates a nested classpath element.</short-description>
        
          <description>
          Creates a nested classpath element.
        </description>
      
        </element>

      
        <element name="compilerarg" type="org.apache.tools.ant.taskdefs.Rmic.ImplementationSpecificArgument" briefType="" required="NOTDEFINED">
        
          <short-description>Adds an implementation specific command line argument.</short-description>
        
          <description>
          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>Maybe creates a nested extdirs element.</short-description>
        
          <description>
          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>Invokes the rpm tool to build a Linux installation file.</short-description>
  
    <description>
    Invokes the rpm tool to build a Linux installation file.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="cleanbuilddir" type="boolean" briefType="boolean" required="no">
        
          <short-description>Flag (optional, default=false) to remove 
 the generated files in the BUILD directory.</short-description>
        
          <description>
          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="no">
        
          <short-description>What command to issue to the rpm tool; optional.</short-description>
        
          <description>
          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>Optional file to save stderr to.</short-description>
        
          <description>
          Optional file to save stderr to
        </description>
      
        </attribute>
      
        <attribute name="output" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Optional file to save stdout to.</short-description>
        
          <description>
          Optional file to save stdout to.
        </description>
      
        </attribute>
      
        <attribute name="removesource" type="boolean" briefType="boolean" required="no">
        
          <short-description>Flag (optional, default=false) 
 to remove the sources after the build.</short-description>
        
          <description>
          Flag (optional, default=false) 
 to remove the sources after the build.
 See the the &lt;tt&gt;--rmsource&lt;/tt&gt;  option of rpmbuild.
        </description>
      
        </attribute>
      
        <attribute name="removespec" type="boolean" briefType="boolean" required="no">
        
          <short-description>Flag (optional, default=false) to remove the spec file from SPECS.</short-description>
        
          <description>
          Flag (optional, default=false) to remove the spec file from SPECS
        </description>
      
        </attribute>
      
        <attribute name="specfile" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>The name of the spec File to use; required.</short-description>
        
          <description>
          The name of the spec File to use; required.
        </description>
      
        </attribute>
      
        <attribute name="topdir" type="java.io.File" briefType="File" required="no">
        
          <short-description>The directory which will have the expected
 subdirectories, SPECS, SOURCES, BUILD, SRPMS ; optional.</short-description>
        
          <description>
          The directory which will have the expected
 subdirectories, SPECS, SOURCES, BUILD, SRPMS ; optional. 
 If this isn't specified,
 the &lt;tt&gt;baseDir&lt;/tt&gt; 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>Executes a script.</short-description>
  
    <description>
    Executes a script.
  </description>

  
    <structure>

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

    
      <elements>
    </elements>

      
      <body>
        
        <description>
          The script text.
        </description>
      
      </body>

  
    </structure>


  </task>



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

  
    <short-description>Sequential is a container task - it can contain other Ant tasks.</short-description>
  
    <description>
    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} 

 &lt;p&gt;
 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.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
    </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



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

  
    <short-description>Controls hot deployment tools for J2EE servers.</short-description>
  
    <description>
    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="yes">
        
          <short-description>The action to be performed, usually "deploy"; required.</short-description>
        
          <description>
          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="tool dependant">
        
          <short-description>The filename of the component to be deployed; optional
  depending upon the tool and the action.</short-description>
        
          <description>
          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>Creates a generic deployment tool.</short-description>
        
          <description>
          Creates a generic deployment tool.
  &lt;p&gt;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>Creates a JOnAS deployment tool, for deployment to JOnAS servers.</short-description>
        
          <description>
          Creates a JOnAS deployment tool, for deployment to JOnAS servers.
  &lt;p&gt;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>Creates a WebLogic deployment tool, for deployment to WebLogic servers.</short-description>
        
          <description>
          Creates a WebLogic deployment tool, for deployment to WebLogic servers.
  &lt;p&gt;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>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>
    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.
 &lt;p&gt; 
 Examples
 &lt;pre&gt;&amp;lt;setproxy/&amp;gt;&lt;/pre&gt;
 do nothing
 &lt;pre&gt;&amp;lt;setproxy proxyhost="firewall"/&amp;gt;&lt;/pre&gt;
 set the proxy to firewall:80
 &lt;pre&gt;&amp;lt;setproxy proxyhost="firewall" proxyport="81"/&amp;gt;&lt;/pre&gt;
 set the proxy to firewall:81
 &lt;pre&gt;&amp;lt;setproxy proxyhost=""/&amp;gt;&lt;/pre&gt;
 stop using the http proxy; don't change the socks settings
 &lt;pre&gt;&amp;lt;setproxy socksproxyhost="socksy"/&amp;gt;&lt;/pre&gt;
 use socks via socksy:1080
 &lt;pre&gt;&amp;lt;setproxy socksproxyhost=""/&amp;gt;&lt;/pre&gt;
 stop using the socks server
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="nonproxyhosts" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>A list of hosts to bypass the proxy on.</short-description>
        
          <description>
          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>The HTTP/ftp proxy host.</short-description>
        
          <description>
          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>The HTTP/ftp proxy port number; default is 80.</short-description>
        
          <description>
          the HTTP/ftp proxy port number; default is 80
        </description>
      
        </attribute>
      
        <attribute name="socksproxyhost" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The name of a Socks server.</short-description>
        
          <description>
          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>ProxyPort for socks connections.</short-description>
        
          <description>
          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>Signs jar or zip files with the javasign command line tool.</short-description>
  
    <description>
    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 &lt;tt&gt;signjar&lt;/tt&gt; 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.
 &lt;br&gt;  
 &lt;strong&gt;Note:&lt;/strong&gt; Requires Java 1.2 or later. &lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="alias" type="java.lang.String" briefType="String" required="yes.">
        
          <short-description>The alias to sign under; required.</short-description>
        
          <description>
          the alias to sign under; required
        </description>
      
        </attribute>
      
        <attribute name="internalsf" type="boolean" briefType="boolean" required="no; default false">
        
          <short-description>Flag to include the .SF file inside the signature;
 optional; default false.</short-description>
        
          <description>
          Flag to include the .SF file inside the signature;
 optional; default false
        </description>
      
        </attribute>
      
        <attribute name="jar" type="java.io.File" briefType="File" required="yes.">
        
          <short-description>The jar file to sign; required.</short-description>
        
          <description>
          the jar file to sign; required
        </description>
      
        </attribute>
      
        <attribute name="keypass" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Password for private key (if different); optional.</short-description>
        
          <description>
          password for private key (if different); optional
        </description>
      
        </attribute>
      
        <attribute name="keystore" type="java.io.File" briefType="File" required="no">
        
          <short-description>Keystore location; required.</short-description>
        
          <description>
          keystore location; required
        </description>
      
        </attribute>
      
        <attribute name="lazy" type="boolean" briefType="boolean" required="no; default false">
        
          <short-description>Flag to control whether the presence of a signature
 file means a JAR is signed;
 optional, default false.</short-description>
        
          <description>
          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="no; default false">
        
          <short-description>Flag to compute hash of entire manifest;
 optional, default false.</short-description>
        
          <description>
          flag to compute hash of entire manifest;
 optional, default false
        </description>
      
        </attribute>
      
        <attribute name="sigfile" type="java.io.File" briefType="File" required="no">
        
          <short-description>Name of .SF/.DSA file; optional.</short-description>
        
          <description>
          name of .SF/.DSA file; optional
        </description>
      
        </attribute>
      
        <attribute name="signedjar" type="java.io.File" briefType="File" required="no">
        
          <short-description>Name of signed JAR file; optional.</short-description>
        
          <description>
          name of signed JAR file; optional
        </description>
      
        </attribute>
      
        <attribute name="storepass" type="java.lang.String" briefType="String" required="yes.">
        
          <short-description>Password for keystore integrity; required.</short-description>
        
          <description>
          password for keystore integrity; required
        </description>
      
        </attribute>
      
        <attribute name="storetype" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Keystore type; optional.</short-description>
        
          <description>
          keystore type; optional
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="no; default false">
        
          <short-description>Enable verbose output when signing
 ; optional: default false.</short-description>
        
          <description>
          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>Adds a set of files to sign.</short-description>
        
          <description>
          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>Sleep, or pause, for a period of time.</short-description>
  
    <description>
    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.
&lt;p&gt;
 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&lt;/p&gt;
 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.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no">
        
          <short-description>Flag controlling whether to break the build on an error.</short-description>
        
          <description>
          flag controlling whether to break the build on an error.
        </description>
      
        </attribute>
      
        <attribute name="hours" type="int" briefType="int" required="no">
        
          <short-description>Hours to add to the sleep time.</short-description>
        
          <description>
          hours to add to the sleep time.
        </description>
      
        </attribute>
      
        <attribute name="milliseconds" type="int" briefType="int" required="no">
        
          <short-description>Milliseconds to add to the sleep time.</short-description>
        
          <description>
          milliseconds to add to the sleep time
        </description>
      
        </attribute>
      
        <attribute name="minutes" type="int" briefType="int" required="no">
        
          <short-description>Minutes to add to the sleep time.</short-description>
        
          <description>
          minutes to add to the sleep time
        </description>
      
        </attribute>
      
        <attribute name="seconds" type="int" briefType="int" required="no">
        
          <short-description>Seconds to add to the sleep time.</short-description>
        
          <description>
          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>Commits and unlocks files in Visual SourceSafe via a SourceOffSite server.</short-description>
  
    <description>
    Commits and unlocks files in Visual SourceSafe via a SourceOffSite server.

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

  
    <structure>

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="comment" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Comment to apply to all files being labelled;
 optional, only valid in SOSLabel.</short-description>
        
          <description>
          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>Filename to act upon; optional.</short-description>
        
          <description>
          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>Labeled version to operate on in SourceSafe.</short-description>
        
          <description>
          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>Override the working directory and get to the specified path; optional.</short-description>
        
          <description>
          Override the working directory and get to the specified path; optional.
        </description>
      
        </attribute>
      
        <attribute name="nocache" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.</short-description>
        
          <description>
          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>Flag that disables compression when set; optional, default.</short-description>
        
          <description>
          Flag that disables compression when set; optional, default
        </description>
      
        </attribute>
      
        <attribute name="password" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>SourceSafe password; optional.</short-description>
        
          <description>
          Set the SourceSafe password; optional.
        </description>
      
        </attribute>
      
        <attribute name="projectpath" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>SourceSafe project path without the "$" prefix; required.</short-description>
        
          <description>
          Set the SourceSafe project path without the "$" prefix; required
        </description>
      
        </attribute>
      
        <attribute name="recursive" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false.</short-description>
        
          <description>
          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>Directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.</short-description>
        
          <description>
          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>The path to the SourceOffSite home directory.</short-description>
        
          <description>
          The path to the SourceOffSite home directory
        </description>
      
        </attribute>
      
        <attribute name="sosserverpath" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.</short-description>
        
          <description>
          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>SourceSafe username; required.</short-description>
        
          <description>
          Set the SourceSafe username; required.
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Enable verbose output; optional, default false.</short-description>
        
          <description>
          Enable verbose output; optional, default false
        </description>
      
        </attribute>
      
        <attribute name="version" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>A version number to get - 
 only works with the SOSGet on a file; optional.</short-description>
        
          <description>
          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>Path to the location of the ss.ini file; 
 required.</short-description>
        
          <description>
          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>Retrieves a read-only copy of the specified project or file from Visual SourceSafe via a SourceOffSite server.</short-description>
  
    <description>
    Retrieves a read-only copy of the specified project or file
 from Visual SourceSafe via a SourceOffSite server.
 &lt;p&gt;
 The following attributes are interpretted:
 &lt;table border="1"&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
         &lt;th&gt;Attribute&lt;/th&gt;
         &lt;th&gt;Values&lt;/th&gt;
         &lt;th&gt;Required&lt;/th&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
         &lt;td&gt;soscmddir&lt;/td&gt;
         &lt;td&gt;Directory which contains soscmd(.exe) &lt;br&gt;
         soscmd(.exe) must be in the path if this is not specified&lt;/td&gt;
         &lt;td&gt;No&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;vssserverpath&lt;/td&gt;
          &lt;td&gt;path to the srcsafe.ini  - eg. \\server\vss\srcsafe.ini&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;sosserverpath&lt;/td&gt;
          &lt;td&gt;address and port of the SOS server  - eg. 192.168.0.1:8888&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;projectpath&lt;/td&gt;
          &lt;td&gt;SourceSafe project path without the "$"&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;file&lt;/td&gt;
          &lt;td&gt;Filename to act upon&lt;br&gt;
              If no file is specified then act upon the project&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;username&lt;/td&gt;
          &lt;td&gt;SourceSafe username&lt;/td&gt;
          &lt;td&gt;Yes&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;password&lt;/td&gt;
          &lt;td&gt;SourceSafe password&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;localpath&lt;/td&gt;
          &lt;td&gt;Override the working directory and get to the specified path&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;soshome&lt;/td&gt;
          &lt;td&gt;The path to the SourceOffSite home directory&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;nocompression&lt;/td&gt;
          &lt;td&gt;true or false - disable compression&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;recursive&lt;/td&gt;
          &lt;td&gt;true or false - Only works with the GetProject command&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;version&lt;/td&gt;
          &lt;td&gt;a version number to get - Only works with the GetFile command&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;label&lt;/td&gt;
          &lt;td&gt;a label version to get - Only works with the GetProject command&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;nocache&lt;/td&gt;
          &lt;td&gt;true or false - Only needed if SOSHOME is set as an enviroment variable&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
          &lt;td&gt;verbose&lt;/td&gt;
         &lt;td&gt;true or false - Status messages are displayed&lt;/td&gt;
        &lt;td&gt;No&lt;/td&gt;
      &lt;/tr&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="comment" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Comment to apply to all files being labelled;
 optional, only valid in SOSLabel.</short-description>
        
          <description>
          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>Filename to act upon; optional.</short-description>
        
          <description>
          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>Labeled version to operate on in SourceSafe.</short-description>
        
          <description>
          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>Override the working directory and get to the specified path; optional.</short-description>
        
          <description>
          Override the working directory and get to the specified path; optional.
        </description>
      
        </attribute>
      
        <attribute name="nocache" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.</short-description>
        
          <description>
          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>Flag that disables compression when set; optional, default.</short-description>
        
          <description>
          Flag that disables compression when set; optional, default
        </description>
      
        </attribute>
      
        <attribute name="password" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>SourceSafe password; optional.</short-description>
        
          <description>
          Set the SourceSafe password; optional.
        </description>
      
        </attribute>
      
        <attribute name="projectpath" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>SourceSafe project path without the "$" prefix; required.</short-description>
        
          <description>
          Set the SourceSafe project path without the "$" prefix; required
        </description>
      
        </attribute>
      
        <attribute name="recursive" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false.</short-description>
        
          <description>
          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>Directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.</short-description>
        
          <description>
          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>The path to the SourceOffSite home directory.</short-description>
        
          <description>
          The path to the SourceOffSite home directory
        </description>
      
        </attribute>
      
        <attribute name="sosserverpath" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.</short-description>
        
          <description>
          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>SourceSafe username; required.</short-description>
        
          <description>
          Set the SourceSafe username; required.
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Enable verbose output; optional, default false.</short-description>
        
          <description>
          Enable verbose output; optional, default false
        </description>
      
        </attribute>
      
        <attribute name="version" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>A version number to get - 
 only works with the SOSGet on a file; optional.</short-description>
        
          <description>
          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>Path to the location of the ss.ini file; 
 required.</short-description>
        
          <description>
          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>Labels Visual SourceSafe files via a SourceOffSite server.</short-description>
  
    <description>
    Labels Visual SourceSafe files via a SourceOffSite server.
 &lt;p&gt;
 The following attributes are interpreted:
 &lt;table border="1"&gt;
   &lt;tr&gt;
     &lt;th&gt;Attribute&lt;/th&gt;
     &lt;th&gt;Values&lt;/th&gt;
     &lt;th&gt;Required&lt;/th&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;soscmddir&lt;/td&gt;
     &lt;td&gt;Directory which contains soscmd(.exe) &lt;br&gt;
     soscmd(.exe) must be in the path if this is not specified&lt;/td&gt;
     &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;vssserverpath&lt;/td&gt;
      &lt;td&gt;path to the srcsafe.ini  - eg. \\server\vss\srcsafe.ini&lt;/td&gt;
      &lt;td&gt;Yes&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;sosserverpath&lt;/td&gt;
      &lt;td&gt;address and port of the SOS server  - eg. 192.168.0.1:8888&lt;/td&gt;
      &lt;td&gt;Yes&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;projectpath&lt;/td&gt;
      &lt;td&gt;SourceSafe project path without the "$"&lt;/td&gt;
      &lt;td&gt;Yes&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;username&lt;/td&gt;
      &lt;td&gt;SourceSafe username&lt;/td&gt;
      &lt;td&gt;Yes&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;password&lt;/td&gt;
      &lt;td&gt;SourceSafe password&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;label&lt;/td&gt;
      &lt;td&gt;The label to apply to a project&lt;/td&gt;
      &lt;td&gt;Yes&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;comment&lt;/td&gt;
      &lt;td&gt;A comment to be applied to all files being labeled&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;verbose&lt;/td&gt;
      &lt;td&gt;true or false - Status messages are displayed&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
 &lt;/table&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="comment" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Comment to apply to all files being labelled;
 optional, only valid in SOSLabel.</short-description>
        
          <description>
          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>Filename to act upon; optional.</short-description>
        
          <description>
          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>Labeled version to operate on in SourceSafe.</short-description>
        
          <description>
          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>Override the working directory and get to the specified path; optional.</short-description>
        
          <description>
          Override the working directory and get to the specified path; optional.
        </description>
      
        </attribute>
      
        <attribute name="nocache" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.</short-description>
        
          <description>
          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>Flag that disables compression when set; optional, default.</short-description>
        
          <description>
          Flag that disables compression when set; optional, default
        </description>
      
        </attribute>
      
        <attribute name="password" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>SourceSafe password; optional.</short-description>
        
          <description>
          Set the SourceSafe password; optional.
        </description>
      
        </attribute>
      
        <attribute name="projectpath" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>SourceSafe project path without the "$" prefix; required.</short-description>
        
          <description>
          Set the SourceSafe project path without the "$" prefix; required
        </description>
      
        </attribute>
      
        <attribute name="recursive" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false.</short-description>
        
          <description>
          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>Directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.</short-description>
        
          <description>
          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>The path to the SourceOffSite home directory.</short-description>
        
          <description>
          The path to the SourceOffSite home directory
        </description>
      
        </attribute>
      
        <attribute name="sosserverpath" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.</short-description>
        
          <description>
          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>SourceSafe username; required.</short-description>
        
          <description>
          Set the SourceSafe username; required.
        </description>
      
        </attribute>
      
        <attribute name="verbose" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Enable verbose output; optional, default false.</short-description>
        
          <description>
          Enable verbose output; optional, default false
        </description>
      
        </attribute>
      
        <attribute name="version" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>A version number to get - 
 only works with the SOSGet on a file; optional.</short-description>
        
          <description>
          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>Path to the location of the ss.ini file; 
 required.</short-description>
        
          <description>
          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>Plays a sound file at the end of the build, according to whether the build failed or succeeded.</short-description>
  
    <description>
    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:

 &lt;code&gt;source&lt;/code&gt;: the location of the audio file to be played
 &lt;code&gt;duration&lt;/code&gt;: play the sound file continuously until "duration" milliseconds has expired
 &lt;code&gt;loops&lt;/code&gt;: 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>Add a sound when the build fails.</short-description>
        
          <description>
          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>Add a sound when the build succeeds.</short-description>
        
          <description>
          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>Creates a splash screen.</short-description>
  
    <description>
    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="no">
        
          <short-description>A URL pointing to an image to display; optional, default antlogo.gif
 from the classpath.</short-description>
        
          <description>
          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>Proxy password; required if &lt;tt&gt;user&lt;/tt&gt; is set.</short-description>
        
          <description>
          Proxy password; required if &lt;tt&gt;user&lt;/tt&gt; is set.
        </description>
      
        </attribute>
      
        <attribute name="port" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Proxy port; optional, default 80.</short-description>
        
          <description>
          Proxy port; optional, default 80.
        </description>
      
        </attribute>
      
        <attribute name="proxy" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Name of proxy; optional.</short-description>
        
          <description>
          name of proxy; optional.
        </description>
      
        </attribute>
      
        <attribute name="showduration" type="int" briefType="int" required="no">
        
          <short-description>How long to show the splash screen in milliseconds,
 optional; default 5000 ms.</short-description>
        
          <description>
          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>Proxy user; optional, default =none.</short-description>
        
          <description>
          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>Executes a series of SQL statements on a database using JDBC.</short-description>
  
    <description>
    Executes a series of SQL statements on a database using JDBC.

 &lt;p&gt;Statements can
 either be read in from a text file using the &lt;i&gt;src&lt;/i&gt; attribute or from 
 between the enclosing SQL tags.&lt;/p&gt;
 &lt;p&gt;Multiple statements can be provided, separated by semicolons (or the 
 defined &lt;i&gt;delimiter&lt;/i&gt;). Individual lines within the statements can be 
 commented using either --, // or REM at the start of the line.&lt;/p&gt;
 &lt;p&gt;The &lt;i&gt;autocommit&lt;/i&gt; 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.&lt;/p&gt;
 &lt;p&gt;The &lt;i&gt;onerror&lt;/i&gt; attribute specifies how to proceed when an error occurs 
 during the execution of one of the statements. 
 The possible values are: &lt;b&gt;continue&lt;/b&gt; execution, only show the error;
 &lt;b&gt;stop&lt;/b&gt; execution and commit transaction;
 and &lt;b&gt;abort&lt;/b&gt; execution and transaction and fail task.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="append" type="boolean" briefType="boolean" required="no">
        
          <short-description>Whether output should be appended to or overwrite
 an existing file.</short-description>
        
          <description>
          whether output should be appended to or overwrite
 an existing file.  Defaults to false.
        </description>
      
        </attribute>
      
        <attribute name="autocommit" type="boolean" briefType="boolean" required="no, default &quot;false&quot;">
        
          <short-description>Auto commit flag for database connection;
 optional, default false.</short-description>
        
          <description>
          Auto commit flag for database connection;
 optional, default false.
        </description>
      
        </attribute>
      
        <attribute name="caching" type="boolean" briefType="boolean" required="no (default=true)">
        
          <short-description>Caching loaders / driver.</short-description>
        
          <description>
          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="no (use system classpath)">
        
          <short-description>Classpath for loading the driver.</short-description>
        
          <description>
          Sets the classpath for loading the driver.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="no (use system classpath)">
        
          <short-description>Classpath for loading the driver 
 using the classpath reference.</short-description>
        
          <description>
          Set the classpath for loading the driver 
 using the classpath reference.
        </description>
      
        </attribute>
      
        <attribute name="delimiter" type="java.lang.String" briefType="String" required="no, default &quot;;&quot;">
        
          <short-description>Delimiter that separates SQL statements; 
 optional, default &amp;quot;;&amp;quot;

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

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

 &lt;p&gt;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.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="driver" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>Class name of the JDBC driver; required.</short-description>
        
          <description>
          Class name of the JDBC driver; required.
        </description>
      
        </attribute>
      
        <attribute name="encoding" type="java.lang.String" briefType="String" required="no - defaults to default jvm encoding">
        
          <short-description>File encoding to use on the SQL files read in.</short-description>
        
          <description>
          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="no, default &quot;abort&quot;">
        
          <short-description>Action to perform when statement fails: continue, stop, or abort
 optional; default &amp;quot;abort&amp;quot;.</short-description>
        
          <description>
          Action to perform when statement fails: continue, stop, or abort
 optional; default &amp;quot;abort&amp;quot;
        </description>
      
        </attribute>
      
        <attribute name="output" type="java.io.File" briefType="File" required="no (print to system.out by default)">
        
          <short-description>Output file; 
 optional, defaults to the Ant log.</short-description>
        
          <description>
          Set the output file; 
 optional, defaults to the Ant log.
        </description>
      
        </attribute>
      
        <attribute name="password" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>Password; required.</short-description>
        
          <description>
          Sets the password; required.
        </description>
      
        </attribute>
      
        <attribute name="print" type="boolean" briefType="boolean" required="no, default &quot;false&quot;">
        
          <short-description>Print result sets from the statements;
 optional, default false.</short-description>
        
          <description>
          Print result sets from the statements;
 optional, default false
        </description>
      
        </attribute>
      
        <attribute name="rdbms" type="java.lang.String" briefType="String" required="no (no restriction)">
        
          <short-description>Execute task only if the lower case product name 
 of the DB matches this.</short-description>
        
          <description>
          Execute task only if the lower case product name 
 of the DB matches this
        </description>
      
        </attribute>
      
        <attribute name="showheaders" type="boolean" briefType="boolean" required="no, default &quot;true&quot;">
        
          <short-description>Print headers for result sets from the 
 statements; optional, default true.</short-description>
        
          <description>
          Print headers for result sets from the 
 statements; optional, default true.
        </description>
      
        </attribute>
      
        <attribute name="src" type="java.io.File" briefType="File" required="yes, unless statements enclosed within tags">
        
          <short-description>Name of the SQL file to be run.</short-description>
        
          <description>
          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="yes">
        
          <short-description>Database connection URL; required.</short-description>
        
          <description>
          Sets the database connection URL; required.
        </description>
      
        </attribute>
      
        <attribute name="userid" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>User name for the connection; required.</short-description>
        
          <description>
          Set the user name for the connection; required.
        </description>
      
        </attribute>
      
        <attribute name="version" type="java.lang.String" briefType="String" required="no (no restriction)">
        
          <short-description>Version string, execute task only if 
 rdbms version match; optional.</short-description>
        
          <description>
          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>Adds a set of files (nested fileset attribute).</short-description>
        
          <description>
          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>Add a path to the classpath for loading the driver.</short-description>
        
          <description>
          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>Add a SQL transaction to execute.</short-description>
        
          <description>
          Add a SQL transaction to execute
        </description>
      
        </element>

    
      </elements>

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

  
    <structure>

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

 &lt;p&gt;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>File the output of the process is redirected to.</short-description>
        
          <description>
          File the output of the process is redirected to.
        </description>
      
        </attribute>
      
        <attribute name="skindirectory" type="java.io.File" briefType="File" required="yes">
        
          <short-description>The directory that contains the stylebook skin;
 required.</short-description>
        
          <description>
          the directory that contains the stylebook skin;
 required.
        </description>
      
        </attribute>
      
        <attribute name="targetdirectory" type="java.io.File" briefType="File" required="yes">
        
          <short-description>The destination directory where the documentation is generated;
 required.</short-description>
        
          <description>
          the destination directory where the documentation is generated;
 required.
        </description>
      
        </attribute>
      
        <attribute name="timeout" type="java.lang.Long" briefType="long" required="NOTDEFINED">
        
          <short-description>Timeout in milliseconds after which the process will be killed.</short-description>
        
          <description>
          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>Adds an environment variable.</short-description>
        
          <description>
          Adds an environment variable.

 &lt;p&gt;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>Adds a system property.</short-description>
        
          <description>
          Adds a system property.
        </description>
      
        </element>

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

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

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

    
      </elements>

  
    </structure>


  </task>



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

  

    <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="${dist}/manual.tar" basedir="htdocs/manual"/&gt;
  &lt;gzip zipfile="${dist}/manual.tar.gz" src="${dist}/manual.tar"/&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="${dist}/manual.tar"
       basedir="htdocs/manual"
       excludes="mydocs/**, **/todo.html"
  /&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="${basedir}/docs.tar"&gt;
  &lt;tarfileset dir="${dir.src}/docs"
              fullpath="/usr/doc/ant/README"
              preserveLeadingSlashes="true"&gt;
    &lt;include name="readme.txt"/&gt;
  &lt;/tarfileset&gt;
  &lt;tarfileset dir="${dir.src}/docs"
              prefix="/usr/doc/ant"
              preserveLeadingSlashes="true"&gt;
    &lt;include name="*.html"/&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="gnu"
     destfile="${dist.base}/${dist.name}-src.tar" &gt;
  &lt;tarfileset dir="${dist.name}/.." mode="755" username="ant" group="ant"&gt;
    &lt;include name="${dist.name}/bootstrap.sh"/&gt;
    &lt;include name="${dist.name}/build.sh"/&gt;
  &lt;/tarfileset&gt;
  &lt;tarfileset dir="${dist.name}/.." username="ant" group="ant"&gt;
    &lt;include name="${dist.name}/**"/&gt;
    &lt;exclude name="${dist.name}/bootstrap.sh"/&gt;
    &lt;exclude name="${dist.name}/build.sh"/&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>Creates a tar archive.</short-description>
  
    <description>
    Creates a tar archive.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="basedir" type="java.io.File" briefType="File" required="no">
        
          <short-description>This is the base directory to look in for things to tar.</short-description>
        
          <description>
          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="no">
        
          <short-description>Set compression method.</short-description>
        
          <description>
          Set compression method.
 Allowable values are
 &lt;ul&gt;
 &lt;li&gt;  none - no compression
 &lt;li&gt;  gzip - Gzip compression
 &lt;li&gt;  bzip2 - Bzip2 compression
 &lt;/ul&gt;
        </description>
      
        </attribute>
      
        <attribute name="destfile" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Set is the name/location of where to create the tar file.</short-description>
        
          <description>
          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="no">
        
          <short-description>Set how to handle long files, those with a path&amp;gt;100 chars.</short-description>
        
          <description>
          Set how to handle long files, those with a path&amp;gt;100 chars.
 Optional, default=warn.
 &lt;p&gt;
 Allowable values are
 &lt;ul&gt;
 &lt;li&gt;  truncate - paths are truncated to the maximum length
 &lt;li&gt;  fail - paths greater than the maximim cause a build exception
 &lt;li&gt;  warn - paths greater than the maximum cause a warning and GNU is used
 &lt;li&gt;  gnu - GNU extensions are used for any paths greater than the maximum.
 &lt;li&gt;  omit - paths greater than the maximum are omitted from the archive
 &lt;/ul&gt;
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="tarfileset" type="org.apache.tools.ant.taskdefs.Tar.TarFileSet" briefType="" required="NOTDEFINED">
        
          <short-description>Add a new fileset with the option to specify permissions.</short-description>
        
          <description>
          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>Adds a task definition to the current project, such that this new task can be used in the current project.</short-description>
  
    <description>
    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.&lt;/p&gt;
 &lt;p&gt;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:&lt;/p&gt;
 &lt;pre&gt;
 taskname=fully.qualified.java.classname
 &lt;/pre&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="classname" type="java.lang.String" briefType="String" required="yes, unless file or resource have      been specified.">
        
          <short-description>The full class name of the object being defined.</short-description>
        
          <description>
          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="no">
        
          <short-description>Classpath to be used when searching for component being defined.</short-description>
        
          <description>
          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="no">
        
          <short-description>Reference to a classpath to use when loading the files.</short-description>
        
          <description>
          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="no">
        
          <short-description>Name of the property file  to load
 ant name/classname pairs from.</short-description>
        
          <description>
          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="no">
        
          <short-description>Use the reference to locate the loader.</short-description>
        
          <description>
          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="yes, unless file or resource have      been specified.">
        
          <short-description>Name of the property resource to load
 ant name/classname pairs from.</short-description>
        
          <description>
          Name of the property resource to load
 ant name/classname pairs from.
        </description>
      
        </attribute>
      
        <attribute name="resource" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Name of the property resource to load
 ant name/classname pairs from.</short-description>
        
          <description>
          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>Create the classpath to be used when searching for component being defined.</short-description>
        
          <description>
          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>Automates the telnet protocol.</short-description>
  
    <description>
    Automates the telnet protocol.
  </description>

  
    <structure>

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

    
      <elements>
      
        <element name="read" type="org.apache.tools.ant.taskdefs.optional.net.TelnetTask.TelnetSubTask" briefType="" required="NOTDEFINED">
        
          <short-description>A string to wait for from the server.</short-description>
        
          <description>
          A string to wait for from the server. 
  A subTask &amp;lt;read&amp;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>Add text to send to the server
  A subTask &amp;lt;write&amp;gt; tag was found.</short-description>
        
          <description>
          Add text to send to the server
  A subTask &amp;lt;write&amp;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>This task sets a property to  the name of a temporary file.</short-description>
  
    <description>
    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. 
 &lt;p&gt;  
 Examples
 &lt;pre&gt;&amp;lt;tempfile property="temp.file" /&amp;gt;&lt;/pre&gt;
 create a temporary file
 &lt;pre&gt;&amp;lt;tempfile property="temp.file" suffix=".xml" /&amp;gt;&lt;/pre&gt;
 create a temporary file with the .xml suffix.
 &lt;pre&gt;&amp;lt;tempfile property="temp.file" destDir="build"/&amp;gt;&lt;/pre&gt;
 create a temp file in the build subdir
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="destdir" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Destination directory.</short-description>
        
          <description>
          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>Optional prefix string.</short-description>
        
          <description>
          optional prefix string
        </description>
      
        </attribute>
      
        <attribute name="property" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The property you wish to assign the temporary file to.</short-description>
        
          <description>
          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>Suffix string for the temp file (optional).</short-description>
        
          <description>
          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>Touch a file and/or fileset(s); corresponds to the Unix touch command.</short-description>
  
    <description>
    Touch a file and/or fileset(s); corresponds to the Unix touch command.

 &lt;p&gt;If the file to touch doesn't exist, an empty one is
 created. &lt;/p&gt;

 &lt;p&gt;Note: Setting the modification time of files is not supported in
 JDK 1.1.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="datetime" type="java.lang.String" briefType="String" required="no">
        
          <short-description>The new modification time of the file
 in the format MM/DD/YYYY HH:MM AM &lt;i&gt;or&lt;/i&gt; PM;
 Optional, default=now.</short-description>
        
          <description>
          the new modification time of the file
 in the format MM/DD/YYYY HH:MM AM &lt;i&gt;or&lt;/i&gt; PM;
 Optional, default=now
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="unless a nested fileset element         has been specified.">
        
          <short-description>Single source file to touch.</short-description>
        
          <description>
          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="no">
        
          <short-description>The new modification time of the file
 in milliseconds since midnight Jan 1 1970.</short-description>
        
          <description>
          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>Add a set of files to touch.</short-description>
        
          <description>
          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>Translates text embedded in files using Resource Bundle files.</short-description>
  
    <description>
    Translates text embedded in files using Resource Bundle files.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="bundle" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>Sets Family name of resource bundle; required.</short-description>
        
          <description>
          Sets Family name of resource bundle; required.
        </description>
      
        </attribute>
      
        <attribute name="bundlecountry" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Sets locale specific country of resource bundle; optional.</short-description>
        
          <description>
          Sets locale specific country of resource bundle; optional.
        </description>
      
        </attribute>
      
        <attribute name="bundleencoding" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Sets Resource Bundle file encoding scheme; optional.</short-description>
        
          <description>
          Sets Resource Bundle file encoding scheme; optional.  Defaults to source file
 encoding
        </description>
      
        </attribute>
      
        <attribute name="bundlelanguage" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Sets locale specific language of resource bundle; optional.</short-description>
        
          <description>
          Sets locale specific language of resource bundle; optional.
        </description>
      
        </attribute>
      
        <attribute name="bundlevariant" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Sets locale specific variant of resource bundle; optional.</short-description>
        
          <description>
          Sets locale specific variant of resource bundle; optional.
        </description>
      
        </attribute>
      
        <attribute name="destencoding" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Sets destination file encoding scheme; optional.</short-description>
        
          <description>
          Sets destination file encoding scheme; optional.  Defaults to source file
 encoding
        </description>
      
        </attribute>
      
        <attribute name="endtoken" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>Sets ending token to identify keys; required.</short-description>
        
          <description>
          Sets ending token to identify keys; required.
        </description>
      
        </attribute>
      
        <attribute name="forceoverwrite" type="boolean" briefType="boolean" required="no">
        
          <short-description>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>
          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="no">
        
          <short-description>Sets source file encoding scheme; optional,
 defaults to encoding of local system.</short-description>
        
          <description>
          Sets source file encoding scheme; optional,
 defaults to encoding of local system.
        </description>
      
        </attribute>
      
        <attribute name="starttoken" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>Sets starting token to identify keys; required.</short-description>
        
          <description>
          Sets starting token to identify keys; required.
        </description>
      
        </attribute>
      
        <attribute name="todir" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Sets Destination directory; required.</short-description>
        
          <description>
          Sets Destination directory; required.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="fileset" type="org.apache.tools.ant.types.FileSet" briefType="Fileset" required="NOTDEFINED">
        
          <short-description>Adds a set of files to translate as a nested fileset element.</short-description>
        
          <description>
          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>Sets properties to the current time, or offsets from the current time.</short-description>
  
    <description>
    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="no">
        
          <short-description>Prefix for the properties.</short-description>
        
          <description>
          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>Create a custom format with the the current prefix.</short-description>
        
          <description>
          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>Adds a data type definition to the current project.</short-description>
  
    <description>
    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.
 &lt;p&gt;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:&lt;/p&gt;
 &lt;pre&gt;
 typename=fully.qualified.java.classname
 &lt;/pre&gt;
 &lt;p&gt;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.&lt;/p&gt;
 &lt;p&gt;Custom data types usually need custom tasks to put them to good use.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="classname" type="java.lang.String" briefType="String" required="yes, unless file or resource have      been specified.">
        
          <short-description>The full class name of the object being defined.</short-description>
        
          <description>
          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="no">
        
          <short-description>Classpath to be used when searching for component being defined.</short-description>
        
          <description>
          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>Reference to a classpath to use when loading the files.</short-description>
        
          <description>
          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="no">
        
          <short-description>Name of the property file  to load
 ant name/classname pairs from.</short-description>
        
          <description>
          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="no">
        
          <short-description>Use the reference to locate the loader.</short-description>
        
          <description>
          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="yes, unless file or resource have      been specified.">
        
          <short-description>Name of the property resource to load
 ant name/classname pairs from.</short-description>
        
          <description>
          Name of the property resource to load
 ant name/classname pairs from.
        </description>
      
        </attribute>
      
        <attribute name="resource" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Name of the property resource to load
 ant name/classname pairs from.</short-description>
        
          <description>
          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>Create the classpath to be used when searching for component being defined.</short-description>
        
          <description>
          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>Untar a file.</short-description>
  
    <description>
    Untar a file.
 &lt;p&gt;For JDK 1.1 &amp;quot;last modified time&amp;quot; field is set to current time instead of being
 carried from the archive file.&lt;/p&gt;
 &lt;p&gt;PatternSets are used to select files to extract
 &lt;I&gt;from&lt;/I&gt; the archive.  If no patternset is used, all files are extracted.
 &lt;/p&gt;
 &lt;p&gt;FileSet&gt;s may be used used to select archived files
 to perform unarchival upon.
 &lt;/p&gt;
 &lt;p&gt;File permissions will not be restored on extracted files.&lt;/p&gt;
 &lt;p&gt;The untar task recognizes the long pathname entries used by GNU tar.&lt;p&gt;
  </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>Set decompression algorithm to use; default=none.</short-description>
        
          <description>
          Set decompression algorithm to use; default=none.

 Allowable values are
 &lt;ul&gt;
   &lt;li&gt;none - no compression
   &lt;li&gt;gzip - Gzip compression
   &lt;li&gt;bzip2 - Bzip2 compression
 &lt;/ul&gt;
        </description>
      
        </attribute>
      
        <attribute name="dest" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Destination directory.</short-description>
        
          <description>
          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>Should we overwrite files in dest, even if they are newer than
 the corresponding entries in the archive?.</short-description>
        
          <description>
          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>Path to zip-file.</short-description>
        
          <description>
          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>Add a fileset.</short-description>
        
          <description>
          Add a fileset
        </description>
      
        </element>

      
        <element name="patternset" type="org.apache.tools.ant.types.PatternSet" briefType="Patternset" required="NOTDEFINED">
        
          <short-description>Add a patternset.</short-description>
        
          <description>
          Add a patternset
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="unzip" category="packaging" classname="org.apache.tools.ant.taskdefs.Expand">

  
    <short-description>Unzip a file.</short-description>
  
    <description>
    Unzip a file.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="dest" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Destination directory.</short-description>
        
          <description>
          Set the destination directory. File will be unzipped into the
 destination directory.
        </description>
      
        </attribute>
      
        <attribute name="overwrite" type="boolean" briefType="boolean" required="no">
        
          <short-description>Should we overwrite files in dest, even if they are newer than
 the corresponding entries in the archive?.</short-description>
        
          <description>
          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="yes, if filesets are not used.">
        
          <short-description>Path to zip-file.</short-description>
        
          <description>
          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>Add a fileset.</short-description>
        
          <description>
          Add a fileset
        </description>
      
        </element>

      
        <element name="patternset" type="org.apache.tools.ant.types.PatternSet" briefType="Patternset" required="NOTDEFINED">
        
          <short-description>Add a patternset.</short-description>
        
          <description>
          Add a patternset
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="uptodate" category="control" classname="org.apache.tools.ant.taskdefs.UpToDate">

  
    <short-description>Sets the given property if the specified target has a timestamp greater than all of the source files.</short-description>
  
    <description>
    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="yes">
        
          <short-description>The property to set if the target file is more up-to-date than
 (each of) the source file(s).</short-description>
        
          <description>
          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="yes, unless a nested        &lt;srcfiles&gt; element is present.">
        
          <short-description>The file that must be older than the target file
 if the property is to be set.</short-description>
        
          <description>
          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="yes, unless a nested        &lt;mapper&gt; element is present.">
        
          <short-description>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>
          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="no; defaults to true.">
        
          <short-description>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>
          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>Nested &amp;lt;srcfiles&amp;gt; element.</short-description>
        
          <description>
          Nested &amp;lt;srcfiles&amp;gt; element.
        </description>
      
        </element>

      
        <element name="mapper" type="org.apache.tools.ant.types.Mapper" briefType="Mapper" required="NOTDEFINED">
        
          <short-description>Defines the FileNameMapper to use (nested mapper element).</short-description>
        
          <description>
          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>Export packages from the Visual Age for Java workspace.</short-description>
  
    <description>
    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:
 &lt;blockquote&gt;
 &amp;lt;vajexport destdir="C:/builddir/source"&gt;
 &amp;nbsp;&amp;lt;include name="/MyVAProject/org/foo/subsystem1/**" /&gt;
 &amp;nbsp;&amp;lt;exclude name="/MyVAProject/org/foo/subsystem1/test/**"/&gt;
 &amp;lt;/vajexport&gt;
 &lt;/blockquote&gt;
 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>Sets whether default exclusions should be used or not; default true.</short-description>
        
          <description>
          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>Destination directory into which the selected
 items should be exported; required.</short-description>
        
          <description>
          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>Set of exclude patterns.</short-description>
        
          <description>
          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>Optional flag to export the class files; default false.</short-description>
        
          <description>
          optional flag to export the class files; default false.
        </description>
      
        </attribute>
      
        <attribute name="exportdebuginfo" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Optional flag to export the debug info; default false.
 debug info.</short-description>
        
          <description>
          optional flag to export the debug info; default false.
 debug info
        </description>
      
        </attribute>
      
        <attribute name="exportresources" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Optional flag to export the resource file; default true.</short-description>
        
          <description>
          optional flag to export the resource file; default true.
        </description>
      
        </attribute>
      
        <attribute name="exportsources" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Optional flag to export the Java files; default true.</short-description>
        
          <description>
          optional flag to export the Java files; default true.
        </description>
      
        </attribute>
      
        <attribute name="includes" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Set of include patterns.</short-description>
        
          <description>
          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>If Overwrite is set, files will be overwritten during export.</short-description>
        
          <description>
          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>Name and port of a remote tool server, optiona.</short-description>
        
          <description>
          Name and port of a remote tool server, optiona.
 Format: &amp;lt;servername&amp;gt;:&amp;lt;port no&amp;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>Add a name entry on the exclude list.</short-description>
        
          <description>
          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>Add a name entry on the include list.</short-description>
        
          <description>
          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>Import source, class files, and resources to the Visual Age for Java workspace.</short-description>
  
    <description>
    Import source, class files, and resources to the Visual Age for Java
 workspace.
 &lt;p&gt;
 Example:
 &lt;pre&gt;
 &amp;lt;vajimport project="MyVAProject"&amp;gt;
   &amp;lt;fileset dir="src"&amp;gt;
     &amp;lt;include name="org/foo/subsystem1/**" /&amp;gt;
     &amp;lt;exclude name="/org/foo/subsystem1/test/**" /&amp;gt;
  &amp;lt;/fileset&amp;gt;
 &amp;lt;/vajexport&amp;gt;
 &lt;/pre&gt;
 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.
 &lt;/p&gt;
 &lt;p&gt;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.
 &lt;/p&gt;
 &lt;p&gt;There are attributes to choose which items to export:
 &lt;table border="1" cellpadding="2" cellspacing="0"&gt;
 &lt;tr&gt;
   &lt;td valign="top"&gt;&lt;b&gt;Attribute&lt;/b&gt;&lt;/td&gt;
   &lt;td valign="top"&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/td&gt;
   &lt;td align="center" valign="top"&gt;&lt;b&gt;Required&lt;/b&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
   &lt;td valign="top"&gt;project&lt;/td&gt;
   &lt;td valign="top"&gt;the name of the Project to import to&lt;/td&gt;
   &lt;td align="center" valign="top"&gt;Yes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
   &lt;td valign="top"&gt;importSources&lt;/td&gt;
   &lt;td valign="top"&gt;import Java sources, defaults to "yes"&lt;/td&gt;
   &lt;td align="center" valign="top"&gt;No&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
   &lt;td valign="top"&gt;importResources&lt;/td&gt;
   &lt;td valign="top"&gt;import resource files (anything that doesn't
                    end with .java or .class), defaults to "yes"&lt;/td&gt;
   &lt;td align="center" valign="top"&gt;No&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
   &lt;td valign="top"&gt;importClasses&lt;/td&gt;
   &lt;td valign="top"&gt;import class files, defaults to "no"&lt;/td&gt;
   &lt;td align="center" valign="top"&gt;No&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/table&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="defaultexcludes" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Sets whether default exclusions should be used or not.</short-description>
        
          <description>
          Sets whether default exclusions should be used or not.
        </description>
      
        </attribute>
      
        <attribute name="importclasses" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Flag to import .class files; optional, default false.</short-description>
        
          <description>
          Flag to import .class files; optional, default false.
        </description>
      
        </attribute>
      
        <attribute name="importresources" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Import resource files (anything that doesn't end in
 .class or .java); optional, default true.</short-description>
        
          <description>
          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>Import .java files; optional, default true.</short-description>
        
          <description>
          Import .java files; optional, default true.
        </description>
      
        </attribute>
      
        <attribute name="project" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The VisualAge for Java Project name to import into.</short-description>
        
          <description>
          The VisualAge for Java Project name to import into.
        </description>
      
        </attribute>
      
        <attribute name="remote" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Name and port of a remote tool server, optiona.</short-description>
        
          <description>
          Name and port of a remote tool server, optiona.
 Format: &amp;lt;servername&amp;gt;:&amp;lt;port no&amp;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>Adds a set of files (nested fileset attribute).</short-description>
        
          <description>
          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>Load specific project versions into the Visual Age for Java workspace.</short-description>
  
    <description>
    Load specific project versions into the Visual Age for Java workspace.
 Each project and version name has to be specified completely.
 Example:  
 &lt;blockquote&gt; 
 &amp;lt;vajload&gt;
 &amp;nbsp;&amp;lt;project name="MyVAProject" version="2.1"/&gt;
 &amp;nbsp;&amp;lt;project name="Apache Xerces" version="1.2.0"/&gt;
 &amp;lt;/vajload&gt;
 &lt;/blockquote&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="remote" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Name and port of a remote tool server, optiona.</short-description>
        
          <description>
          Name and port of a remote tool server, optiona.
 Format: &amp;lt;servername&amp;gt;:&amp;lt;port no&amp;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>Add a project description entry on the project list.</short-description>
        
          <description>
          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>Performs Add commands to Microsoft Visual SourceSafe.</short-description>
  
    <description>
    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>What to respond with (sets the -I option).</short-description>
        
          <description>
          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>Comment to apply; optional.</short-description>
        
          <description>
          Sets the comment to apply; optional.
 &lt;p&gt;
 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>Local path.</short-description>
        
          <description>
          Set the local path.
        </description>
      
        </attribute>
      
        <attribute name="login" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The login to use when accessing VSS, formatted as "username,password";
 optional.</short-description>
        
          <description>
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 &lt;p&gt;
 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>Set behaviour recursive or non-recursive.</short-description>
        
          <description>
          Set behaviour recursive or non-recursive
        </description>
      
        </attribute>
      
        <attribute name="serverpath" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
      
        </attribute>
      
        <attribute name="ssdir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where &lt;code&gt;ss.exe&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          directory where &lt;code&gt;ss.exe&lt;/code&gt; 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>SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.</short-description>
        
          <description>
          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.
 &lt;p&gt;
 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>Leave added files writable?.</short-description>
        
          <description>
          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>Performs CheckIn commands to Microsoft Visual SourceSafe.</short-description>
  
    <description>
    Performs CheckIn commands to Microsoft Visual SourceSafe.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="autoresponse" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>What to respond with (sets the -I option).</short-description>
        
          <description>
          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>Comment to apply; optional.</short-description>
        
          <description>
          Set the comment to apply; optional.
 &lt;p&gt;
 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>Local path.</short-description>
        
          <description>
          Set the local path.
        </description>
      
        </attribute>
      
        <attribute name="login" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The login to use when accessing VSS, formatted as "username,password";
 optional.</short-description>
        
          <description>
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 &lt;p&gt;
 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>Flag to tell the task to recurse down the tree;
 optional, default false.</short-description>
        
          <description>
          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>Directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
      
        </attribute>
      
        <attribute name="ssdir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where &lt;code&gt;ss.exe&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          directory where &lt;code&gt;ss.exe&lt;/code&gt; 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>SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.</short-description>
        
          <description>
          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.
 &lt;p&gt;
 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>Leave checked in files writable?.</short-description>
        
          <description>
          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>Performs CheckOut commands to Microsoft Visual SourceSafe.</short-description>
  
    <description>
    Performs CheckOut commands to Microsoft Visual SourceSafe.
 &lt;p&gt;If you specify two or more attributes from version, date and 
 label only one will be used in the order version, date, label.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="autoresponse" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>What to respond with (sets the -I option).</short-description>
        
          <description>
          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>Date to get;
 optional, only one of &lt;tt&gt;version&lt;/tt&gt;, &lt;tt&gt;label&lt;/tt&gt;, or &lt;tt&gt;date&lt;/tt&gt;
 allowed.</short-description>
        
          <description>
          Set the date to get;
 optional, only one of &lt;tt&gt;version&lt;/tt&gt;, &lt;tt&gt;label&lt;/tt&gt;, or &lt;tt&gt;date&lt;/tt&gt;
 allowed.
        </description>
      
        </attribute>
      
        <attribute name="label" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Label to get;
 optional, only one of &lt;tt&gt;version&lt;/tt&gt;, &lt;tt&gt;label&lt;/tt&gt;, or &lt;tt&gt;date&lt;/tt&gt;
 allowed.</short-description>
        
          <description>
          Set the label to get;
 optional, only one of &lt;tt&gt;version&lt;/tt&gt;, &lt;tt&gt;label&lt;/tt&gt;, or &lt;tt&gt;date&lt;/tt&gt;
 allowed.
        </description>
      
        </attribute>
      
        <attribute name="localpath" type="org.apache.tools.ant.types.Path" briefType="Path" required="NOTDEFINED">
        
          <short-description>Local path.</short-description>
        
          <description>
          Set the local path.
        </description>
      
        </attribute>
      
        <attribute name="login" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The login to use when accessing VSS, formatted as "username,password";
 optional.</short-description>
        
          <description>
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 &lt;p&gt;
 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>Flag to tell the task to recurse down the tree;
 optional, default false.</short-description>
        
          <description>
          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>Directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
      
        </attribute>
      
        <attribute name="ssdir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where &lt;code&gt;ss.exe&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          directory where &lt;code&gt;ss.exe&lt;/code&gt; 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>Version to get;
 optional, only one of &lt;tt&gt;version&lt;/tt&gt;, &lt;tt&gt;label&lt;/tt&gt;, or &lt;tt&gt;date&lt;/tt&gt;
 allowed.</short-description>
        
          <description>
          Set the version to get;
 optional, only one of &lt;tt&gt;version&lt;/tt&gt;, &lt;tt&gt;label&lt;/tt&gt;, or &lt;tt&gt;date&lt;/tt&gt;
 allowed.
        </description>
      
        </attribute>
      
        <attribute name="vsspath" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.</short-description>
        
          <description>
          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.
 &lt;p&gt;
 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>Performs CP (Change Project) commands to Microsoft Visual SourceSafe.</short-description>
  
    <description>
    Performs CP (Change Project) commands to Microsoft Visual SourceSafe.
 &lt;p&gt;This task is typically used before a VssAdd in order to set the target project&lt;/p&gt;
 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>What to respond with (sets the -I option).</short-description>
        
          <description>
          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>The login to use when accessing VSS, formatted as "username,password";
 optional.</short-description>
        
          <description>
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 &lt;p&gt;
 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>Directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
      
        </attribute>
      
        <attribute name="ssdir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where &lt;code&gt;ss.exe&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          directory where &lt;code&gt;ss.exe&lt;/code&gt; 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>SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.</short-description>
        
          <description>
          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.
 &lt;p&gt;
 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>Creates a new project in Microsoft Visual SourceSafe.</short-description>
  
    <description>
    Creates a new project in Microsoft Visual SourceSafe.
 &lt;p&gt;
 The following attributes are interpreted:
 &lt;table border="1"&gt;
   &lt;tr&gt;
     &lt;th&gt;Attribute&lt;/th&gt;
     &lt;th&gt;Values&lt;/th&gt;
     &lt;th&gt;Required&lt;/th&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;login&lt;/td&gt;
      &lt;td&gt;username,password&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;vsspath&lt;/td&gt;
      &lt;td&gt;SourceSafe path of project to be created&lt;/td&gt;
      &lt;td&gt;Yes&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;ssdir&lt;/td&gt;
      &lt;td&gt;directory where &lt;code&gt;ss.exe&lt;/code&gt; resides. By default the task
      expects it to be in the PATH.&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;quiet&lt;/td&gt;
      &lt;td&gt;suppress output (off by default)&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;failOnError&lt;/td&gt;
      &lt;td&gt;fail if there is an error creating the project (true by default)&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;   
   &lt;tr&gt;
      &lt;td&gt;autoresponse&lt;/td&gt;
      &lt;td&gt;What to respond with (sets the -I option). By default, -I- is
      used; values of Y or N will be appended to this.&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;comment&lt;/td&gt;
      &lt;td&gt;The comment to use for this label. Empty or '-' for no comment.&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
 &lt;/table&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="autoresponse" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>What to respond with (sets the -I option).</short-description>
        
          <description>
          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>Comment to apply in SourceSafe.</short-description>
        
          <description>
          Sets the comment to apply in SourceSafe.
 &lt;p&gt;
 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>Sets whether task should fail if there is an error creating the project;
 optional, default true.</short-description>
        
          <description>
          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>The login to use when accessing VSS, formatted as "username,password";
 optional.</short-description>
        
          <description>
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 &lt;p&gt;
 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>Sets/clears quiet mode; optional, default false.</short-description>
        
          <description>
          Sets/clears quiet mode; optional, default false.
        </description>
      
        </attribute>
      
        <attribute name="serverpath" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
      
        </attribute>
      
        <attribute name="ssdir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where &lt;code&gt;ss.exe&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          directory where &lt;code&gt;ss.exe&lt;/code&gt; 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>SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.</short-description>
        
          <description>
          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.
 &lt;p&gt;
 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>Perform Get commands to Microsoft Visual SourceSafe.</short-description>
  
    <description>
    Perform Get commands to Microsoft Visual SourceSafe.
 &lt;p&gt;
 The following attributes are interpreted:
 &lt;table border="1"&gt;
   &lt;tr&gt;
     &lt;th&gt;Attribute&lt;/th&gt;
     &lt;th&gt;Values&lt;/th&gt;
     &lt;th&gt;Required&lt;/th&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;login&lt;/td&gt;
      &lt;td&gt;username,password&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;vsspath&lt;/td&gt;
      &lt;td&gt;SourceSafe path&lt;/td&gt;
      &lt;td&gt;Yes&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;localpath&lt;/td&gt;
      &lt;td&gt;Override the working directory and get to the specified path&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;writable&lt;/td&gt;
      &lt;td&gt;true or false&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;recursive&lt;/td&gt;
      &lt;td&gt;true or false&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;version&lt;/td&gt;
      &lt;td&gt;a version number to get&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;date&lt;/td&gt;
      &lt;td&gt;a date stamp to get at&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;label&lt;/td&gt;
      &lt;td&gt;a label to get for&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;quiet&lt;/td&gt;
      &lt;td&gt;suppress output (off by default)&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;autoresponse&lt;/td&gt;
      &lt;td&gt;What to respond with (sets the -I option). By default, -I- is
      used; values of Y or N will be appended to this.&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
 &lt;/table&gt;
 &lt;p&gt;Note that only one of version, date or label should be specified&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="autoresponse" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>What to respond with (sets the -I option).</short-description>
        
          <description>
          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>Date to get;
 optional, only one of &lt;tt&gt;version&lt;/tt&gt;, &lt;tt&gt;label&lt;/tt&gt;, or &lt;tt&gt;date&lt;/tt&gt;
 allowed.</short-description>
        
          <description>
          Set the date to get;
 optional, only one of &lt;tt&gt;version&lt;/tt&gt;, &lt;tt&gt;label&lt;/tt&gt;, or &lt;tt&gt;date&lt;/tt&gt;
 allowed.
 &lt;p&gt;
 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>Label to get;
 optional, only one of &lt;tt&gt;version&lt;/tt&gt;, &lt;tt&gt;label&lt;/tt&gt;, or &lt;tt&gt;date&lt;/tt&gt;
 allowed.</short-description>
        
          <description>
          Set the label to get;
 optional, only one of &lt;tt&gt;version&lt;/tt&gt;, &lt;tt&gt;label&lt;/tt&gt;, or &lt;tt&gt;date&lt;/tt&gt;
 allowed.
 &lt;p&gt;
 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>Override the working directory and get to the specified path; optional.</short-description>
        
          <description>
          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>The login to use when accessing VSS, formatted as "username,password";
 optional.</short-description>
        
          <description>
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 &lt;p&gt;
 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>Flag to suppress output when true ; false by default.</short-description>
        
          <description>
          Flag to suppress output when true ; false by default.
        </description>
      
        </attribute>
      
        <attribute name="recursive" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Flag to tell the task to recurse down the tree;
 optional, default false.</short-description>
        
          <description>
          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>Directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
      
        </attribute>
      
        <attribute name="ssdir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where &lt;code&gt;ss.exe&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          directory where &lt;code&gt;ss.exe&lt;/code&gt; 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>Version number to get; 
 optional, only one of &lt;tt&gt;version&lt;/tt&gt;, &lt;tt&gt;label&lt;/tt&gt;, or &lt;tt&gt;date&lt;/tt&gt;
 allowed.</short-description>
        
          <description>
          Set a version number to get; 
 optional, only one of &lt;tt&gt;version&lt;/tt&gt;, &lt;tt&gt;label&lt;/tt&gt;, or &lt;tt&gt;date&lt;/tt&gt;
 allowed.
 &lt;p&gt;
 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>SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.</short-description>
        
          <description>
          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.
 &lt;p&gt;
 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>Make fetched files  writable; optional, default false.</short-description>
        
          <description>
          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>Performs History commands to Microsoft Visual SourceSafe.</short-description>
  
    <description>
    Performs History commands to Microsoft Visual SourceSafe.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="dateformat" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Format of dates in fromDate and toDate; optional.</short-description>
        
          <description>
          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>Start Date for the Comparison of two versions; optional.</short-description>
        
          <description>
          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>Start Label; optional.</short-description>
        
          <description>
          Set the Start Label; optional
        </description>
      
        </attribute>
      
        <attribute name="login" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>The login to use when accessing VSS, formatted as "username,password";
 optional.</short-description>
        
          <description>
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 &lt;p&gt;
 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>Number of days for comparison; 
 optional.</short-description>
        
          <description>
          Set the number of days for comparison; 
 optional.
 &lt;p&gt;
 The default value is 2 days. (maybe)
        </description>
      
        </attribute>
      
        <attribute name="output" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>Output file name for the history; optional.</short-description>
        
          <description>
          Set the output file name for the history; optional.
        </description>
      
        </attribute>
      
        <attribute name="recursive" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Flag to tell the task to recurse down the tree;
 optional, default false.</short-description>
        
          <description>
          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>Directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
      
        </attribute>
      
        <attribute name="ssdir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where &lt;code&gt;ss.exe&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          directory where &lt;code&gt;ss.exe&lt;/code&gt; 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>Specify the output style; optional.</short-description>
        
          <description>
          Specify the output style; optional.
        </description>
      
        </attribute>
      
        <attribute name="todate" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>End Date for the Comparison of two versions; optional.</short-description>
        
          <description>
          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>End Label ; optional.</short-description>
        
          <description>
          Set the End Label ; optional
        </description>
      
        </attribute>
      
        <attribute name="user" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Name the user whose changes we would like to see; optional.</short-description>
        
          <description>
          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>SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.</short-description>
        
          <description>
          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.
 &lt;p&gt;
 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>Performs Label commands to Microsoft Visual SourceSafe.</short-description>
  
    <description>
    Performs Label commands to Microsoft Visual SourceSafe.

 &lt;p&gt;
 The following attributes are interpreted:
 &lt;table border="1"&gt;
   &lt;tr&gt;
     &lt;th&gt;Attribute&lt;/th&gt;
     &lt;th&gt;Values&lt;/th&gt;
     &lt;th&gt;Required&lt;/th&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;login&lt;/td&gt;
      &lt;td&gt;username,password&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;vsspath&lt;/td&gt;
      &lt;td&gt;SourceSafe path&lt;/td&gt;
      &lt;td&gt;Yes&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;ssdir&lt;/td&gt;
      &lt;td&gt;directory where &lt;code&gt;ss.exe&lt;/code&gt; resides. By default the task
      expects it to be in the PATH.&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;label&lt;/td&gt;
      &lt;td&gt;A label to apply to the hierarchy&lt;/td&gt;
      &lt;td&gt;Yes&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;version&lt;/td&gt;
      &lt;td&gt;An existing file or project version to label&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;autoresponse&lt;/td&gt;
      &lt;td&gt;What to respond with (sets the -I option). By default, -I- is
      used; values of Y or N will be appended to this.&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td&gt;comment&lt;/td&gt;
      &lt;td&gt;The comment to use for this label. Empty or '-' for no comment.&lt;/td&gt;
      &lt;td&gt;No&lt;/td&gt;
   &lt;/tr&gt;
 &lt;/table&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="autoresponse" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>What to respond with (sets the -I option).</short-description>
        
          <description>
          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>The comment to use for this label; optional.</short-description>
        
          <description>
          The comment to use for this label; optional.
 Empty or '-' for no comment.
 &lt;p&gt;
 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>Label to apply; required.</short-description>
        
          <description>
          Set the label to apply; required.
 &lt;p&gt;
 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>The login to use when accessing VSS, formatted as "username,password";
 optional.</short-description>
        
          <description>
          The login to use when accessing VSS, formatted as "username,password";
 optional.
 &lt;p&gt;
 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>Directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
      
        </attribute>
      
        <attribute name="ssdir" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Directory where &lt;code&gt;ss.exe&lt;/code&gt; resides; optional.</short-description>
        
          <description>
          directory where &lt;code&gt;ss.exe&lt;/code&gt; 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>Name an existing file or project version to label; optional.</short-description>
        
          <description>
          Name an existing file or project version to label; optional.
 By default the current version is labelled.
 &lt;p&gt;
 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>SourceSafe path which specifies the project/file(s) you wish to 
 perform the action on; required.</short-description>
        
          <description>
          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.
 &lt;p&gt;
 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>Wait for an external event to occur.</short-description>
  
    <description>
    Wait for an external event to occur.

 Wait for an external process to start or to complete some
 task. This is useful with the &lt;code&gt;parallel&lt;/code&gt; task to
 syncronize the execution of tests with server startup.

 The following attributes can be specified on a waitfor task:
 &lt;ul&gt;
 &lt;li&gt;maxwait - maximum length of time to wait before giving up&lt;/li&gt;
 &lt;li&gt;maxwaitunit - The unit to be used to interpret maxwait attribute&lt;/li&gt;
 &lt;li&gt;checkevery - amount of time to sleep between each check&lt;/li&gt;
 &lt;li&gt;checkeveryunit - The unit to be used to interpret checkevery attribute&lt;/li&gt;
 &lt;li&gt;timeoutproperty - name of a property to set if maxwait has been exceeded.&lt;/li&gt;
 &lt;/ul&gt;

 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="no">
        
          <short-description>Time between each check.</short-description>
        
          <description>
          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="no">
        
          <short-description>Check every time unit.</short-description>
        
          <description>
          Set the check every time unit
        </description>
      
        </attribute>
      
        <attribute name="maxwait" type="long" briefType="long" required="no">
        
          <short-description>Maximum length of time to wait.</short-description>
        
          <description>
          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="no">
        
          <short-description>Max wait time unit.</short-description>
        
          <description>
          Set the max wait time unit
        </description>
      
        </attribute>
      
        <attribute name="timeoutproperty" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Name the property to set after a timeout.</short-description>
        
          <description>
          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>Add an &amp;lt;and&amp;gt; condition "container".</short-description>
        
          <description>
          Add an &amp;lt;and&amp;gt; condition "container".
        </description>
      
        </element>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
      </elements>

  
    </structure>


  </task>



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

  
    <short-description>An extension of &amp;lt;jar&amp;gt; to create a WAR archive.</short-description>
  
    <description>
    An extension of &amp;lt;jar&amp;gt; to create a WAR archive.
 Contains special treatment for files that should end up in the
 &lt;code&gt;WEB-INF/lib&lt;/code&gt;, &lt;code&gt;WEB-INF/classes&lt;/code&gt; or
 &lt;code&gt;WEB-INF&lt;/code&gt; directories of the Web Application Archive.&lt;/p&gt;
 &lt;p&gt;(The War task is a shortcut for specifying the particular layout of a WAR file. 
 The same thing can be accomplished by using the &lt;i&gt;prefix&lt;/i&gt; and &lt;i&gt;fullpath&lt;/i&gt;
 attributes of zipfilesets in a Zip or Jar task.)&lt;/p&gt;
 &lt;p&gt;The extended zipfileset element from the zip task (with attributes &lt;i&gt;prefix&lt;/i&gt;, &lt;i&gt;fullpath&lt;/i&gt;, and &lt;i&gt;src&lt;/i&gt;) is available in the War task.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="basedir" type="java.io.File" briefType="File" required="no">
        
          <short-description>Directory from which to archive files; optional.</short-description>
        
          <description>
          Directory from which to archive files; optional.
        </description>
      
        </attribute>
      
        <attribute name="compress" type="boolean" briefType="boolean" required="no">
        
          <short-description>Whether we want to compress the files or only store them;
 optional, default=true;.</short-description>
        
          <description>
          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="yes">
        
          <short-description>The file to create; required.</short-description>
        
          <description>
          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="no">
        
          <short-description>Sets behavior for when a duplicate file is about to be added -
 one of &lt;code&gt;keep&lt;/code&gt;, &lt;code&gt;skip&lt;/code&gt; or &lt;code&gt;overwrite&lt;/code&gt;.</short-description>
        
          <description>
          Sets behavior for when a duplicate file is about to be added -
 one of &lt;code&gt;keep&lt;/code&gt;, &lt;code&gt;skip&lt;/code&gt; or &lt;code&gt;overwrite&lt;/code&gt;.
 Possible values are: &lt;code&gt;keep&lt;/code&gt; (keep both
 of the files); &lt;code&gt;skip&lt;/code&gt; (keep the first version
 of the file found); &lt;code&gt;overwrite&lt;/code&gt; overwrite the file
 with the new file
 Default for zip tasks is &lt;code&gt;keep&lt;/code&gt;
        </description>
      
        </attribute>
      
        <attribute name="encoding" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Encoding to use for filenames, defaults to the platform's
 default encoding.</short-description>
        
          <description>
          Encoding to use for filenames, defaults to the platform's
 default encoding.

 &lt;p&gt;For a list of possible values see &lt;a
 href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html"&gt;http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html&lt;/a&gt;.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="filesonly" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.</short-description>
        
          <description>
          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>Set whether or not to create an index list for classes.</short-description>
        
          <description>
          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="no">
        
          <short-description>The manifest file to use.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.</short-description>
        
          <description>
          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="yes, unless update is set to true">
        
          <short-description>Deployment descriptor to use (WEB-INF/web.xml);
 required unless &lt;tt&gt;update=true&lt;/tt&gt;.</short-description>
        
          <description>
          set the deployment descriptor to use (WEB-INF/web.xml);
 required unless &lt;tt&gt;update=true&lt;/tt&gt;
        </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>Sets behavior of the task when no files match.</short-description>
        
          <description>
          Sets behavior of the task when no files match.
 Possible values are: &lt;code&gt;fail&lt;/code&gt; (throw an exception
 and halt the build); &lt;code&gt;skip&lt;/code&gt; (do not create
 any archive, but issue a warning); &lt;code&gt;create&lt;/code&gt;
 (make an archive with no entries).
 Default for zip tasks is &lt;code&gt;skip&lt;/code&gt;;
 for jar tasks, &lt;code&gt;create&lt;/code&gt;.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="classes" type="org.apache.tools.ant.types.ZipFileSet" briefType="ZipFileset" required="NOTDEFINED">
        
          <short-description>Add files under WEB-INF/classes.</short-description>
        
          <description>
          add files under WEB-INF/classes
        </description>
      
        </element>

      
        <element name="manifest" type="org.apache.tools.ant.taskdefs.Manifest" briefType="" required="NOTDEFINED">
        
          <short-description>Allows the manifest for the archive file to be provided inline
 in the buildfile rather than in an external file.</short-description>
        
          <description>
          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>Adds a set of files.</short-description>
        
          <description>
          Adds a set of files.
        </description>
      
        </element>

      
        <element name="lib" type="org.apache.tools.ant.types.ZipFileSet" briefType="ZipFileset" required="NOTDEFINED">
        
          <short-description>Add files under WEB-INF/lib/.</short-description>
        
          <description>
          add files under WEB-INF/lib/
        </description>
      
        </element>

      
        <element name="metainf" type="org.apache.tools.ant.types.ZipFileSet" briefType="ZipFileset" required="NOTDEFINED">
        
          <short-description>Adds a zipfileset to include in the META-INF directory.</short-description>
        
          <description>
          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>Files to add under WEB-INF;.</short-description>
        
          <description>
          files to add under WEB-INF;
        </description>
      
        </element>

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

      
        <element name="zipfileset" type="org.apache.tools.ant.types.ZipFileSet" briefType="ZipFileset" required="NOTDEFINED">
        
          <short-description>Adds a set of files that can be
 read from an archive and be given a prefix/fullpath.</short-description>
        
          <description>
          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>Precompiles JSP's using WebLogic's JSP compiler (weblogic.jspc).</short-description>
  
    <description>
    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="yes">
        
          <short-description>Classpath to be used for this compilation.</short-description>
        
          <description>
          Set the classpath to be used for this compilation.
        </description>
      
        </attribute>
      
        <attribute name="dest" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Directory containing the source jsp's.</short-description>
        
          <description>
          Set the directory containing the source jsp's
        </description>
      
        </attribute>
      
        <attribute name="package" type="java.lang.String" briefType="String" required="yes">
        
          <short-description>Package under which the compiled classes go.</short-description>
        
          <description>
          Set the package under which the compiled classes go
        </description>
      
        </attribute>
      
        <attribute name="src" type="java.io.File" briefType="File" required="yes">
        
          <short-description>Directory containing the source jsp's.</short-description>
        
          <description>
          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>Maybe creates a nested classpath element.</short-description>
        
          <description>
          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>Starts a WebLogic server.</short-description>
  
    <description>
    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.&lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="args" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Additional argument string passed to the Weblogic instance;
 optional.</short-description>
        
          <description>
          Additional argument string passed to the Weblogic instance;
 optional.
        </description>
      
        </attribute>
      
        <attribute name="beahome" type="java.io.File" briefType="File" required="NOTDEFINED">
        
          <short-description>The location of the BEA Home; implicitly
 selects Weblogic 6.0; optional.</short-description>
        
          <description>
          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>The classpath to be used with the Java Virtual Machine that runs the Weblogic
 Server; required.</short-description>
        
          <description>
          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>Domain to run in; required for WL6.0.</short-description>
        
          <description>
          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>The location where weblogic lives.</short-description>
        
          <description>
          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>Additional arguments to pass to the weblogic JVM.</short-description>
        
          <description>
          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>The name of the weblogic server within the weblogic home which is to be run.</short-description>
        
          <description>
          The name of the weblogic server within the weblogic home which is to be run.
 Optiona, defaults to &amp;quot;myserver&amp;quot;
        </description>
      
        </attribute>
      
        <attribute name="pkpassword" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Private key password so the server can decrypt the SSL private key file;
 optional and only applicable to WL6.0.</short-description>
        
          <description>
          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>Management password of the server;
 optional and only applicable to WL6.0.</short-description>
        
          <description>
          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>The name of the security policy file within the weblogic home directory that
 is to be used.</short-description>
        
          <description>
          The name of the security policy file within the weblogic home directory that
 is to be used. If not specified, the default policy file &lt;code&gt;weblogic.policy&lt;/code&gt;
 is used.
        </description>
      
        </attribute>
      
        <attribute name="properties" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>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>
          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>Management username to run the server;
 optional and only applicable to WL6.0.</short-description>
        
          <description>
          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>Name of the main class for weblogic; optional.</short-description>
        
          <description>
          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>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>
          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>Add the classpath for the user classes.</short-description>
        
          <description>
          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>Get the classpath to the weblogic classpaths.</short-description>
        
          <description>
          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>Shuts down a WebLogic server.</short-description>
  
    <description>
    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>The location of the BEA Home; implicitly
 selects Weblogic 6.0 shutdown; optional.</short-description>
        
          <description>
          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>The classpath to be used with the Java Virtual Machine that runs the Weblogic
 Shutdown command;.</short-description>
        
          <description>
          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>Delay (in seconds) before shutting down the server;
 optional.</short-description>
        
          <description>
          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>The password for the account specified in the
 user parameter; required.</short-description>
        
          <description>
          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>URL to which the weblogic server is listening
 for T3 connections; required.</short-description>
        
          <description>
          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>The username of the account which will be used to shutdown the server;
 required.</short-description>
        
          <description>
          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>The classpath to be used with the Java Virtual Machine that runs the Weblogic
 Shutdown command;.</short-description>
        
          <description>
          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>Converts a WSDL file or URL resource into a .NET language.</short-description>
  
    <description>
    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>Name of the file to generate.</short-description>
        
          <description>
          Name of the file to generate. Required
        </description>
      
        </attribute>
      
        <attribute name="extraoptions" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Any extra WSDL.EXE options which aren't explicitly
  supported by the ant wrapper task; optional.</short-description>
        
          <description>
          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>Should failure halt the build?.</short-description>
        
          <description>
          Should failure halt the build? optional, default=true
        </description>
      
        </attribute>
      
        <attribute name="language" type="java.lang.String" briefType="String" required="NOTDEFINED">
        
          <short-description>Language; one of "CS", "JS", or "VB"
 optional, default is CS for C# source.</short-description>
        
          <description>
          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>Namespace to place  the source in.
 optional; default "".</short-description>
        
          <description>
          namespace to place  the source in.
 optional; default ""
        </description>
      
        </attribute>
      
        <attribute name="server" type="boolean" briefType="boolean" required="NOTDEFINED">
        
          <short-description>Flag to enable server side code generation;
 optional, default=false.</short-description>
        
          <description>
          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>The local WSDL file to parse; either url or srcFile is required.</short-description>
        
          <description>
          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>URL to fetch.</short-description>
        
          <description>
          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>Loads property values from a valid XML file, generating the property names from the file's element and attribute names.</short-description>
  
    <description>
    Loads property values from a valid XML file,
 generating the property names from the file's element and attribute names.

 Example:
 &lt;pre&gt;
   &amp;lt;root-tag myattr="true"&amp;gt;
     &amp;lt;inner-tag someattr="val"&amp;gt;Text&amp;lt;/inner-tag&amp;gt;
     &amp;lt;a2&amp;gt;&amp;lt;a3&amp;gt;&amp;lt;a4&amp;gt;false&amp;lt;/a4&amp;gt;&amp;lt;/a3&amp;gt;&amp;lt;/a2&amp;gt;
   &amp;lt;/root-tag&amp;gt;
&lt;/pre&gt;
 this generates
 &lt;pre&gt;
  root-tag(myattr)=true
  root-tag.inner-tag=Text
  root-tag.inner-tag(someattr)=val
  root-tag.a2.a3.a4=false
 &lt;/pre&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="collapseattributes" type="boolean" briefType="boolean" required="no, default is false.">
        
          <short-description>Flag to treat attributes as nested elements;
 optional, default false.</short-description>
        
          <description>
          flag to treat attributes as nested elements;
 optional, default false
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="yes">
        
          <short-description>The XML file to parse; required.</short-description>
        
          <description>
          The XML file to parse; required.
        </description>
      
        </attribute>
      
        <attribute name="keeproot" type="boolean" briefType="boolean" required="no, default is true.">
        
          <short-description>Flag to include the xml root tag as a 
 first value in the property name; optional, 
 default is true.</short-description>
        
          <description>
          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="no">
        
          <short-description>The prefix to prepend to each property.</short-description>
        
          <description>
          the prefix to prepend to each property
        </description>
      
        </attribute>
      
        <attribute name="validate" type="boolean" briefType="boolean" required="no, default is false.">
        
          <short-description>Flag to validate the XML file; optional, default false.</short-description>
        
          <description>
          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>Checks XML files are valid (or only well formed).</short-description>
  
    <description>
    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="no">
        
          <short-description>Specify the class name of the SAX parser to be used. (optional).</short-description>
        
          <description>
          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>Specify the classpath to be searched to load the parser (optional).</short-description>
        
          <description>
          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="no">
        
          <short-description>Where to find the parser class; optional.</short-description>
        
          <description>
          Where to find the parser class; optional.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" type="boolean" briefType="boolean" required="no">
        
          <short-description>Specify how parser error are to be handled; 
 optional, default=true
 &lt;p&gt;
 If set to &lt;code&gt;true&lt;/code&gt; (default), throw a buildException if the parser yields an error.</short-description>
        
          <description>
          Specify how parser error are to be handled; 
 optional, default=true
 &lt;p&gt;
 If set to &lt;code&gt;true&lt;/code&gt; (default), throw a buildException if the parser yields an error.
        </description>
      
        </attribute>
      
        <attribute name="file" type="java.io.File" briefType="File" required="no">
        
          <short-description>Specify the file to be checked; optional.</short-description>
        
          <description>
          specify the file to be checked; optional.
        </description>
      
        </attribute>
      
        <attribute name="lenient" type="boolean" briefType="boolean" required="no">
        
          <short-description>Specify whether the parser should be validating.</short-description>
        
          <description>
          Specify whether the parser should be validating. Default is &lt;code&gt;true&lt;/code&gt;.
 &lt;p&gt;
 If set to false, the validation will fail only if the parsed document is not well formed XML.
 &lt;p&gt;
 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="no">
        
          <short-description>Specify how parser error are to be handled.</short-description>
        
          <description>
          Specify how parser error are to be handled.
 &lt;p&gt;
 If set to &lt;code&gt;true&lt;/true&gt; (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>Add an XMLCatalog as a nested element; optional.</short-description>
        
          <description>
          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>Specify a set of file to be checked.</short-description>
        
          <description>
          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>No description.</short-description>
        
          <description>
          
        </description>
      
        </element>

      
        <element name="dtd" type="org.apache.tools.ant.types.DTDLocation" briefType="" required="NOTDEFINED">
        
          <short-description>Create a DTD location record; optional.</short-description>
        
          <description>
          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>Processes a set of XML documents via XSLT.</short-description>
  
    <description>
    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="no">
        
          <short-description>Base directory; 
 optional, default is the project's basedir.</short-description>
        
          <description>
          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="no">
        
          <short-description>Optional classpath to the XSL processor.</short-description>
        
          <description>
          Set the optional classpath to the XSL processor
        </description>
      
        </attribute>
      
        <attribute name="classpathref" type="org.apache.tools.ant.types.Reference" briefType="Reference" required="no">
        
          <short-description>Reference to an optional classpath to the XSL processor.</short-description>
        
          <description>
          Set the reference to an optional classpath to the XSL processor
        </description>
      
        </attribute>
      
        <attribute name="destdir" type="java.io.File" briefType="File" required="yes, unless in and out have been        specified.">
        
          <short-description>Destination directory into which the XSL result
 files should be copied to; 
 required, unless &lt;tt&gt;in&lt;/tt&gt; and &lt;tt&gt;out&lt;/tt&gt; are
 specified.</short-description>
        
          <description>
          Set the destination directory into which the XSL result
 files should be copied to; 
 required, unless &lt;tt&gt;in&lt;/tt&gt; and &lt;tt&gt;out&lt;/tt&gt; are
 specified.
        </description>
      
        </attribute>
      
        <attribute name="extension" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Desired file extension to be used for the target;
 optional, default is html.</short-description>
        
          <description>
          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="no; default is false">
        
          <short-description>Set whether to check dependencies, or always generate;
 optional, default is false.</short-description>
        
          <description>
          Set whether to check dependencies, or always generate;
 optional, default is false.
        </description>
      
        </attribute>
      
        <attribute name="in" type="java.io.File" briefType="File" required="no">
        
          <short-description>Specifies a single XML document to be styled.</short-description>
        
          <description>
          specifies a single XML document to be styled. Should be used 
 with the &lt;tt&gt;out&lt;/tt&gt; attribute; ; required if &lt;tt&gt;out&lt;/tt&gt; is set
        </description>
      
        </attribute>
      
        <attribute name="out" type="java.io.File" briefType="File" required="no">
        
          <short-description>Specifies the output name for the styled result from the 
 &lt;tt&gt;in&lt;/tt&gt; attribute; required if &lt;tt&gt;in&lt;/tt&gt; is set.</short-description>
        
          <description>
          Specifies the output name for the styled result from the 
 &lt;tt&gt;in&lt;/tt&gt; attribute; required if &lt;tt&gt;in&lt;/tt&gt; is set
        </description>
      
        </attribute>
      
        <attribute name="processor" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Name of the XSL processor to use; optional, default trax.</short-description>
        
          <description>
          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="no">
        
          <short-description>Whether to style all files in the included directories as well;
 optional, default is true.</short-description>
        
          <description>
          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="yes">
        
          <short-description>Name of the stylesheet to use - given either relative
 to the project's basedir or as an absolute path; required.</short-description>
        
          <description>
          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>Add the catalog to our internal catalog.</short-description>
        
          <description>
          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>Optional classpath to the XSL processor.</short-description>
        
          <description>
          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>Create an instance of an output property to be configured.</short-description>
        
          <description>
          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>Create an instance of an XSL parameter for configuration by Ant.</short-description>
        
          <description>
          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>Create a Zip file.</short-description>
    <description>
    Create a Zip file.
  </description>
    <structure>
      <attributes>
        <attribute name="basedir" type="java.io.File" briefType="File" required="no">
          <short-description>Directory from which to archive files; optional.</short-description>
          <description>
          Directory from which to archive files; optional.
        </description>
        </attribute>
        <attribute name="compress" type="boolean" briefType="boolean" required="no">
        
          <short-description>Whether we want to compress the files or only store them;
 optional, default=true;.</short-description>
        
          <description>
          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="yes">
        
          <short-description>The file to create; required.</short-description>
        
          <description>
          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="no">
        
          <short-description>Sets behavior for when a duplicate file is about to be added -
 one of &lt;code&gt;keep&lt;/code&gt;, &lt;code&gt;skip&lt;/code&gt; or &lt;code&gt;overwrite&lt;/code&gt;.</short-description>
        
          <description>
          Sets behavior for when a duplicate file is about to be added -
 one of &lt;code&gt;keep&lt;/code&gt;, &lt;code&gt;skip&lt;/code&gt; or &lt;code&gt;overwrite&lt;/code&gt;.
 Possible values are: &lt;code&gt;keep&lt;/code&gt; (keep both
 of the files); &lt;code&gt;skip&lt;/code&gt; (keep the first version
 of the file found); &lt;code&gt;overwrite&lt;/code&gt; overwrite the file
 with the new file
 Default for zip tasks is &lt;code&gt;keep&lt;/code&gt;
        </description>
      
        </attribute>
      
        <attribute name="encoding" type="java.lang.String" briefType="String" required="no">
        
          <short-description>Encoding to use for filenames, defaults to the platform's
 default encoding.</short-description>
        
          <description>
          Encoding to use for filenames, defaults to the platform's
 default encoding.

 &lt;p&gt;For a list of possible values see &lt;a
 href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html"&gt;http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html&lt;/a&gt;.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="filesonly" type="boolean" briefType="boolean" required="no">
        
          <short-description>If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.</short-description>
        
          <description>
          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="no">
        
          <short-description>If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.</short-description>
        
          <description>
          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="no">
        
          <short-description>Sets behavior of the task when no files match.</short-description>
        
          <description>
          Sets behavior of the task when no files match.
 Possible values are: &lt;code&gt;fail&lt;/code&gt; (throw an exception
 and halt the build); &lt;code&gt;skip&lt;/code&gt; (do not create
 any archive, but issue a warning); &lt;code&gt;create&lt;/code&gt;
 (make an archive with no entries).
 Default for zip tasks is &lt;code&gt;skip&lt;/code&gt;;
 for jar tasks, &lt;code&gt;create&lt;/code&gt;.
        </description>
      
        </attribute>
    
      </attributes>

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

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

      
        <element name="zipfileset" type="org.apache.tools.ant.types.ZipFileSet" briefType="ZipFileset" required="NOTDEFINED">
        
          <short-description>Adds a set of files that can be
 read from an archive and be given a prefix/fullpath.</short-description>
        
          <description>
          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="target">
    <short-description>Ant target that is executable and may depend on other targets.</short-description>
    <description>
		Ant target that is executable and may depend on other targets. 
	</description>
	<structure>
		<attributes>
			<attribute name="name" required="yes">
				<short-description>the name of the target.</short-description>
				<description>the name of the target.</description>
			</attribute>
			<attribute name="depends" required="no">
				<short-description>a comma-separated list of names of targets on which this target depends.</short-description>
				<description>a comma-separated list of names of targets on which this target depends.</description>
			</attribute>
			<attribute name="if" required="no">
				<short-description>the name of the property that must be set in order for this target to execute.</short-description>
				<description>the name of the property that must be set in order for this target to execute.</description>
			</attribute>
			<attribute name="unless" required="no">
				<short-description>the name of the property that must not be set in order for this target to execute.</short-description>
				<description>the name of the property that must not be set in order for this target to execute.</description>
			</attribute>
			<attribute name="description" required="no">
				<short-description>a short description of this target's function.</short-description>
				<description>a short description of this target's function.</description>
			</attribute>
		</attributes>
	</structure>
  </task>

</tasks>

