<?xml version="1.0" encoding="UTF-8"?>
<tasks>
  <task name="ant" catgory="control" classname="org.apache.tools.ant.taskdefs.Ant">
    <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"  required="no">
          <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" required="no">
          <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" required="no">
          <description>
          If true, pass all properties to the new Ant project.
 Defaults to true.
        </description>
        </attribute>
        <attribute name="inheritrefs" required="no">
 		<description>
          If true, pass all references to the new Ant project.
 Defaults to false.
        </description>
        </attribute>
        <attribute name="output"  required="no">
          <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" required="no">
          <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" required="NOTDEFINED">
          <description>
          Reference element identifying a data type to carry
 over to the new project.
        </description>
        </element>
        <element name="property" required="NOTDEFINED">
          <description>
          Property to pass to the new project.
 The property is passed as a 'user property'
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="antcall">
    <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" required="no">
          <description>
          If true, pass all properties to the new Ant project.
 Defaults to true.
        </description>
        </attribute>
        <attribute name="inheritrefs" required="no">
          <description>
          If true, pass all references to the new Ant project.
 Defaults to false
        </description>
        </attribute>
        <attribute name="target" required="yes">
          <description>
          Target to execute, required.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="reference" required="NOTDEFINED">
          <description>
          Reference element identifying a data type to carry
 over to the invoked target.
        </description>
        </element>
        <element name="param" required="NOTDEFINED">
          <description>
          Property to pass to the invoked target.
        </description>
        </element>
      </elements> 
    </structure>
  </task>
  <task name="antlr">
    <description>
    Invokes the ANTLR Translator generator on a grammar file.
  </description>
    <structure>
	  <attributes>
        <attribute name="debug" required="no">
          <description>
          Sets a flag to enable ParseView debugging
          </description>
        </attribute>
        <attribute name="diagnostic" required="no">
          <description>
          Sets a flag to emit diagnostic text
        </description>
        </attribute>
        <attribute name="dir" required="no">
          <description>
          The working directory of the process
        </description>
        </attribute>
        <attribute name="glib" required="no">
          <description>
          Sets an optional super grammar file.
        </description>      
        </attribute>
        <attribute name="html" required="no">
          <description>
          If true, emit html
        </description>
        </attribute>
        <attribute name="outputdirectory" required="no">
          <description>
          The directory to write the generated files to.
        </description>
        </attribute>
        <attribute name="target" required="yes">
          <description>
          The grammar file to process.
        </description>
        </attribute>
        <attribute name="trace" required="no">
          <description>
          If true, enables all tracing.
        </description>
        </attribute>
        <attribute name="tracelexer" required="no">
          <description>
          If true, enables lexer tracing.
        </description>
        </attribute>
        <attribute name="traceparser" required="no">
          <description>
          If true, enables parser tracing.
        </description>
        </attribute>
        <attribute name="tracetreewalker" required="no">
          <description>
          Sets a flag to allow the user to enable tree walker tracing.
        </description>
        </attribute>    
      </attributes>
      <elements>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Adds a classpath to be set
 because a directory might be given for Antlr debug.
        </description>
        </element>
        <element name="jvmarg" required="NOTDEFINED">
          <description>
          Adds a new JVM argument.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="antstructure">
    <description>
    Creates a partial DTD for Ant from the currently known tasks.
  </description>
    <structure>
      <attributes>
        <attribute name="output" required="yes">
          <description>
          The output file.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="apply">
    <description>
    Executes a given command, supplying a set of files as arguments.
  </description>
    <structure>
      <attributes>
        <attribute name="append" required="NOTDEFINED">
          <description>
          Whether output should be appended to or overwrite an existing file.
 Defaults to false.
        </description>
        </attribute>
        <attribute name="dest" required="yes, if you specify a nested mapper">
          <description>
          The directory where target files are to be placed.
        </description>
        </attribute>
        <attribute name="dir" required="no">
          <description>
          The working directory of the process.
        </description>
        </attribute>
        <attribute name="executable" required="yes">
          <description>
          The command to execute.
        </description>
        </attribute>
        <attribute name="failifexecutionfails" required="NOTDEFINED">
          <description>
          Stop the build if program cannot be started. Defaults to true.
        </description>
        </attribute>
        <attribute name="failonerror" required="no">
          <description>
          Fail if the command exits with a non-zero return code.
        </description>
        </attribute>
        <attribute name="newenvironment" required="no, default is false">
          <description>
          Do not propagate old environment when new environment variables are specified.
        </description>
        </attribute>
        <attribute name="os" required="no">
          <description>
          List of operating systems on which the command may be executed.
        </description>
        </attribute>
        <attribute name="output" required="no">
          <description>
          File the output of the process is redirected to.
        </description>
        </attribute>
        <attribute name="outputproperty" required="no">
          <description>
          Property name whose value should be set to the output of
 the process.
        </description>
        </attribute>
        <attribute name="parallel" required="no">
          <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" required="no, default is false">
        <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" required="NOTDEFINED">
        <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" required="no, default is false">
          <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" required="no, default is file">
          <description>
          Whether the command works only on files, directories or both?
        </description>
        </attribute>
        <attribute name="vmlauncher" required="no, default is true">
          <description>
          If true, launch new process with VM, otherwise use the OS's shell.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="env" required="NOTDEFINED">
          <description>
          Add an environment variable to the launched process.
        </description>
        </element>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Source files to operate upon.
        </description>
        </element>
        <element name="arg" required="NOTDEFINED">
          <description>
          Adds a command-line argument.
        </description>
        </element>
        <element name="mapper" required="NOTDEFINED">
          <description>
          Mapper to use for mapping source files to target files.
        </description>
        </element>
        <element name="srcfile" required="NOTDEFINED">
          <description>
          Marker that indicates where the name of the source file should
 be put on the command line.
        </description>
        </element>
        <element name="targetfile" required="NOTDEFINED">
          <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">
    <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" required="yes">
          <description>
          Set a classname of a class which must be available to set the given 
 property.
        </description>
        </attribute>
        <attribute name="classpath" required="no">
          <description>
          Set the classpath to be used when searching for classes and resources.
        </description>
        </attribute>
        <attribute name="classpathref" required="no">
          <description>
          Set the classpath by reference.
        </description>
        </attribute>
        <attribute name="file" required="">
          <description>
          Set the file which must be present in the file system to set the given
 property.
        </description>
        </attribute>
        <attribute name="filepath" required="no">
          <description>
          Set the path to use when looking for a file.
        </description>
        </attribute>
        <attribute name="ignoresystemclasses" required="no">
          <description>
          Set whether the search for classes should ignore the runtime classes and
 just use the given classpath.
        </description>
        </attribute>
        <attribute name="property" required="yes">
          <description>
          Set the name of the property which will be set if the particular resource
 is available.
        </description>
        </attribute>
        <attribute name="resource" required="">
          <description>
          Set the name of a Java resource which is required to set the property.
        </description>
        </attribute>
        <attribute name="type" required="no">
          <description>
          Set what type of file is required - either directory or file.
        </description>
        </attribute>
        <attribute name="value" required="no">
          <description>
          Set the value to be given to the property if the desired resource is
 available.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Classpath to be used when searching for classes and resources.
        </description>
        </element>
        <element name="filepath" required="NOTDEFINED">
          <description>
          Path to search for file resources.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="basename">
    <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" required="yes">
          <description>
          File or directory to get base name from.
        </description>
        </attribute>
        <attribute name="property" required="yes">
          <description>
          Property to set base name to.
        </description>
        </attribute>
        <attribute name="suffix" required="no">
          <description>
          Optional suffix to remove from base name.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="blgenclient">
    <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" required="NOTDEFINED">
          <description>
          Path to use for classpath.
        </description>
        </attribute>
        <attribute name="classpathref" required="NOTDEFINED">
          <description>
          Reference to existing path, to use as a classpath.
        </description>
        </attribute>
        <attribute name="clientjar" required="NOTDEFINED">
          <description>
          Client JAR file name.
        </description>
        </attribute>
        <attribute name="debug" required="NOTDEFINED">
          <description>
          If true, turn on the debug mode for each of the Borland tools launched.
        </description>
        </attribute>
        <attribute name="ejbjar" required="NOTDEFINED">
          <description>
          EJB JAR file.
        </description>
        </attribute>
        <attribute name="mode" required="NOTDEFINED">
          <description>
          Command launching mode: java or fork.
        </description>
        </attribute>
        <attribute name="version" required="NOTDEFINED">
          <description>
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Adds path to the classpath.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="buildnumber">
    <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" required="no; defaults to &quot;build.number&quot;">
          <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">
    <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" required="NOTDEFINED">
          <description>
          The destination file or directory.
        </description>
        </attribute>
        <attribute name="src" required="NOTDEFINED">
          <description>
          The file to expand; required.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="bzip2">
    <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" required="NOTDEFINED">
          <description>
          the file to compress; required.
        </description>
        </attribute>
        <attribute name="zipfile" required="NOTDEFINED">
          <description>
          the required destination file.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="cab">
    <description>
    Create a CAB archive.
  </description>
    <structure>
      <attributes>
        <attribute name="basedir" required="yes">
          <description>
          Base directory to look in for files to CAB.
        </description>
        </attribute>
        <attribute name="cabfile" required="yes">
          <description>
          The name/location of where to create the .cab file.
        </description>
        </attribute>
        <attribute name="compress" required="no">
          <description>
          If true, compress the files otherwise only store them.
        </description>
        </attribute>
        <attribute name="options" required="no">
          <description>
          Sets additional cabarc options that are not supported directly.
        </description>
        </attribute>
        <attribute name="verbose" required="no">
          <description>
          If true, display cabarc output.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Adds a set of files to archive.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="cccheckin">
    <description>
   Task to perform a &quot;cleartool checkin&quot; command to ClearCase. 
  </description>
    <structure>
      <attributes>
        <attribute name="cleartooldir" required="NOTDEFINED">
          <description>
          Set the directory where the cleartool executable is located.
        </description>
        </attribute>
        <attribute name="comment" required="NOTDEFINED">
          <description>
          Sets the comment string.
        </description>
        </attribute>
        <attribute name="commentfile" required="NOTDEFINED">
          <description>
          Specifies a file containing a comment.
        </description>
        </attribute>
        <attribute name="identical" required="NOTDEFINED">
          <description>
          If true, allows the file to be checked in even
 if it is identical to the original.
        </description>
        </attribute>
        <attribute name="keepcopy" required="NOTDEFINED">
          <description>
          If true, keeps a copy of the file with a .keep extension.
        </description>
        </attribute>
        <attribute name="nowarn" required="NOTDEFINED">
          <description>
          If true, suppress warning messages.
        </description>
        </attribute>
        <attribute name="preservetime" required="NOTDEFINED">
          <description>
          If true, preserve the modification time.
        </description>
        </attribute>
        <attribute name="viewpath" required="NOTDEFINED">
          <description>
          Set the path to the item in a ClearCase view to operate on.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="cccheckout">
    <description>
    Task to perform a &quot;cleartool checkout&quot; command to ClearCase.
  </description>
    <structure>
      <attributes>
        <attribute name="branch" required="NOTDEFINED">
          <description>
          Specify a branch to check out the file to.
        </description>
        </attribute>
        <attribute name="cleartooldir" required="NOTDEFINED">
          <description>
          Set the directory where the cleartool executable is located.
        </description>
        </attribute>
        <attribute name="comment" required="NOTDEFINED">
          <description>
          Sets the comment string.
        </description>
        </attribute>
        <attribute name="commentfile" required="NOTDEFINED">
          <description>
          Specifies a file containing a comment.
        </description>
        </attribute>
        <attribute name="nodata" required="NOTDEFINED">
          <description>
          If true, checks out the file but does not create an
 editable file containing its data.
        </description>
        </attribute>
        <attribute name="nowarn" required="NOTDEFINED">
          <description>
          If true, warning messages are suppressed.
        </description>
        </attribute>
        <attribute name="out" required="NOTDEFINED">
          <description>
          Creates a writable file under a different filename.
        </description>
        </attribute>
        <attribute name="reserved" required="NOTDEFINED">
          <description>
          If true, checks out the file as reserved.
        </description>
        </attribute>
        <attribute name="version" required="NOTDEFINED">
          <description>
          If true, allows checkout of a version other than main latest.
        </description>
        </attribute>
        <attribute name="viewpath" required="NOTDEFINED">
          <description>
          Set the path to the item in a ClearCase view to operate on.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="ccmcheckin">
    <description>
    Task to &quot;checkin&quot; a file 
  </description>
    <structure>
      <attributes>
        <attribute name="ccmdir" required="NOTDEFINED">
          <description>
          Set the directory where the ccm executable is located.
        </description>
        </attribute>
        <attribute name="comment" required="NOTDEFINED">
          <description>
          Specifies a comment.
        </description>
        </attribute>
        <attribute name="file" required="NOTDEFINED">
          <description>
          Sets the path to the file that the command will operate on.
        </description>
        </attribute>
        <attribute name="task" required="NOTDEFINED">
          <description>
          Specifies the task number used to check
 in the file (may use 'default').
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="ccmcheckintask">
    <description>
    Task to perform a &quot;checkin&quot; default task command to Continuus.
  </description>
    <structure>
      <attributes>
        <attribute name="ccmdir" required="NOTDEFINED">
          <description>
          Set the directory where the ccm executable is located.
        </description>
        </attribute>
        <attribute name="comment" required="NOTDEFINED">
          <description>
          Specifies a comment.
        </description>
        </attribute>
        <attribute name="file" required="NOTDEFINED">
          <description>
          Sets the path to the file that the command will operate on.
        </description>
        </attribute>
        <attribute name="task" required="NOTDEFINED">
          <description>
          Specifies the task number used to check
 in the file (may use 'default').
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="ccmcheckout">
    <description>
    Task to perform a &quot;Checkout&quot; command to Continuus.
  </description>
    <structure>
      <attributes>
        <attribute name="ccmdir" required="NOTDEFINED">
          <description>
          Set the directory where the ccm executable is located.
        </description>
        </attribute>
        <attribute name="comment" required="NOTDEFINED">
          <description>
          Specifies a comment.
        </description>
        </attribute>
        <attribute name="file" required="NOTDEFINED">
          <description>
          Sets the path to the file that the command will operate on.
        </description>
        </attribute>
        <attribute name="task" required="NOTDEFINED">
          <description>
          Specifies the task number used to check
 in the file (may use 'default').
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="ccmcreatetask">
    <description>
   Create a Continuus task.
  </description>
    <structure>
      <attributes>
        <attribute name="ccmdir" required="NOTDEFINED">
          <description>
          Set the directory where the ccm executable is located.
        </description>
        </attribute>
        <attribute name="comment" required="NOTDEFINED">
          <description>
          Specifies a comment.
        </description>
        </attribute>
        <attribute name="platform" required="NOTDEFINED">
          <description>
          Specifies the target platform.
        </description>
        </attribute>
        <attribute name="release" required="NOTDEFINED">
          <description>
          Specify the CCM release.
        </description>
        </attribute>
        <attribute name="resolver" required="NOTDEFINED">
          <description>
          Specifies the resolver.
        </description>
        </attribute>
        <attribute name="subsystem" required="NOTDEFINED">
          <description>
          Specifies the subsystem.
        </description>
        </attribute>
        <attribute name="task" required="NOTDEFINED">
          <description>
          Specifies the task number used to checkin
 the file (may use 'default').
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="ccmreconfigure">
 <description>
    Task to perform a reconfigure command to Continuus.
  </description>
    <structure>
      <attributes>
        <attribute name="ccmdir" required="NOTDEFINED">
          <description>
          Set the directory where the ccm executable is located.
        </description>
        </attribute>
        <attribute name="ccmproject" required="NOTDEFINED">
          <description>
          Sets the ccm project on which the operation is applied.
        </description>
        </attribute>
        <attribute name="recurse" required="NOTDEFINED">
          <description>
          If true, recurse on subproject (default false).
        </description>
        </attribute>
        <attribute name="verbose" required="NOTDEFINED">
          <description>
          If true, do a verbose reconfigure operation (default false).
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="ccuncheckout">
    <description>
    Task to perform a &quot;UnCheckout&quot; command to ClearCase.
  </description>
    <structure>
      <attributes>
        <attribute name="cleartooldir" required="NOTDEFINED">
          <description>
          Set the directory where the cleartool executable is located.
        </description>
        </attribute>
        <attribute name="keepcopy" required="NOTDEFINED">
          <description>
          If true, keep a copy of the file with a .keep extension.
        </description>
        </attribute>
        <attribute name="viewpath" required="NOTDEFINED">
          <description>
          Set the path to the item in a ClearCase view to operate on.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="ccupdate">
    <description>
    Task to perform an &quot;cleartool update&quot; command to ClearCase.
  </description>
    <structure>
      <attributes>
        <attribute name="cleartooldir" required="NOTDEFINED">
          <description>
          Set the directory where the cleartool executable is located.
        </description>
        </attribute>
        <attribute name="currenttime" required="NOTDEFINED">
          <description>
          If true, modification time should be written as the current time.
 Either currenttime or preservetime can be specified.
        </description>
        </attribute>
        <attribute name="graphical" required="NOTDEFINED">
          <description>
          If true, displays a graphical dialog during the update.
        </description>
        </attribute>
        <attribute name="log" required="NOTDEFINED">
          <description>
          Sets the log file where cleartool records
 the status of the command.
        </description>
        </attribute>
        <attribute name="overwrite" required="NOTDEFINED">
          <description>
          If true, overwrite hijacked files.
        </description>
        </attribute>
        <attribute name="preservetime" required="NOTDEFINED">
          <description>
          If true, modification time should be preserved from the VOB time.
 Either currenttime or preservetime can be specified.
        </description>
        </attribute>
        <attribute name="rename" required="NOTDEFINED">
          <description>
          If true, hijacked files are renamed with a .keep extension.
        </description>
        </attribute>
        <attribute name="viewpath" required="NOTDEFINED">
          <description>
          Set the path to the item in a ClearCase view to operate on.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="checksum">
    <description>
    Used to create or verify file checksums.
  </description>
    <structure>
      <attributes>
        <attribute name="algorithm" required="no">
          <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" required="one of either file or      at least one nested fileset element.">
          <description>
          Sets the file for which the checksum is to be calculated.
        </description>
        </attribute>
        <attribute name="fileext" required="no">
          <description>
          Sets the file extension that is be to used to
 create or identify destination file.
        </description>
        </attribute>
        <attribute name="forceoverwrite" required="no">
 whether it is newer than
          <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" required="no">
          <description>
          Sets the property to hold the generated checksum.
        </description>
        </attribute>
        <attribute name="provider" required="no">
          <description>
          Sets the MessageDigest algorithm provider to be used
 to calculate the checksum.
        </description>
        </attribute>
        <attribute name="readbuffersize" required="no">
          <description>
          The size of the read buffer to use.
        </description>
        </attribute>
        <attribute name="verifyproperty" required="no">
          <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" required="NOTDEFINED">
          <description>
          Files to generate checksums for.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="chmod">
    <description>
    Chmod equivalent for unix-like environments.
  </description>
    <structure>
      <attributes>
        <attribute name="append" required="NOTDEFINED">
          <description>
          Whether output should be appended to or overwrite an existing file.
 Defaults to false.
        </description>
        </attribute>
        <attribute name="defaultexcludes" required="no">
          <description>
          Sets whether default exclusions should be used or not.
        </description>
        </attribute>
        <attribute name="dest" required="NOTDEFINED">
          <description>
          The directory where target files are to be placed.
        </description>
        </attribute>
        <attribute name="dir" required="">
          <description>
          The directory which holds the files whose permissions must be changed.
        </description>
        </attribute>
        <attribute name="excludes" required="no">
          <description>
          Sets the set of exclude patterns. Patterns may be separated by a comma
 or a space.
        </description>
        </attribute>
        <attribute name="executable" required="NOTDEFINED">
          <description>
          The command to execute.
        </description>
        </attribute>
        <attribute name="failifexecutionfails" required="NOTDEFINED">
          <description>
          Stop the build if program cannot be started. Defaults to true.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <description>
          Fail if the command exits with a non-zero return code.
        </description>
        </attribute>
        <attribute name="file" required="exactly one of the two or nested &lt;fileset&gt; elements.">
          <description>
          The file or single directory of which the permissions must be changed.
        </description>
        </attribute>
        <attribute name="includes" required="no">
          <description>
          Sets the set of include patterns. Patterns may be separated by a comma
 or a space.
        </description>
        </attribute>
        <attribute name="newenvironment" required="NOTDEFINED">
          <description>
          Do not propagate old environment when new environment variables are specified.
        </description>
        </attribute>
        <attribute name="os" required="NOTDEFINED">
          <description>
          List of operating systems on which the command may be executed.
        </description>
        </attribute>
        <attribute name="output" required="NOTDEFINED">
          <description>
          File the output of the process is redirected to.
        </description>
        </attribute>
        <attribute name="outputproperty" required="NOTDEFINED">
          <description>
          Property name whose value should be set to the output of
 the process.
        </description>
        </attribute>
        <attribute name="parallel" required="no">
          <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" required="yes">
          <description>
          The new permissions.
        </description>
        </attribute>
        <attribute name="relative" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="no, default is file">
          <description>
          Whether the command works only on files, directories or both?
        </description>
        </attribute>
        <attribute name="vmlauncher" required="NOTDEFINED">
          <description>
          If true, launch new process with VM, otherwise use the OS's shell.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="env" required="NOTDEFINED">
          <description>
          Add an environment variable to the launched process.
        </description>
        </element>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Source files to operate upon.
        </description>
        </element>
        <element name="arg" required="NOTDEFINED">
          <description>
          Adds a command-line argument.
        </description>
        </element>
        <element name="exclude" required="NOTDEFINED">
          <description>
          Add a name entry on the exclude list.
        </description>
        </element>
        <element name="include" required="NOTDEFINED">
          <description>
          Add a name entry on the include list.
        </description>
        </element>
      
        <element name="mapper" required="NOTDEFINED">
          <description>
          Mapper to use for mapping source files to target files.
        </description>
        </element>
        <element name="patternset" required="NOTDEFINED">
          <description>
          Add a set of patterns.
        </description>
        </element>
        <element name="srcfile" required="NOTDEFINED">
          <description>
          Marker that indicates where the name of the source file should
 be put on the command line.
        </description>
        </element>
        <element name="targetfile" required="NOTDEFINED">
          <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">
    <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" required="no">
          <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" required="no     ">
          <description>
          Sets the destination file, or uses the console if not specified.
        </description>
        </attribute>
        <attribute name="encoding" required="no">
          <description>
          Sets the encoding for the input files, used when displaying the
 data via the console.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="filelist" required="NOTDEFINED">
          <description>
          List of files to concatenate.
        </description>
        </element>
        <element name="fileset" required="NOTDEFINED">
          <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">
    <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" required="yes">
          <description>
          The name of the property to set. Required.
        </description>
        </attribute>
        <attribute name="value" required="no">
          <description>
          The value for the property to set, if condition evaluates to true.
 Defaults to "true".
        </description>
        </attribute>
      </attributes>
    
      <elements>
        <element name="and" required="NOTDEFINED">
          <description>
          Add an &amp;lt;and&amp;gt; condition "container".
        </description>
        </element>
      
        <element name="available" required="NOTDEFINED">
          <description>
          Add an &amp;lt;available&amp;gt; condition.
        </description>
        </element>
        <element name="checksum" required="NOTDEFINED">
          <description>
          Add an &amp;lt;checksum&amp;gt; condition.
        </description>
        </element>
        <element name="contains" required="NOTDEFINED">
          <description>
          Add a &amp;lt;contains&amp;gt; condition.
        </description>
        </element>
        <element name="equals" required="NOTDEFINED">
          <description>
          Add an &amp;lt;equals&amp;gt; condition.
        </description>
        </element>
        <element name="filesmatch" required="NOTDEFINED">
          <description>
          Add a &amp;lt;filesmatch&amp;gt; condition.
        </description>
        </element>
        <element name="http" required="NOTDEFINED">
          <description>
          Add an &amp;lt;http&amp;gt; condition.
        </description>
        </element>
        <element name="isfalse" required="NOTDEFINED">
          <description>
          Add a &amp;lt;isfalse&amp;gt; condition.
        </description>
        </element>
        <element name="isset" required="NOTDEFINED">
          <description>
          Add an &amp;lt;isset&amp;gt; condition.
        </description>
        </element>
        <element name="istrue" required="NOTDEFINED">
          <description>
          Add a &amp;lt;istrue&amp;gt; condition.
        </description>
        </element>
        <element name="not" required="NOTDEFINED">
          <description>
          Add an &amp;lt;not&amp;gt; condition "container".
        </description>
        </element>
        <element name="or" required="NOTDEFINED">
          <description>
          Add an &amp;lt;or&amp;gt; condition "container".
        </description>
        </element>
        <element name="os" required="NOTDEFINED">
          <description>
          Add an &amp;lt;os&amp;gt; condition.
        </description>
        </element>
        <element name="socket" required="NOTDEFINED">
          <description>
          Add a &amp;lt;socket&amp;gt; condition.
        </description>
        </element>
        <element name="uptodate" required="NOTDEFINED">
          <description>
          Add an &amp;lt;uptodate&amp;gt; condition.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="copy">
    <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" required="NOTDEFINED">
          <description>
          Sets the character encoding
        </description>
        </attribute>
        <attribute name="failonerror" required="no; defaults to true.">
          <description>
          If false, note errors to the output but keep going.
        </description>
        </attribute>
        <attribute name="file" required="yes, unless a nested      &lt;fileset&gt; element is used.">
          <description>
          Sets a single source file to copy.
        </description>
        </attribute>
        <attribute name="filtering" required="no; defaults to false.">
          <description>
          If true, enables filtering.
        </description>
        </attribute>
        <attribute name="flatten" required="no; defaults to false.">
          <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" required="no; defaults to true.">
          <description>
          Used to copy empty directories.
        </description>
        </attribute>
        <attribute name="overwrite" required="no; defaults to false.">
          <description>
          Overwrite any existing destination file(s).
        </description>
        </attribute>
        <attribute name="preservelastmodified" required="no; defaults to false.">
          <description>
          Give the copied files the same last modified time as the original files.
        </description>
        </attribute>
        <attribute name="todir" required="">
          <description>
          Sets the destination directory.
        </description>
        </attribute>
        <attribute name="tofile" 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.">
          <description>
          Sets the destination file.
        </description>
        </attribute>
        <attribute name="verbose" required="no; defaults to false.">
          <description>
          Used to force listing of all names of copied files.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Adds a set of files to copy.
        </description>
        </element>
        <element name="filterchain" required="NOTDEFINED">
          <description>
          Adds a FilterChain.
        </description>
        </element>
        <element name="filterset" required="NOTDEFINED">
          <description>
          Adds a filterset.
        </description>
        </element>
        <element name="mapper" required="NOTDEFINED">
          <description>
          Defines the mapper to map source to destination files.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="copydir">
    <description>
    Copies a directory.
  </description>
    <structure>
      <attributes>
        <attribute name="dest" required="yes">
          <description>
        </description>
        </attribute>
        <attribute name="filtering" required="no">
          <description>
        </description>
        </attribute>
        <attribute name="flatten" required="no">
          <description>
        </description>
        </attribute>
        <attribute name="forceoverwrite" required="no">
          <description>
        </description>
        </attribute>
        <attribute name="src" required="yes">
          <description>
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="copyfile">
    <description>
    Copies a file.
  </description>
    <structure>
      <attributes>
        <attribute name="dest" required="yes">
          <description>
        </description>
        </attribute>
        <attribute name="filtering" required="no">
          <description>
        </description>
        </attribute>
        <attribute name="forceoverwrite" required="no">
          <description>
        </description>
        </attribute>
        <attribute name="src" required="yes">
          <description>
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="csc">
    <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;
  </description>
    <structure>
      <attributes>
        <attribute name="additionalmodules" required="NOTDEFINED">
          <description>
          Semicolon separated list of modules to refer to.
        </description>
        </attribute>
        <attribute name="debug" required="NOTDEFINED">
          <description>
          set the debug flag on or off.
        </description>
        </attribute>
        <attribute name="definitions" required="NOTDEFINED">
          <description>
          Semicolon separated list of defined constants.
        </description>
        </attribute>
        <attribute name="destdir" required="NOTDEFINED">
          <description>
          Set the destination directory of files to be compiled.
        </description>
        </attribute>
        <attribute name="destfile" required="NOTDEFINED">
          <description>
          Set the name of exe/library to create.
        </description>
        </attribute>
        <attribute name="docfile" required="NOTDEFINED">
          <description>
          file for generated XML documentation
        </description>
        </attribute>
        <attribute name="extraoptions" required="NOTDEFINED">
          <description>
          Any extra options which are not explicitly supported
 by this task.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <description>
          If true, fail on compilation errors.
        </description>
        </attribute>
        <attribute name="filealign" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          If true, print the full path of files on errors.
        </description>
        </attribute>
        <attribute name="includedefaultreferences" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          set the incremental compilation flag on or off.
        </description>
        </attribute>
        <attribute name="mainclass" required="NOTDEFINED">
          <description>
          Sets the name of main class for executables.
        </description>
        </attribute>
        <attribute name="noconfig" required="NOTDEFINED">
          <description>
          A flag that tells the compiler not to read in the compiler 
 settings files 'csc.rsp' in its bin directory and its local directory
        </description>
        </attribute>
        <attribute name="optimize" required="NOTDEFINED">
          <description>
          If true, enables optimization flag.
        </description>
        </attribute>
        <attribute name="outputfile" required="NOTDEFINED">
          <description>
          Set the output file
        </description>
        </attribute>
        <attribute name="referencefiles" required="NOTDEFINED">
          <description>
          Path of references to include.
 Wildcards should work.
        </description>
        </attribute>
        <attribute name="references" required="NOTDEFINED">
          <description>
          Semicolon separated list of DLLs to refer to.
        </description>
        </attribute>
        <attribute name="srcdir" required="NOTDEFINED">
          <description>
          Set the source directory of the files to be compiled.
        </description>
        </attribute>
        <attribute name="targettype" required="NOTDEFINED">
          <description>
          Set the type of target.
        </description>
        </attribute>
        <attribute name="unsafe" required="NOTDEFINED">
          <description>
          If true, enables the unsafe keyword.
        </description>
        </attribute>
        <attribute name="utf8output" required="NOTDEFINED">
          <description>
          If true, require all compiler output to be in UTF8 format.
        </description>
        </attribute>
        <attribute name="warnlevel" required="NOTDEFINED">
          <description>
          Level of warning currently between 1 and 4
 with 4 being the strictest.
        </description>
        </attribute>
        <attribute name="win32icon" required="NOTDEFINED">
          <description>
          Set the filename of icon to include.
        </description>
        </attribute>
        <attribute name="win32res" required="NOTDEFINED">
          <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">
    <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" required="no, default to &quot;false&quot;.">
          <description>
          Whether to append output/error when redirecting to a file.
        </description>
        </attribute>
        <attribute name="command" required="no, default &quot;checkout&quot;.">
          <description>
          The CVS command to execute.
        </description>
        </attribute>
        <attribute name="compression" required="no. defaults to false.">
          <description>
          If true, this is the same as compressionlevel="3".
        </description>
        </attribute>
        <attribute name="compressionlevel" required="no. defaults to no compression.">
          <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" required="no">
          <description>
          The CVSROOT variable.
        </description>
        </attribute>
        <attribute name="cvsrsh" required="no">
          <description>
          The CVS_RSH variable.
        </description>
        </attribute>
        <attribute name="date" required="no">
          <description>
          Use the most recent revision no later than the given date.
        </description>
        </attribute>
        <attribute name="dest" required="no, default is project&apos;s basedir.">
          <description>
          The directory where the checked out files should be placed.
        </description>
        </attribute>
        <attribute name="error" required="no, default error to ant log as msg_warn.">
          <description>
          The file to direct standard error from the command.
        </description>
        </attribute>
        <attribute name="failonerror" required="no">
          <description>
          Stop the build process if the command exits with
 a return code other than 0.
 Defaults to false.
        </description>
        </attribute>
        <attribute name="noexec" required="no, default to &quot;false&quot;">
          <description>
          If true, report only and don't change any files.
        </description>
        </attribute>
        <attribute name="output" required="no, default output to ant log as msg_info.">
          <description>
          The file to direct standard output from the command.
        </description>
        </attribute>
        <attribute name="package" required="no">
          <description>
          The package/module to operate upon.
        </description>
        </attribute>
        <attribute name="passfile" required="no, default file ~/.cvspass.">
          <description>
          Password file to read passwords from.
        </description>
        </attribute>
        <attribute name="port" required="no, default port 2401.">
          <description>
          Port used by CVS to communicate with the server.
        </description>
        </attribute>
        <attribute name="quiet" required="no, default &quot;false&quot;">
          <description>
          If true, suppress informational messages.
        </description>
        </attribute>
        <attribute name="tag" required="no">
          <description>
          The tag of the package/module to operate upon.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="commandline" required="NOTDEFINED">
          <description>
          Adds direct command-line to execute.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="cvschangelog">
    <description>
    Generates an XML-formatted report file of the change logs recorded in a CVS repository. 
Important: This task needs &quot;cvs&quot; on the path. If it isn't, you will get an error (such as error 2 on windows). If the cvs task does not work, try to execute cvs.exe from the command line in the target directory in which you are working. 
  </description>
    <structure>
      <attributes>
        <attribute name="daysinpast" required="NOTDEFINED">
          <description>
          Sets the number of days into the past for which the change log information should be retrieved.
        </description>
        </attribute>
        <attribute name="destfile" required="NOTDEFINED">
          <description>
          Set the output file for the log.
        </description>
        </attribute>
        <attribute name="dir" required="NOTDEFINED">
          <description>
          Set the base dir for cvs.
        </description>
        </attribute>
        <attribute name="end" required="NOTDEFINED">
          <description>
          The latest date to which change logs are to be included in the report.
        </description>
        </attribute>
        <attribute name="start" required="NOTDEFINED">
          <description>
          The earliest date from which change logs are to be included in the report.
        </description>
        </attribute>
        <attribute name="usersfile" required="NOTDEFINED">        
          <description>
          Set a lookup list of user names &amp; addresses
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Adds a set of files about which cvs logs will be generated.
        </description>
        </element>
        <element name="user" required="NOTDEFINED">
          <description>
          Add a user to list changelog knows about.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="cvspass">
    <description>
    Adds an new entry to a CVS password file.
  </description>
    <structure>
      <attributes>
        <attribute name="cvsroot" required="yes">
          <description>
          The CVS repository to add an entry for.
        </description>
        </attribute>
        <attribute name="passfile" required="no, default is ~/.cvspass.">
          <description>
          Password file to add the entry to.
        </description>
        </attribute>
        <attribute name="password" required="yes">
          <description>
          Password to be added to the password file.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="cvstagdiff">
    <description>
    Generates an XML-formatted report file of the changes between two tags or dates recorded in a CVS repository. 
Important: This task needs &quot;cvs&quot; on the path. If it isn't, you will get an error (such as error 2 on windows). If the cvs task does not work, try to execute cvs.exe from the command line in the target directory in which you are working. 
  </description>
    <structure>
      <attributes>
        <attribute name="compression" required="NOTDEFINED">
          <description>
          If true, this is the same as compressionlevel="3".
        </description>
        </attribute>
        <attribute name="compressionlevel" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          The CVSROOT variable.
        </description>
        </attribute>
        <attribute name="cvsrsh" required="NOTDEFINED">
          <description>
          The CVS_RSH variable.
        </description>
        </attribute>
        <attribute name="destfile" required="yes">
          <description>
          The file in which to write the diff report.
        </description>
        </attribute>
        <attribute name="enddate" required="">
          <description>
          The latest date from which diffs are to be included in the report.
accepts all formats accepted by the cvs command for -D date_spec arguments
        </description>
        </attribute>
        <attribute name="endtag" required="exactly one of the two.">
          <description>
          The latest tag from which diffs are to be included in the report.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <description>
          Stop the build process if the command exits with
 a return code other than 0.
 Defaults to false.
        </description>
        </attribute>
        <attribute name="package" required="NOTDEFINED">
          <description>
          The package/module to analyze.
        </description>
        </attribute>
        <attribute name="passfile" required="NOTDEFINED">
          <description>
          Password file to read passwords from.
        </description>
        </attribute>
        <attribute name="port" required="NOTDEFINED">
          <description>
          Port used by CVS to communicate with the server.
        </description>
        </attribute>
        <attribute name="quiet" required="NOTDEFINED">
          <description>
          If true, suppress informational messages.
        </description>
        </attribute>
        <attribute name="startdate" required="">
          <description>
          The earliest date from which diffs are to be included in the report.
accepts all formats accepted by the cvs command for -D date_spec arguments
        </description>
        </attribute>
        <attribute name="starttag" required="exactly one of the two.">
          <description>
          The earliest tag from which diffs are to be included in the report.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="ddcreator">
    <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" required="NOTDEFINED">
          <description>
          Set the classpath to be used for this compilation.
        </description>
        </attribute>
        <attribute name="descriptors" required="NOTDEFINED">
          <description>
          Set the directory from where the text descriptions of the deployment descriptors are
 to be read.
        </description>
        </attribute>
        <attribute name="dest" required="NOTDEFINED">
          <description>
          Set the directory into which the serialized deployment descriptors are to
 be written.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="delete">
    <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" required="no">
          <description>
          Sets whether default exclusions should be used or not.
        </description>
        </attribute>
        <attribute name="dir" required="">
          <description>
          Set the directory from which files are to be deleted
        </description>
        </attribute>
        <attribute name="excludes" required="no">
          <description>
          Sets the set of exclude patterns. Patterns may be separated by a comma
 or a space.
        </description>
        </attribute>
      
        <attribute name="excludesfile" required="no">
          <description>
          Sets the name of the file containing the includes patterns.
        </description>
        </attribute>
        <attribute name="failonerror" required="no">
          <description>
          If false, note errors but continue.
        </description>
        </attribute>
        <attribute name="file" required="at least one of the two,       unless a &lt;fileset&gt; is specified.">
          <description>
          Set the name of a single file to be removed.
        </description>
        </attribute>
        <attribute name="includeemptydirs" required="no">
          <description>
          If true, delete empty directories.
        </description>
        </attribute>
        <attribute name="includes" required="no">
          <description>
          Sets the set of include patterns. Patterns may be separated by a comma
 or a space.
        </description>
        </attribute>
        <attribute name="includesfile" required="no">
          <description>
          Sets the name of the file containing the includes patterns.
        </description>
        </attribute>
        <attribute name="quiet" required="no">
          <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" required="no">
          <description>
          If true, list all names of deleted files.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Adds a set of files to be deleted.
        </description>
        </element>
        <element name="exclude" required="NOTDEFINED">
          <description>
          add a name entry on the exclude list
        </description>
        </element>
        <element name="excludesfile" required="NOTDEFINED">
        
          <description>
          add a name entry on the include files list
        </description>
        </element>
        <element name="include" required="NOTDEFINED">
          <description>
          add a name entry on the include list
        </description>
        </element>
        <element name="includesfile" required="NOTDEFINED">
          <description>
          add a name entry on the include files list
        </description>
        </element>
        <element name="patternset" required="NOTDEFINED">
          <description>
          add a set of patterns
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="deltree">
    <description>
  </description>
    <structure>
      <attributes>
        <attribute name="dir" required="yes">
          <description>
          Set the directory to be deleted
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="depend">
    <description>
    Generates a dependency file for a given set of classes.
  </description>
    <structure>
      <attributes>
        <attribute name="cache" required="no">
          <description>
          Sets the dependency cache file.
        </description>
        </attribute>
        <attribute name="classpath" required="no">
          <description>
          Set the classpath to be used for this dependency check.
        </description>
        </attribute>
        <attribute name="classpathref" required="NOTDEFINED">
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
        </attribute>
        <attribute name="closure" required="no">
          <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" required="no">
          <description>
          Set the destination directory where the compiled Java files exist.
        </description>
        </attribute>
        <attribute name="dump" required="no">
          <description>
          If true, the dependency information will be written
 to the debug level log.
        </description>
        </attribute>
        <attribute name="srcdir" required="yes">
          <description>
          Set the directories path to find the Java source files.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Adds a classpath to be used for this dependency check.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="dependset">
    <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).
  </description>
    <structure>
      <attributes>
    </attributes>
      <elements>
        <element name="srcfilelist" required="NOTDEFINED">
          <description>
          Add a list of source files.
        </description>
        </element>
        <element name="srcfileset" required="NOTDEFINED">
          <description>
          Add a set of source files.
        </description>
        </element>
        <element name="targetfilelist" required="NOTDEFINED">
          <description>
          Add a list of target files.
        </description>
        </element>
        <element name="targetfileset" required="NOTDEFINED">
          <description>
          Add a set of target files.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="dirname">
    <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" required="yes">
          <description>
          Path to take the dirname of.
        </description>
        </attribute>
        <attribute name="property" required="yes">
          <description>
          The name of the property to set.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="ear">
    <description>
    Creates a EAR archive. Based on WAR task
  </description>
    <structure>
      <attributes>
        <attribute name="appxml" required="yes, unless update is set to true">
          <description>
          File to incorporate as application.xml.
        </description>
        </attribute>
        <attribute name="basedir" required="no">
          <description>
          Directory from which to archive files.
        </description>
        </attribute>
        <attribute name="compress" required="no">
          <description>
          Whether we want to compress the files or only store them; default=true;
        </description>
        </attribute>
        <attribute name="destfile" required="yes">
          <description>
          The file to create.
        </description>
        </attribute>
        <attribute name="duplicate" required="no">
          <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" required="no">
          <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" required="no">
          <description>
          If true, emulate Sun's jar utility by not adding parent directories; defaults to false.
        </description>
        </attribute>
        <attribute name="index" required="NOTDEFINED">
          <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" required="no">
          <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" required="no">
          <description>
          If true, updates an existing file, otherwise overwrite
 any existing one; defaults to false.
        </description>
        </attribute>
        <attribute name="whenempty" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Adds zipfileset.
        </description>
        </element>
        <element name="manifest" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Adds a set of files.
        </description>
        </element>
        <element name="metainf" required="NOTDEFINED">
          <description>
          Adds a zipfileset to include in the META-INF directory.
        </description>
        </element>
        <element name="zipgroupfileset" required="NOTDEFINED">
          <description>
          Adds a group of zip files.
        </description>
        </element>
        <element name="zipfileset" required="NOTDEFINED">
          <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">
    <description>
    Writes a message to the Ant logging facilities.
  </description>
    <structure>
      <attributes>
        <attribute name="append" required="no - default is false.">
          <description>
          If true, append to existing file.
        </description>
        </attribute>
        <attribute name="file" required="no">
	    <description>
          File to write to.
        </description>
        </attribute>
        <attribute name="level" required="no - default is &quot;warning&quot;.">
          <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" required="yes, unless data is included in a        character section within this element.">
          <description>
          Message to write.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
      <body>
        <description>
          Set a multiline message.
        </description>
      </body>
    </structure>
  </task>
  <task name="echoproperties">
    <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" required="no">
          <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" required="no">
          <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" required="no">
          <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">
    <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" required="NOTDEFINED">
          <description>
          Set the classpath to be used for this compilation.
        </description>
        </attribute>
        <attribute name="descriptors" required="NOTDEFINED">
          <description>
          Set the directory from where the serialized deployment descriptors are to be read.
        </description>
        </attribute>
        <attribute name="dest" required="NOTDEFINED">
          <description>
          Set the directory into which the support classes, RMI stubs, etc are to be written.
        </description>
        </attribute>
        <attribute name="keepgenerated" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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">
    <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" required="NOTDEFINED">
                <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" required="NOTDEFINED">
 
          <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" required="NOTDEFINED">
          <description>
          Set the classpath to use when resolving classes for inclusion in the jar.
        </description>
        </attribute>
        <attribute name="dependency" required="NOTDEFINED">
          <description>
          Set the analyzer to use when adding in dependencies to the JAR.
        </description>
        </attribute>
        <attribute name="descriptordir" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the naming scheme used to determine the name of the generated jars
 from the deployment descriptor
        </description>
        </attribute>
        <attribute name="srcdir" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Adds a deployment tool for Borland server.
        </description>
        </element>
        <element name="classpath" required="NOTDEFINED">
         <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Adds a deployment tool for iPlanet Application Server.
        </description>
        </element>
        <element name="jboss" required="NOTDEFINED">
        <description>
          Adds a deployment tool for JBoss server.
        </description>
        </element>
        <element name="jonas" required="NOTDEFINED">
          <description>
          Adds a deployment tool for JOnAS server.
        </description>
        </element>
        <element name="support" required="NOTDEFINED">
        <description>
          Adds a fileset for support elements.
        </description>
        </element>
        <element name="weblogic" required="NOTDEFINED">
        <description>
          Adds a deployment tool for Weblogic server.
        </description>
        </element>
        <element name="weblogictoplink" required="NOTDEFINED">
        <description>
          Adds a deployment tool for Weblogic when using the Toplink
 Object-Relational mapping.
        </description>
        </element>
        <element name="websphere" required="NOTDEFINED">
          <description>
          Adds a deployment tool for Websphere 4.0 server.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="exec">
	<description>
    Executes a given command if the os platform is appropriate.
  </description>
    <structure>
      <attributes>
        <attribute name="append" required="no">
        <description>
          Whether output should be appended to or overwrite an existing file.
 Defaults to false.
        </description>
        </attribute>
        <attribute name="dir" required="no">
          <description>
          The working directory of the process.
        </description>
        </attribute>
        <attribute name="executable" required="">
          <description>
          The command to execute.
        </description>
        </attribute>
        <attribute name="failifexecutionfails" required="no">
          <description>
          Stop the build if program cannot be started. Defaults to true.
        </description>
        </attribute>
        <attribute name="failonerror" required="no">
          <description>
          Fail if the command exits with a non-zero return code.
        </description>
        </attribute>
        <attribute name="newenvironment" required="no, default is false">
          <description>
          Do not propagate old environment when new environment variables are specified.
        </description>
        </attribute>
        <attribute name="os" required="no">
          <description>
          List of operating systems on which the command may be executed.
        </description>
        </attribute>
        <attribute name="output" required="no">
          <description>
          File the output of the process is redirected to.
        </description>
        </attribute>
        <attribute name="outputproperty" required="no">
         <description>
          Property name whose value should be set to the output of
 the process.
        </description>
        </attribute>
        <attribute name="resultproperty" required="no">
        <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" required="no, default is true">
          <description>
          If true, launch new process with VM, otherwise use the OS's shell.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="env" required="NOTDEFINED">
          <description>
          Add an environment variable to the launched process.
        </description>
        </element>
        <element name="arg" required="NOTDEFINED">
          <description>
          Adds a command-line argument.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="fail">
	<description>
    Exits the active build, giving an additional message
 if available.
  </description>
    <structure>
      <attributes>
        <attribute name="if" required="no">
          <description>
          Only fail if a property of the given name exists in the current project.
        </description>
        </attribute>
        <attribute name="message" required="no">
          <description>
          A message giving further information on why the build exited.
        </description>
        </attribute>
        <attribute name="unless" required="no">
        <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">
    <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" required="yes*">
          <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" required="yes*">
          <description>
          The token string without @ delimiters.
        </description>
        </attribute>
        <attribute name="value" required="yes*">
          <description>
          The string that should replace the token during filtered copies.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="fixcrlf">
    <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.
  </description>
    <structure>
      <attributes>
        <attribute name="destdir" required="no">
        <description>
          Set the destination where the fixed files should be placed.
 Default is to replace the original file.
        </description>
        </attribute>
        <attribute name="encoding" required="no - defaults to default jvm encoding">
        <description>
          Specifies the encoding Ant expects the files to be in -
 defaults to the platforms default encoding.
        </description>
        </attribute>
        <attribute name="eof" required="no">
        <description>
          Specify how DOS EOF (control-z) characters are to be handled.
        </description>
        </attribute>
        <attribute name="eol" required="no">
          <description>
          Specify how EndOfLine characters are to be handled.
        </description>
        </attribute>
        <attribute name="javafiles" required="no">
          <description>
          Set to true if modifying Java source files.
        </description>
        </attribute>
        <attribute name="srcdir" required="yes">
          <description>
          Set the source dir to find the source text files.
        </description>
        </attribute>
        <attribute name="tab" required="no">
          <description>
          Specify how tab characters are to be handled.
        </description>
        </attribute>
        <attribute name="tablength" required="no">
          <description>
          Specify tab length in characters.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="ftp">
    <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" required="no">
          <description>
          Sets the FTP action to be taken. Currently accepts "put", "get", "del",
 "mkdir", "chmod" and "list".
        </description>
        </attribute>
        <attribute name="binary" required="no">
          <description>
          If true, uses binary mode, otherwise text mode (default is binary).
        </description>
        </attribute>
        <attribute name="chmod" required="no">
          <description>
          Sets the file permission mode (Unix only) for files sent to the server.
        </description>
        </attribute>
        <attribute name="depends" required="no">
        <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" required="no">
        <description>
          Aet the flag to skip errors on directory creation.
 (and maybe later other server specific errors)
        </description>
        </attribute>
        <attribute name="listing" required="no">
          <description>
          The output file for the "list" action. This attribute is ignored for
 any other actions.
        </description>
        </attribute>
        <attribute name="newer" required="no">
          <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" required="no">
          <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" required="yes">
          <description>
          Sets the login password for the given user id.
        </description>
        </attribute>
        <attribute name="port" required="no">
          <description>
          Sets the FTP port used by the remote server.
        </description>
        </attribute>
        <attribute name="remotedir" required="no">
          <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" required="no">
          <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" required="yes">
          <description>
          Sets the FTP server to send files to.
        </description>
        </attribute>
        <attribute name="skipfailedtransfers" required="no">
       <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" required="no">
          <description>
          Sets the default mask for file creation on a unix server.
        </description>
        </attribute>
        <attribute name="userid" required="yes">
          <description>
          Sets the login user id to use on the specified server.
        </description>
        </attribute>
        <attribute name="verbose" required="no">
       <description>
          Set to true to receive notification about each file as it is
 transferred.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          A set of files to upload or download
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="genkey">
    <description>
    Generates a key in a keystore.
  </description>
    <structure>
      <attributes>
        <attribute name="alias" required="yes.">
          <description>
          The alias to add under.
        </description>
        </attribute>
        <attribute name="dname" required="yes if dname element unspecified">
          <description>
          The distinguished name for entity.
        </description>
        </attribute>
        <attribute name="keyalg" required="no">
          <description>
          The method to use when generating name-value pair.
        </description>
        </attribute>
        <attribute name="keypass" required="no">
          <description>
          Password for private key (if different).
        </description>
        </attribute>
        <attribute name="keysize" required="no">
          <description>
          Indicates the size of key generated.
        </description>
        </attribute>
        <attribute name="keystore" required="no">
          <description>
          Keystore location.
        </description>
        </attribute>
        <attribute name="sigalg" required="no">
          <description>
          The algorithm to use in signing.
        </description>
        </attribute>
        <attribute name="storepass" required="yes.">
          <description>
          Password for keystore integrity.
 Must be at least 6 characters long.
        </description>
        </attribute>
        <attribute name="storetype" required="no">
          <description>
          Keystore type.
        </description>
        </attribute>
        <attribute name="validity" required="no">
          <description>
          Indicates how many days certificate is valid.
        </description>
        </attribute>
        <attribute name="verbose" required="no">
          <description>
          If true, verbose output when signing.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="dname" required="NOTDEFINED">
          <description>
          Distinguished name list.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="get">
    <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" required="yes">
          <description>
          Where to copy the source file.
        </description>
        </attribute>
        <attribute name="ignoreerrors" required="no; default &quot;false&quot;">
          <description>
          If true, log errors but do not treat as fatal.
        </description>
        </attribute>
        <attribute name="password" required="if username is set">
          <description>
          password for the basic authentication.
        </description>
        </attribute>
        <attribute name="src" required="yes">
          <description>
          Set the URL to get.
        </description>
        </attribute>
        <attribute name="usetimestamp" required="no; default &quot;false&quot;">
         <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" required="if password is set">
          <description>
          Username for basic auth.
        </description>
        </attribute>
        <attribute name="verbose" required="no; default &quot;false&quot;">
          <description>
          If true, show verbose progress information.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="gunzip">
    <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" required="no">
          <description>
          The destination file or directory.
        </description>
        </attribute>
        <attribute name="src" required="yes">
          <description>
          The file to expand.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="gzip">
    <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" required="NOTDEFINED">
        
          <description>
          the file to compress; required.
        </description>
        </attribute>
        <attribute name="zipfile" required="NOTDEFINED">
          <description>
          the required destination file.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="icontract">
    <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" required="no">
          <description>
          Sets the build directory for instrumented classes.
        </description>
        </attribute>
        <attribute name="classdir" required="only if updateicontrol=true">
          <description>
          Sets the class directory (uninstrumented classes).
        </description>
        </attribute>
        <attribute name="classpath" required="NOTDEFINED">
          <description>
          Sets the classpath to be used for invocation of iContract.
        </description>
        </attribute>
        <attribute name="classpathref" required="NOTDEFINED">
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
        </attribute>
        <attribute name="controlfile" required="only if updateicontrol=true">
          <description>
          Sets the control file to pass to iContract.
        </description>
        </attribute>
        <attribute name="failthrowable" required="no">
          <description>
          Sets the Throwable (Exception) to be thrown on assertion violation.
        </description>
        </attribute>
        <attribute name="instrumentdir" required="yes">
          <description>
          Sets the instrumentation directory.
        </description>
        </attribute>
        <attribute name="invariant" required="no">
          <description>
          Turns on/off invariant instrumentation.
        </description>
        </attribute>
      
        <attribute name="post" required="no">
          <description>
          Turns on/off postcondition instrumentation.
        </description>
        </attribute>
        <attribute name="pre" required="no">
          <description>
          Turns on/off precondition instrumentation.
        </description>
        </attribute>
        <attribute name="quiet" required="no">
          <description>
          Tells iContract to be quiet.
        </description>
        </attribute>
        <attribute name="repbuilddir" required="NOTDEFINED">
          <description>
          Sets the build directory for instrumented classes.
        </description>
        </attribute>
        <attribute name="repositorydir" required="yes">
          <description>
          Sets the build directory for repository classes.
        </description>
        </attribute>
        <attribute name="srcdir" required="yes">
          <description>
          Sets the source directory.
        </description>
        </attribute>
        <attribute name="targets" required="no">
          <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" required="no">
          <description>
          If true, updates iControl properties file
        </description>
        </attribute>
        <attribute name="verbosity" required="no">
          <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" required="NOTDEFINED">
          <description>
          Sets the classpath.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="ilasm">
    <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" required="NOTDEFINED">
          <description>
          set the debug flag on or off.
        </description>
        </attribute>
        <attribute name="extraoptions" required="NOTDEFINED">
        <description>
          Any extra options which are not explicitly supported by this task.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <description>
          If true, fails if ilasm tool fails.
        </description>
        </attribute>
        <attribute name="keyfile" required="NOTDEFINED">
          <description>
          the name of a file containing a private key.
        </description>
        </attribute>
        <attribute name="listing" required="NOTDEFINED">
          <description>
          If true, produce a listing (off by default).
        </description>
        </attribute>
        <attribute name="outputfile" required="NOTDEFINED">
          <description>
          Set the output file.
        </description>
        </attribute>
        <attribute name="resourcefile" required="NOTDEFINED">
          <description>
          name of resource file to include.
        </description>
        </attribute>
        <attribute name="srcdir" required="NOTDEFINED">
          <description>
          Set the source directory containing the files to be compiled.
        </description>
        </attribute>
        <attribute name="targettype" required="NOTDEFINED">
          <description>
          Sets the type of target, either "exe" or "library".
        </description>
        </attribute>
        <attribute name="verbose" required="NOTDEFINED">
          <description>
          If true, enable verbose ILASM output.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="input">
  
    <description>
    Reads an input line from the console.
  </description>
    <structure>
      <attributes>
        <attribute name="addproperty" required="no">
          <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" required="no">
          <description>
          Sets the Message which gets displayed to the user during the build run.
        </description>
        </attribute>
        <attribute name="validargs" required="no">
          <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">
    <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.
  </description>
    <structure>
      <attributes>
        <attribute name="classpath" required="NOTDEFINED">
          <description>
          Sets the classpath to be used when compiling the EJB stubs and skeletons.
        </description>
        </attribute>
        <attribute name="debug" required="NOTDEFINED">
        <description>
          If true, debugging output will be generated when ejbc is executed.
        </description>
        </attribute>
        <attribute name="dest" required="NOTDEFINED">
        <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" required="NOTDEFINED">
        <description>
          Sets the location of the standard XML EJB descriptor.  Typically, this
 file is named "ejb-jar.xml".
        </description>
        </attribute>
        <attribute name="iasdescriptor" required="NOTDEFINED">
        <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          If true, the Java source files which are generated by ejbc will be saved .
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="classpath" required="NOTDEFINED">
        
          <description>
          Adds to the classpath used when compiling the EJB stubs and skeletons.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="jar">
    <description>
    Creates a JAR archive.
  </description>
    <structure>
      <attributes>
        <attribute name="basedir" required="no">
          <description>
          Directory from which to archive files.
        </description>
        </attribute>
        <attribute name="compress" required="no">
        <description>
          Whether we want to compress the files or only store them; default=true;
        </description>
        </attribute>
        <attribute name="destfile" required="yes">
          <description>
          The file to create; required.
        </description>
      
        </attribute>
        <attribute name="duplicate" required="no">
        <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" required="no">
        <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" required="no">
        <description>
          If true, emulate Sun's jar utility by not adding parent directories; defaults to false.
        </description>
        </attribute>
        <attribute name="index" required="no">
          <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" required="no">
          <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" required="no">
          <description>
          If true, updates an existing file, otherwise overwrite
 any existing one; defaults to false.
        </description>
        </attribute>
        <attribute name="whenempty" required="no">
        <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
        <description>
          Adds a set of files.
        </description>
        </element>
        <element name="metainf" required="NOTDEFINED">
        <description>
          Adds a zipfileset to include in the META-INF directory.
        </description>
        </element>
        <element name="zipgroupfileset" required="NOTDEFINED">
          <description>
          Adds a group of zip files.
        </description>
        </element>
        <element name="zipfileset" required="NOTDEFINED">
          <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">
  <description>
    Checks whether an extension is present in a fileset or an extensionSet.
  </description>
    <structure>
      <attributes>
        <attribute name="file" required="no, one of file, nested      extensionset or nested fileset must be present.">
          <description>
          The JAR library to check.
        </description>
        </attribute>
        <attribute name="property" required="yes">
          <description>
          The name of property to set if extensions are available.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="extension" required="NOTDEFINED">
          <description>
          Set the Extension looking for.
        </description>
        </element>
        <element name="extensionset" required="NOTDEFINED">
          <description>
          Adds a set of extensions to search in.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="jarlib-display">
    <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" required="no, but one of file or fileset must be      present.">
          <description>
          The JAR library to display information for.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Adds a set of files about which library data will be displayed.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="jarlib-manifest">
    <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" required="yes.">
          <description>
          The location where generated manifest is placed.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="attribute" required="NOTDEFINED">
          <description>
          Adds an attribute that is to be put in main section of manifest.
        </description>
        </element>
        <element name="depends" required="NOTDEFINED">
          <description>
          Adds a set of extensions that this library requires.
        </description>
        </element>
        <element name="extension" required="NOTDEFINED">
          <description>
          Adds an extension that this library implements.
        </description>
        </element>
        <element name="options" required="NOTDEFINED">
          <description>
          Adds a set of extensions that this library optionally requires.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="jarlib-resolve">
    <description>
    Tries to locate a JAR to satisfy an extension and place
 location of JAR into property.
  </description>
    <structure>
      <attributes>
        <attribute name="checkextension" required="no, defaults to true.">
          <description>
          If true, libraries returned by nested resolvers should be
 checked to see if they supply extension.
        </description>
        </attribute>
        <attribute name="failonerror" required="no, defaults to true.">
        <description>
          If true, failure to locate library should fail build.
        </description>
        </attribute>
        <attribute name="property" required="yes">
          <description>
          The name of the property in which the location of library is stored.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="ant" required="NOTDEFINED">
          <description>
          Adds Ant resolver to run an Ant buildfile to generate a library.
        </description>
        </element>
        <element name="extension" required="NOTDEFINED">
          <description>
          Set the Extension looking for.
        </description>
        </element>
        <element name="location" required="NOTDEFINED">
          <description>
          Adds location resolver to look for a library in a location
 relative to project directory.
        </description>
        </element>
        <element name="url" required="NOTDEFINED">
          <description>
          Adds a URL resolver to download a library from a URL to a local file.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="java">
    <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" required="no">
          <description>
          If true, append output to existing file.
        </description>
        </attribute>
        <attribute name="classname" required="either jar or classname">
          <description>
          Sets the Java class to execute.
        </description>
        </attribute>
        <attribute name="classpath" required="no">
          <description>
          Set the classpath to be used when running the Java class
        </description>
        </attribute>
        <attribute name="classpathref" required="no">
          <description>
          Classpath to use, by reference.
        </description>
        </attribute>
        <attribute name="dir" required="no">
          <description>
          The working directory of the process
        </description>
        </attribute>
        <attribute name="failonerror" required="no">
          <description>
          If true, then fail if the command exits with a returncode other than 0
        </description>
        </attribute>
        <attribute name="fork" required="no">
          <description>
          If true, execute in a new VM.
        </description>
        </attribute>
        <attribute name="jvmversion" required="NOTDEFINED">
          <description>
          Sets the JVM version.
        </description>
        </attribute>
        <attribute name="jar" required="either jar or classname">
          <description>
          The location of the JAR file to execute.
        </description>
        </attribute>
        <attribute name="jvm" required="no">
          <description>
          Set the command used to start the VM (only if not forking).
        </description>
        </attribute>
        <attribute name="jvmargs" required="no">
          <description>
          Set the command line arguments for the JVM.
        </description>
        </attribute>
        <attribute name="maxmemory" required="no">
          <description>
          Corresponds to -mx or -Xmx depending on VM version.
        </description>
        </attribute>
        <attribute name="newenvironment" required="no">
          <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" required="no">
          <description>
          File the output of the process is redirected to.
        </description>
        </attribute>
        <attribute name="timeout" required="no">
          <description>
          Timeout in milliseconds after which the process will be killed.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="env" required="NOTDEFINED">
          <description>
          Adds an environment variable.
 &lt;p&gt;Will be ignored if we are not forking a new VM.
        </description>
        </element>
        <element name="sysproperty" required="NOTDEFINED">
          <description>
          Adds a system property.
        </description>
        </element>
        <element name="arg" required="NOTDEFINED">
          <description>
          Adds a command-line argument.
        </description>
        </element>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Adds a path to the classpath.
        </description>
        </element>
        <element name="jvmarg" required="NOTDEFINED">
          <description>
          Adds a JVM argument.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="javac">
    <description>
    Compiles Java source files. This task can take the following
 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" required="no">
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
        </attribute>
        <attribute name="bootclasspath" required="no">
        <description>
          Sets the bootclasspath that will be used to compile the classes
 against.
        </description>
        </attribute>
        <attribute name="classpath" required="no">
          <description>
          Set the classpath to be used for this compilation.
        </description>
        </attribute>
        <attribute name="classpathref" required="no">
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
        </attribute>
        <attribute name="compiler" required="no">
          <description>
          Choose the implementation for this particular task.
        </description>
        </attribute>
        <attribute name="debug" required="no">
        <description>
          Indicates whether source should be compiled
 with debug information; defaults to off.
        </description>
        </attribute>
        <attribute name="debuglevel" required="no">
          <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" required="no">
        <description>
          Enables dependency-tracking for compilers
 that support this (jikes and classic).
        </description>
        </attribute>
        <attribute name="deprecation" required="no">
        <description>
          Indicates whether source should be
 compiled with deprecation information; defaults to off.
        </description>
        </attribute>
        <attribute name="destdir" required="no">
        <description>
          Set the destination directory into which the Java source
 files should be compiled.
        </description>
        </attribute>
        <attribute name="encoding" required="no">
          <description>
          Set the Java source file encoding name.
        </description>
        </attribute>
        <attribute name="executable" required="no">
          <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" required="no">
        <description>
          Sets the extension directories that will be used during the
 compilation.
        </description>
        </attribute>
        <attribute name="failonerror" required="no">
        <description>
          Indicates whether the build will continue even if there are compilation errors; defaults to true.
        </description>
        </attribute>
        <attribute name="fork" required="no">
          <description>
          If true, forks the javac compiler.
        </description>
        </attribute>
        <attribute name="includeantruntime" required="no">
          <description>
          If true, includes Ant's own classpath in the classpath.
        </description>
        </attribute>
        <attribute name="includejavaruntime" required="no">
          <description>
          If true, includes the Java runtime libraries in the classpath.
        </description>
        </attribute>
        <attribute name="listfiles" required="no">
          <description>
          If true, list the source files being handed off to the compiler.
        </description>
        </attribute>
        <attribute name="memoryinitialsize" required="no">
        <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" required="no">
        <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" required="no">
          <description>
          If true, enables the -nowarn option.
        </description>
        </attribute>
        <attribute name="optimize" required="no">
          <description>
          If true, compiles with optimization enabled.
        </description>
        </attribute>
        <attribute name="source" required="no">
        <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" required="no">
          <description>
          Set the sourcepath to be used for this compilation.
        </description>
        </attribute>
        <attribute name="sourcepathref" required="no">
          <description>
          Adds a reference to a source path defined elsewhere.
        </description>
        </attribute>
        <attribute name="srcdir" required="yes, unless nested &lt;src&gt; elements are present.">
          <description>
          Set the source directories to find the source Java files.
        </description>
        </attribute>
        <attribute name="target" required="no">
          <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" required="no">
        
          <description>
          If true, asks the compiler for verbose output.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="bootclasspath" required="NOTDEFINED">
          <description>
          Adds a path to the bootclasspath.
        </description>
        </element>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Adds a path to the classpath.
        </description>
        </element>
        <element name="compilerarg" required="NOTDEFINED">
          <description>
          Adds an implementation specific command-line argument.
        </description>
        </element>
        <element name="extdirs" required="NOTDEFINED">
          <description>
          Adds a path to extdirs.
        </description>
        </element>
        <element name="sourcepath" required="NOTDEFINED">
          <description>
          Adds a path to sourcepath.
        </description>
        </element>
        <element name="src" required="NOTDEFINED">
          <description>
          Adds a path for source compilation.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="javacc">
    <description>
    JavaCC compiler compiler task.
  </description>
    <structure>
      <attributes>
        <attribute name="buildparser" required="no">
          <description>
          Sets the BUILD_PARSER grammar option.
        </description>
        </attribute>
        <attribute name="buildtokenmanager" required="no">
          <description>
          Sets the BUILD_TOKEN_MANAGER grammar option.
        </description>
        </attribute>
        <attribute name="cachetokens" required="no">
          <description>
          Sets the CACHE_TOKENS grammar option.
        </description>
        </attribute>
        <attribute name="choiceambiguitycheck" required="no">
          <description>
          Sets the CHOICE_AMBIGUITY_CHECK grammar option.
        </description>
        </attribute>
        <attribute name="commontokenaction" required="no">
          <description>
          Sets the COMMON_TOKEN_ACTION grammar option.
        </description>
        </attribute>
        <attribute name="debuglookahead" required="no">
          <description>
          Sets the DEBUG_LOOKAHEAD grammar option.
        </description>
        </attribute>
        <attribute name="debugparser" required="no">
          <description>
          Sets the DEBUG_PARSER grammar option.
        </description>
        </attribute>
        <attribute name="debugtokenmanager" required="no">
          <description>
          Sets the DEBUG_TOKEN_MANAGER grammar option.
        </description>
        </attribute>
        <attribute name="errorreporting" required="no">
          <description>
          Sets the ERROR_REPORTING grammar option.
        </description>
        </attribute>
        <attribute name="forcelacheck" required="no">
          <description>
          Sets the FORCE_LA_CHECK grammar option.
        </description>
        </attribute>
        <attribute name="ignorecase" required="no">
          <description>
          Sets the IGNORE_CASE grammar option.
        </description>
        </attribute>
        <attribute name="javacchome" required="yes">
          <description>
          The directory containing the JavaCC distribution.
        </description>
        </attribute>
        <attribute name="javaunicodeescape" required="no">
          <description>
          Sets the JAVA_UNICODE_ESCAPE grammar option.
        </description>
        </attribute>
        <attribute name="lookahead" required="no">
          <description>
          Sets the LOOKAHEAD grammar option.
        </description>
        </attribute>
        <attribute name="optimizetokenmanager" required="no">
          <description>
          Sets the OPTIMIZE_TOKEN_MANAGER grammar option.
        </description>
        </attribute>
        <attribute name="otherambiguitycheck" required="no">
          <description>
          Sets the OTHER_AMBIGUITY_CHECK grammar option.
        </description>
        </attribute>
        <attribute name="outputdirectory" required="no">
          <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" required="no">
          <description>
          Sets the SANITY_CHECK grammar option.
        </description>
        </attribute>
        <attribute name="static" required="no">
          <description>
          Sets the STATIC grammar option.
        </description>
        </attribute>
        <attribute name="target" required="yes">
          <description>
          The grammar file to process.
        </description>
        </attribute>
        <attribute name="unicodeinput" required="no">
          <description>
          Sets the UNICODE_INPUT grammar option.
        </description>
        </attribute>
        <attribute name="usercharstream" required="no">
          <description>
          Sets the USER_CHAR_STREAM grammar option.
        </description>
        </attribute>
        <attribute name="usertokenmanager" required="no">
          <description>
          Sets the USER_TOKEN_MANAGER grammar option.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="javadoc">
    <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" required="no (default protected)">
          <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" required="no">
          <description>
          Set an additional parameter on the command line
        </description>
        </attribute>
        <attribute name="author" required="no">
          <description>
          Include the author tag in the generated documentation.
        </description>
        </attribute>
        <attribute name="bootclasspathref" required="no">
          <description>
          Adds a reference to a CLASSPATH defined elsewhere.
        </description>
        </attribute>
        <attribute name="bootclasspath" required="no">
          <description>
          Set the boot classpath to use.
        </description>
        </attribute>
        <attribute name="bottom" required="no">
          <description>
          Set the text to be placed at the bottom of each output file.
        </description>
        </attribute>
        <attribute name="charset" required="no">
          <description>
          Charset for cross-platform viewing of generated documentation.
        </description>
        </attribute>
        <attribute name="classpath" required="no">
          <description>
          Set the classpath to be used for this javadoc run.
        </description>
        </attribute>
        <attribute name="classpathref" required="no">
          <description>
          Adds a reference to a CLASSPATH defined elsewhere.
        </description>
        </attribute>
        <attribute name="defaultexcludes" required="no">
          <description>
          Sets whether default exclusions should be used or not.
        </description>
        </attribute>
        <attribute name="destdir" required="yes, unless a doclet has been specified.">
          <description>
          Set the directory where the Javadoc output will be generated.
        </description>
        </attribute>
        <attribute name="docencoding" required="no">
          <description>
          Output file encoding name.
        </description>
        </attribute>
        <attribute name="doclet" required="no">
        <description>
          Set the class that starts the doclet used in generating the 
 documentation.
        </description>
        </attribute>
        <attribute name="docletpath" required="no">
          <description>
          Set the classpath used to find the doclet class.
        </description>
        </attribute>
        <attribute name="docletpathref" required="no">
          <description>
          Set the classpath used to find the doclet class by reference.
        </description>
        </attribute>
        <attribute name="doctitle" required="no">
          <description>
          Set the title of the generated overview page.
        </description>
        </attribute>
        <attribute name="encoding" required="no">
          <description>
          Set the encoding name of the source files,
        </description>
        </attribute>
        <attribute name="excludepackagenames" required="no">
          <description>
          Set the list of packages to be excluded.
        </description>
        </attribute>
        <attribute name="extdirs" required="no">
          <description>
          Set the location of the extensions directories.
        </description>
        </attribute>
        <attribute name="failonerror" required="no">
        <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" required="no">
          <description>
          Set the footer text to be placed at the bottom of each output file.
        </description>
        </attribute>
        <attribute name="group" required="no">
          <description>
          Group specified packages together in overview page.
        </description>
        </attribute>
        <attribute name="header" required="no">
          <description>
          Set the header text to be placed at the top of each output file.
        </description>
        </attribute>
        <attribute name="helpfile" required="no">
          <description>
          Specifies the HTML help file to use.
        </description>
        </attribute>
        <attribute name="link" required="no">
          <description>
          Create links to javadoc output at the given URL.
        </description>
        </attribute>
        <attribute name="linkoffline" required="no">
        <description>
          Link to docs at "url" using package list at "url2"
 - separate the URLs by using a space character.
        </description>
        </attribute>
        <attribute name="locale" required="no">
          <description>
          Set the local to use in documentation generation.
        </description>
        </attribute>
        <attribute name="maxmemory" required="no">
          <description>
          Set the maximum memory to be used by the javadoc process
        </description>
        </attribute>
        <attribute name="nodeprecated" required="no">
          <description>
          If true, do not include @deprecated information.
        </description>
        </attribute>
        <attribute name="nodeprecatedlist" required="no">
          <description>
          If true, do not generate deprecated list.
        </description>
        </attribute>
        <attribute name="nohelp" required="no">
          <description>
          If true, do not generate help link
        </description>
        </attribute>
        <attribute name="noindex" required="no">
          <description>
          If true, do not generate index.
        </description>
        </attribute>
        <attribute name="nonavbar" required="no">
          <description>
          If true, do not generate navigation bar.
        </description>
        </attribute>
        <attribute name="notree" required="no">
          <description>
          If true, do not generate class hierarchy.
        </description>
        </attribute>
        <attribute name="old" required="no">
        <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" required="no">
        <description>
          Specify the file containing the overview to be included in the generated
 documentation.
        </description>
        </attribute>
        <attribute name="package" required="no">
        <description>
          Indicate whether only package, protected and public classes and 
 members are to be included in the scope processed
        </description>
        </attribute>
        <attribute name="packagelist" required="no">
          <description>
          The name of a file containing the packages to process.
        </description>
        </attribute>
        <attribute name="packagenames" required="no">
          <description>
          Set the package names to be processed.
        </description>
        </attribute>
        <attribute name="private" required="no">
        <description>
          Indicate whether all classes and  members are to be included in the scope processed
        </description>
        </attribute>
        <attribute name="protected" required="no">
          <description>
          Indicate whether only protected and public classes and members are to be included in the scope processed
        </description>
        </attribute>
        <attribute name="public" required="no">
        <description>
          Indicate whether only public classes and members are to be included in the scope processed
        </description>
        </attribute>
        <attribute name="serialwarn" required="no">
          <description>
          If true, generate warning about @serial tag.
        </description>
        </attribute>
        <attribute name="source" required="no">
        <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" required="">
          <description>
          Set the list of source files to process.
        </description>
        </attribute>
        <attribute name="sourcepath" required="at least one of the three or nested      &lt;sourcepath&gt;, &lt;fileset&gt; or      &lt;packageset&gt;">
          <description>
          Specify where to find source file
        </description>
        </attribute>
        <attribute name="sourcepathref" required="">
          <description>
          Adds a reference to a CLASSPATH defined elsewhere.
        </description>
        </attribute>
        <attribute name="splitindex" required="no">
          <description>
          Generate a split index
        </description>
        </attribute>
        <attribute name="stylesheetfile" required="no">
          <description>
          Specifies the CSS stylesheet file to use.
        </description>
        </attribute>
        <attribute name="use" required="no">
          <description>
          Generate the &amp;quot;use&amp;quot; page for each package.
        </description>
        </attribute>
        <attribute name="useexternalfile" required="no">
        <description>
          Work around command line length limit by using an external file
 for the sourcefiles.
        </description>
        </attribute>
        <attribute name="verbose" required="no">
          <description>
          Run javadoc in verbose mode
        </description>
        </attribute>
        <attribute name="version" required="no">
          <description>
          Include the version tag in the generated documentation.
        </description>
        </attribute>
        <attribute name="windowtitle" required="no">
        <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" required="NOTDEFINED">
          <description>
          Set the text to be placed at the bottom of each output file.
        </description>
        </element>
        <element name="doctitle" required="NOTDEFINED">
          <description>
          Add a document title to use for the overview page.
        </description>
        </element>
        <element name="excludepackage" required="NOTDEFINED">
          <description>
          Add a package to be excluded from the javadoc run.
        </description>
        </element>
        <element name="fileset" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the footer text to be placed at the bottom of each output file.
        </description>
        </element>
        <element name="header" required="NOTDEFINED">
          <description>
          Set the header text to be placed at the top of each output file.
        </description>
        </element>
        <element name="package" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Add a single source file.
        </description>
        </element>
        <element name="taglet" required="NOTDEFINED">
          <description>
          Add a taglet
        </description>
        </element>
        <element name="bootclasspath" required="NOTDEFINED">
          <description>
          Create a Path to be configured with the boot classpath
        </description>
        </element>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Create a Path to be configured with the classpath to use
        </description>
        </element>
        <element name="doclet" required="NOTDEFINED">
          <description>
          Create a doclet to be used in the documentation generation.
        </description>
        </element>
        <element name="group" required="NOTDEFINED">
        <description>
          Separates packages on the overview page into whatever
 groups you specify, one group per table.
        </description>
        </element>
        <element name="link" required="NOTDEFINED">
          <description>
          Create link to javadoc output at the given URL.
        </description>
        </element>
        <element name="sourcepath" required="NOTDEFINED">
          <description>
          Create a path to be configured with the locations of the source files.
        </description>
        </element>
        <element name="tag" required="NOTDEFINED">
          <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">
    <description>
  Generates JNI headers from a Java class.
When this task executes, it will generate the C header and source files that are needed to implement native methods. JNI operates differently depending on whether JDK1.2 (or later) or pre-JDK1.2 systems are used.
  </description>
  
    <structure>
      <attributes>
        <attribute name="bootclasspathref" required="NOTDEFINED">
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
        </attribute>
        <attribute name="bootclasspath" required="no">
          <description>
          location of bootstrap class files.
        </description>
        </attribute>
        <attribute name="class" required="yes">
          <description>
          the fully-qualified name of the class (or classes, separated by commas).
        </description>
        </attribute>
        <attribute name="classpath" required="no">
          <description>
          the classpath to use.
        </description>
        </attribute>
        <attribute name="classpathref" required="NOTDEFINED">
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
        </attribute>
        <attribute name="destdir" required="">
        
          <description>
          Set the destination directory into which the Java source
 files should be compiled.
        </description>
        </attribute>
        <attribute name="force" required="no">
          <description>
          If true, output files should always be written (JDK1.2 only).
        </description>
        </attribute>
        <attribute name="old" required="no">
          <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" required="yes">
          <description>
          Concatenates the resulting header or source files for all
 the classes listed into this file.
        </description>
        </attribute>
        <attribute name="stubs" required="no">
          <description>
          If true, generate C declarations from the Java object file (used with old).
        </description>
        </attribute>
        <attribute name="verbose" required="no">
          <description>
          If true, causes Javah to print a message concerning
 the status of the generated files.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="bootclasspath" required="NOTDEFINED">
          <description>
          Adds path to bootstrap class files.
        </description>
        </element>
        <element name="class" required="NOTDEFINED">
          <description>
          Adds class to process.
        </description>
        </element>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Path to use for classpath.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="jdepend">
    <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" required="NOTDEFINED">
          <description>
          Set the classpath to be used for this compilation.
        </description>
        </attribute>
        <attribute name="classpathref" required="no">
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
        </attribute>
        <attribute name="dir" required="no">
          <description>
          The directory to invoke the VM in. Ignored if no JVM is forked.
        </description>
        </attribute>
        <attribute name="fork" required="no, default is &quot;off&quot;">
          <description>
          If true, forks into a new JVM. Default: false.
        </description>
        </attribute>
        <attribute name="format" required="no">
          <description>
          The format to write the output in, "xml" or "text".
        </description>
        </attribute>
        <attribute name="haltonerror" required="no, default is &quot;off&quot;">
          <description>
          Whether or not to halt on failure. Default: false.
        </description>
        </attribute>
        <attribute name="jvm" required="no, default &quot;java&quot;">
          <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" required="no">
          <description>
          The output file name.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Adds a path to the classpath.
        </description>
        </element>
        <element name="sourcespath" required="NOTDEFINED">
          <description>
          Adds a path to source code to analyze.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="jjtree">
    <description>
    Runs the JJTree compiler compiler.
  </description>
    <structure>
      <attributes>
        <attribute name="buildnodefiles" required="no">
          <description>
          Sets the BUILD_NODE_FILES grammar option.
        </description>
        </attribute>
        <attribute name="javacchome" required="yes">
          <description>
          The directory containing the JavaCC distribution.
        </description>
        </attribute>
        <attribute name="multi" required="no">
          <description>
          Sets the MULTI grammar option.
        </description>
        </attribute>
        <attribute name="nodedefaultvoid" required="no">
          <description>
          Sets the NODE_DEFAULT_VOID grammar option.
        </description>
        </attribute>
        <attribute name="nodefactory" required="no">
          <description>
          Sets the NODE_FACTORY grammar option.
        </description>
        </attribute>
        <attribute name="nodepackage" required="no">
          <description>
          Sets the NODE_PACKAGE grammar option.
        </description>
        </attribute>
        <attribute name="nodeprefix" required="no">
          <description>
          Sets the NODE_PREFIX grammar option.
        </description>
        </attribute>
        <attribute name="nodescopehook" required="no">
          <description>
          Sets the NODE_SCOPE_HOOK grammar option.
        </description>
        </attribute>
        <attribute name="nodeusesparser" required="no">
          <description>
          Sets the NODE_USES_PARSER grammar option.
        </description>
        </attribute>
        <attribute name="outputdirectory" required="no">
          <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" required="no">
          <description>
          Sets the STATIC grammar option.
        </description>
        </attribute>
        <attribute name="target" required="yes">
          <description>
          The jjtree grammar file to process.
        </description>
        </attribute>
        <attribute name="visitor" required="no">
          <description>
          Sets the VISITOR grammar option.
        </description>
        </attribute>
        <attribute name="visitorexception" required="no">
          <description>
          Sets the VISITOR_EXCEPTION grammar option.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="jpcoverage">
    <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" required="NOTDEFINED">
          <description>
          If true, run an applet.
        </description>
        </attribute>
        <attribute name="classname" required="NOTDEFINED">
          <description>
          classname to run as standalone or runner for filesets.
        </description>
        </attribute>
        <attribute name="exitprompt" required="NOTDEFINED">
          <description>
          Toggles display of the console prompt: always, error, never
        </description>
        </attribute>
        <attribute name="finalsnapshot" required="NOTDEFINED">
          <description>
          Type of snapshot to send at program termination: none, coverage, all.
 Can be null, default to none
        </description>
        </attribute>
        <attribute name="home" required="NOTDEFINED">
          <description>
          The directory where JProbe is installed.
        </description>
        </attribute>
        <attribute name="javaexe" required="NOTDEFINED">
          <description>
          Path to the java executable.
        </description>
        </attribute>
        <attribute name="recordfromstart" required="NOTDEFINED">
          <description>
          "all", "coverage",  or "none".
        </description>
        </attribute>
        <attribute name="seedname" required="NOTDEFINED">
          <description>
          Seed name for the temporary snapshot files (files will be named seed.jpc, seed1.jpc, seed2.jpc, ...). Defaults to &quot;snapshot&quot;.
        </description>
        </attribute>
        <attribute name="snapshotdir" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          If true, track native methods.
        </description>
        </attribute>
        <attribute name="vm" required="NOTDEFINED">
          <description>
          Indicates which virtual machine to run: "jdk117", "jdk118" or "java2".
 Can be null, default to "java2".
        </description>
        </attribute>
        <attribute name="warnlevel" required="NOTDEFINED">
          <description>
          Set warning level (0-3, where 0 is the least amount of warnings).
        </description>
        </attribute>
        <attribute name="workingdir" required="NOTDEFINED">
          <description>
          The physical path to the working directory for the VM.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          the classnames to execute.
        </description>
        </element>
        <element name="arg" required="NOTDEFINED">
          <description>
          Adds a command argument.
        </description>
        </element>
        <element name="classpath" required="NOTDEFINED">
          <description>
          classpath to run the files.
        </description>
        </element>
        <element name="filters" required="NOTDEFINED">
          <description>
          Defines class/method filters based on pattern matching.
 The syntax for filters is similar to a fileset.
        </description>
        </element>
        <element name="jvmarg" required="NOTDEFINED">
          <description>
          Adds a JVM argument.
        </description>
        </element>
        <element name="socket" required="NOTDEFINED">
        <description>
          Define a host and port to connect to if you want to do
 remote viewing.
        </description>
        </element>
        <element name="triggers" required="NOTDEFINED">
        <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">
    <description>
    Runs the snapshot merge utility for JProbe Coverage.
  </description>
    <structure>
      <attributes>
        <attribute name="home" required="NOTDEFINED">
          <description>
          The directory where JProbe is installed.
        </description>
        </attribute>
        <attribute name="tofile" required="NOTDEFINED">
          <description>
          Set the output snapshot file.
        </description>
        </attribute>
        <attribute name="verbose" required="NOTDEFINED">
          <description>
          If true, perform the merge in verbose mode giving details
 about the snapshot processing.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          add a fileset containing the snapshots to include.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="jpcovreport">
    <description>
    Runs the JProbe Coverage 3.0 snapshot merge utility.
  </description>
    <structure>
      <attributes>
        <attribute name="format" required="NOTDEFINED">
          <description>
          set the format of the report: "html", "text", or "xml"
        </description>
        </attribute>
        <attribute name="home" required="NOTDEFINED">
          <description>
          The directory where JProbe is installed.
        </description>
        </attribute>
        <attribute name="includesource" required="NOTDEFINED">
          <description>
          If true, include text of the source code lines.
 Only applies to format="xml" and type="verydetailed"
        </description>
        </attribute>
        <attribute name="percent" required="NOTDEFINED">
          <description>
          A numeric value for the threshold for printing methods.
 Must be between 0 and 100.
        </description>
        </attribute>
        <attribute name="snapshot" required="NOTDEFINED">
          <description>
          The name of the snapshot file that is the source to the report.
        </description>
        </attribute>
        <attribute name="tofile" required="NOTDEFINED">
          <description>
          The name of the generated output file.
        </description>
        </attribute>
        <attribute name="type" required="NOTDEFINED">
        <description>
          The type of report to be generated: "executive", "summary",
 "detailed" or "verydetailed".
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="reference" required="NOTDEFINED">
        <description>
          Adds a set of classes whose coverage information will be checked against.
        </description>
        </element>
        <element name="sourcepath" required="NOTDEFINED">
          <description>
          Adds a path to source files.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="jspc">
    <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" required="no">
          <description>
          Set the classpath to be used for this compilation.
        </description>
        </attribute>
        <attribute name="classpathref" required="no">
          <description>
          Adds a reference to a classpath defined elsewhere
        </description>
        </attribute>
        <attribute name="compiler" required="no">
          <description>
          Class name of a JSP compiler adapter.
        </description>
        </attribute>
        <attribute name="compilerclasspath" required="no">
          <description>
          Set the classpath to be used to find this compiler adapter
        </description>
        </attribute>
        <attribute name="destdir" required="yes">
        <description>
          Set the destination directory into which the JSP source
 files should be compiled.
        </description>
        </attribute>
        <attribute name="failonerror" required="no">
        <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" required="no">
        <description>
          Java Plugin CLASSID for Internet Explorer
        </description>
        </attribute>
        <attribute name="mapped" required="no">
        <description>
          If true, generate separate write() calls for each HTML line
 in the JSP.
        </description>
        </attribute>
        <attribute name="package" required="no">
          <description>
          Set the name of the package the compiled jsp files should be in.
        </description>
        </attribute>
        <attribute name="srcdir" required="yes">
          <description>
          Path for source JSP files.
        </description>
        </attribute>
        <attribute name="uribase" required="no">
          <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" required="no">
        <description>
          The root directory that uri files should be resolved
  against. (Default is the directory jspc is invoked from)
        </description>
        </attribute>
        <attribute name="verbose" required="no">
          <description>
          Set the verbose level of the compiler
        </description>
        </attribute>
        <attribute name="webinc" required="NOTDEFINED">
        <description>
          output filename for the fraction of web.xml that lists
  servlets.
        </description>
        </attribute>
        <attribute name="webxml" required="NOTDEFINED">
          <description>
          Filename for web.xml.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="webapp" required="NOTDEFINED">
          <description>
          Adds a single webapp.
        </description>
        </element>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Adds a path to the classpath.
        </description>
        </element>
        <element name="compilerclasspath" required="NOTDEFINED">
          <description>
          Support nested compiler classpath, used to locate compiler adapter
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="junit">
    <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;
 &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; 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" required="no">
          <description>
          The directory to invoke the VM in. Ignored if no JVM is forked.
        </description>
        </attribute>
        <attribute name="errorproperty" required="no">
          <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" required="no.">
          <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" required="no; default is on.">
        <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" required="no; default is off.">
        <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" required="no; default is off.">
          <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" required="no; default is off.">
        <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" required="no; default is true.">
          <description>
          If true, include ant.jar, optional.jar and junit.jar in the forked VM.
        </description>
        </attribute>
        <attribute name="jvm" required="no; default is java.">
        <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" required="no">
          <description>
          Set the maximum memory to be used by all forked JVMs.
        </description>
        </attribute>
        <attribute name="newenvironment" required="no; default is false.">
          <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" required="no; default is off.">
        <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" required="no">
        <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" required="no">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Add a new formatter to all tests of this task.
        </description>
        </element>
        <element name="sysproperty" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Add a new single testcase.
        </description>
        </element>
        <element name="batchtest" required="NOTDEFINED">
          <description>
          Adds a set of tests based on pattern matching.
        </description>
        </element>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Adds path to classpath used for tests.
        </description>
        </element>
        <element name="jvmarg" required="NOTDEFINED">
          <description>
          Adds a JVM argument; ignored if not forking.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="junitreport">
    <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Add a new fileset containing the XML results to aggregate
        </description>
        </element>
        <element name="report" required="NOTDEFINED">
          <description>
          Generate a report based on the document created by the merge.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="keysubst">
    <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" required="NOTDEFINED">
          <description>
          Set the destination file.
        </description>
      
        </attribute>
        <attribute name="keys" required="NOTDEFINED">
          <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" required="NOTDEFINED">
        <description>
          Sets the seperator between name=value arguments
in setKeys(). By default it is "*".
        </description>
        </attribute>
        <attribute name="src" required="NOTDEFINED">
          <description>
          Set the source file.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="loadfile">
    <description>
    Load a file into a property
  </description>
    <structure>
      <attributes>
        <attribute name="encoding" required="no">
        <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" required="no, default &quot;true&quot;">
          <description>
          If true, fail on load error.
        </description>
        </attribute>
        <attribute name="property" required="yes">
          <description>
          Property name to save to.
        </description>
        </attribute>
        <attribute name="srcfile" required="yes">
          <description>
          Sets the file to load.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="filterchain" required="NOTDEFINED">
          <description>
          Add the FilterChain element.
        </description>
        </element>
      </elements>
  
    </structure>
  </task>
  <task name="loadproperties">
    <description>
    Load a file's contents as Ant properties.
  </description>
    <structure>
      <attributes>
        <attribute name="srcfile" required="yes">
          <description>
          Sets the file to load.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="filterchain" required="NOTDEFINED">
          <description>
          Adds a FilterChain.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="mail">
    <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" required="">
          <description>
          Adds "bcc" address elements
        </description>
        </attribute>
        <attribute name="cclist" required="">
          
          <description>
          Adds "cc" address elements
        </description>
        </attribute>
        <attribute name="encoding" required="no">
          <description>
          Allows the build writer to choose the preferred encoding method
        </description>
        </attribute>
        <attribute name="failonerror" required="no.">
          <description>
          Indicates whether BuildExceptions should be passed back to the core
        </description>
        </attribute>
        <attribute name="files" required="no">
          <description>
          Adds a list of files to be attached
        </description>
        </attribute>
        <attribute name="from" required="either a from attribute, or a &lt;from&gt;      element.">
          <description>
          Shorthand to set the from address element
        </description>
        </attribute>
        <attribute name="includefilenames" required="no">
          <description>
          Sets Includefilenames attribute
        </description>
        </attribute>
        <attribute name="mailhost" required="no">
          <description>
          Sets the host
        </description>
        </attribute>
      
        <attribute name="mailport" required="no">
          <description>
          Sets the mail server port
        </description>
        </attribute>
        <attribute name="message" required="one of these or a      &lt;message&gt; element.">
          <description>
          Shorthand method to set the message
        </description>
        </attribute>
        <attribute name="messagefile" required="">
          <description>
          Shorthand method to set the message from a file
        </description>
        </attribute>
        <attribute name="messagemimetype" required="no">
        <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" required="no">
          <description>
          Sets the subject line of the email
        </description>
        </attribute>
        <attribute name="tolist" required="at least one of these, or the         equivalent elements.">
          <description>
          Adds "to" address elements
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="bcc" required="NOTDEFINED">
          <description>
          Adds "bcc" address elements
        </description>
        </element>
        <element name="cc" required="NOTDEFINED">
          <description>
          Adds "cc" address element
        </description>
        </element>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Adds a set of files (nested fileset attribute).
        </description>
        </element>
        <element name="from" required="NOTDEFINED">
          <description>
          Adds a from address element
        </description>
        </element>
        <element name="message" required="NOTDEFINED">
          <description>
          Add a message elemnt
        </description>
        </element>
        <element name="to" required="NOTDEFINED">
          <description>
          Adds a to address element
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="manifest">
    <description>
   Creates a manifest file.
This task can be used to write a Manifest file, optionally replacing or updating an existing file.
Manifests are processed according to the Jar file specification.. Specifically, a manifest element consists of a set of attributes and sections. These sections in turn may contain attributes. Note in particular that this may result in manifest lines greater than 72 bytes being wrapped and continued on the next line.
  </description>
    <structure>    
      <attributes>
        <attribute name="file" required="yes">       
          <description>
          The name of the manifest file to create/update.
 Required if used as a task.
        </description>
        </attribute>
        <attribute name="mode" required="no">
          <description>
          Update policy: either "update" or "replace"; default is "replace".
        </description>
        </attribute>
         <attribute name="encoding" required="no">
          <description>
          The encoding used to read the existing manifest when updating. Defaults to UTF-8 encoding.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="attribute" required="NOTDEFINED">
          <description>
          Add an attribute to the manifest - it is added to the main section.
        </description>
        </element>
        <element name="section" required="NOTDEFINED">
          <description>
          Add a section to the manifest
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="maudit">
    <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" required="no">
        <description>
          Automatically fix certain errors 
 (those marked as fixable in the manual);, default=false
        </description>
        </attribute>
        <attribute name="list" required="no">
          <description>
          Creates listing file for each audited file; default false. 
 When set, a .maudit file will be generated in the
 same location as the source file.
        </description>
        </attribute>
        <attribute name="maxmemory" required="no">
          <description>
          Set the maximum memory for the JVM; -mx or -Xmx depending on VM version
        </description>
        </attribute>
        <attribute name="metamatahome" required="yes">
          <description>
          The home directory containing the Metamata distribution; required
        </description>
        </attribute>
        <attribute name="tofile" required="yes">
          <description>
          The XML file to which the Audit result should be written to; required
        </description>
        </attribute>
        <attribute name="unused" required="no. default to false.">
          <description>
          Finds declarations unused in search paths; 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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Sets the class path (also source path unless one explicitly set).
 Overrides METAPATH/CLASSPATH environment variables.
        </description>
        </element>
        <element name="jvmarg" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Classpath for additional audit rules.
 These must be placed before metamata.jar!
        </description>
        </element>
        <element name="searchpath" required="NOTDEFINED">
        <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" required="NOTDEFINED">
          <description>
          Sets the source path. 
 Overrides the SOURCEPATH environment variable.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="mimemail">
    <description>
    A task to send SMTP email; Use &lt;tt&gt;mail&lt;/tt&gt; instead
  </description>
    <structure>
      <attributes>
        <attribute name="bcclist" required="">
          <description>
          Adds "bcc" address elements
        </description>
        </attribute>
        <attribute name="cclist" required="">
          <description>
          Adds "cc" address elements
        </description>
        </attribute>
        <attribute name="encoding" required="NOTDEFINED">
          <description>
          Allows the build writer to choose the preferred encoding method
        </description>
        </attribute>
        <attribute name="failonerror" required="no, default to &quot;true&quot;">
          <description>
          Indicates whether BuildExceptions should be passed back to the core
        </description>
        </attribute>
        <attribute name="files" required="NOTDEFINED">
          <description>
          Adds a list of files to be attached
        </description>
        </attribute>
        <attribute name="from" required="yes">
          <description>
          Shorthand to set the from address element
        </description>
        </attribute>
        <attribute name="includefilenames" required="NOTDEFINED">
          <description>
          Sets Includefilenames attribute
        </description>
        </attribute>
        <attribute name="mailhost" required="no, default to &quot;localhost&quot;">
          <description>
          Sets the host
        </description>
        </attribute>
        <attribute name="mailport" required="NOTDEFINED">
          <description>
          Sets the mail server port
        </description>
        </attribute>
        <attribute name="message" 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.">
          <description>
          Shorthand method to set the message
        </description>
        </attribute>
        <attribute name="messagefile" required="">
          <description>
          Shorthand method to set the message from a file
        </description>
        </attribute>
        <attribute name="messagemimetype" required="no, defaults to &quot;text/plain&quot;">
        <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" required="no">
        <description>
          Sets the subject line of the email
        </description>
        </attribute>
        <attribute name="tolist" required="yes, at least one of &apos;tolist&apos;, &apos;cclist&apos;,        or &apos;bcclist&apos; must be specified.">
        <description>
          Adds "to" address elements
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="bcc" required="NOTDEFINED">
          <description>
          Adds "bcc" address elements
        </description>
        </element>
        <element name="cc" required="NOTDEFINED">
          <description>
          Adds "cc" address element
        </description>
        </element>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Adds a set of files (nested fileset attribute).
        </description>
        </element>
        <element name="from" required="NOTDEFINED">
          <description>
          Adds a from address element
        </description>
        </element>
        <element name="message" required="NOTDEFINED">
          <description>
          Add a message elemnt
        </description>
        </element>
        <element name="to" required="NOTDEFINED">
          <description>
          Adds a to address element
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="mkdir">
    <description>
    Creates a given directory.
 Creates a directory and any non-existent parent directories, when
 necessary
  </description>
    <structure>
      <attributes>
        <attribute name="dir" required="yes">
          <description>
          the directory to create; required.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="mmetrics">
    <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" required="yes">
          <description>
          set the granularity of the audit. Should be one of 'files', 'methods'
 or 'types'.
        </description>
        </attribute>
        <attribute name="maxmemory" required="no">
          <description>
          Set the maximum memory for the JVM; -mx or -Xmx depending on VM version
        </description>
        </attribute>
        <attribute name="metamatahome" required="yes">
          <description>
          The home directory containing the Metamata distribution
        </description>
        </attribute>
        <attribute name="tofile" required="yes">
          <description>
          Set the output XML file
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Sets the class path (also source path unless one explicitly set).
 Overrides METAPATH/CLASSPATH environment variables.
        </description>
        </element>
        <element name="jvmarg" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set a new path (directory) to measure metrics from.
        </description>
        </element>
        <element name="sourcepath" required="NOTDEFINED">
          <description>
          Sets the source path. 
 Overrides the SOURCEPATH environment variable.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="move">
    <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" required="NOTDEFINED">
          <description>
          Sets the character encoding
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <description>
          If false, note errors to the output but keep going.
        </description>
        </attribute>
        <attribute name="file" required="one of file or       at least one nested fileset element">
          <description>
          Sets a single source file to copy.
        </description>
        </attribute>
        <attribute name="filtering" required="no">
          <description>
          If true, enables filtering.
        </description>
        </attribute>
        <attribute name="flatten" required="no">
        <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" required="no">
          <description>
          Used to copy empty directories.
        </description>
        </attribute>
        <attribute name="overwrite" required="no">
          <description>
          Overwrite any existing destination file(s).
        </description>
        </attribute>
        <attribute name="preservelastmodified" required="NOTDEFINED">
          <description>
          Give the copied files the same last modified time as the original files.
        </description>
        </attribute>
        <attribute name="todir" required="">
          <description>
          Sets the destination directory.
        </description>
        </attribute>
        <attribute name="tofile" 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">
          <description>
          Sets the destination file.
        </description>
        </attribute>
        <attribute name="verbose" required="NOTDEFINED">
          <description>
          Used to force listing of all names of copied files.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Adds a set of files to copy.
        </description>
        </element>
        <element name="filterchain" required="NOTDEFINED">
          <description>
          Adds a FilterChain.
        </description>
        </element>
        <element name="filterset" required="NOTDEFINED">
          <description>
          Adds a filterset.
        </description>
        </element>
        <element name="mapper" required="NOTDEFINED">
          <description>
          Defines the mapper to map source to destination files.
        </description>
        </element>

      </elements>
    </structure>
  </task>
  <task name="mparse">
    <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" required="no. default to false">
        <description>
          Remove the intermediate Sun JavaCC file; default false.
        </description>
        </attribute>
        <attribute name="debugparser" required="no">
          <description>
          set parser debug mode; default false
        </description>
        </attribute>
        <attribute name="debugscanner" required="no">
          <description>
          set scanner debug mode; default false
        </description>
        </attribute>
        <attribute name="maxmemory" required="no">
          <description>
          Set the maximum memory for the JVM;  -mx or -Xmx depending on VM version
        </description>
        </attribute>
        <attribute name="metamatahome" required="yes">
          <description>
          The home directory containing the Metamata distribution; required
        </description>
        </attribute>
        <attribute name="target" required="yes">
          <description>
          The .jj file to process; required.
        </description>
        </attribute>
        <attribute name="verbose" required="no">
          <description>
          Set verbose mode; default false
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Create a classpath entry
        </description>
        </element>
        <element name="jvmarg" required="NOTDEFINED">
          <description>
          Additional optional parameters to pass to the JVM.
        </description>
        </element>
        <element name="sourcepath" required="NOTDEFINED">
          <description>
          creates a sourcepath entry
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="native2ascii">
    <description>
    Converts files from native encodings to ASCII.
  </description>
    <structure>
      <attributes>
        <attribute name="dest" required="yes">
          <description>
          Set the destination directory to place converted files into.
        </description>
        </attribute>
        <attribute name="encoding" required="no">
          <description>
          Set the encoding to translate to/from.
 If unset, the default encoding for the JVM is used.
        </description>
        </attribute>
        <attribute name="ext" required="no">
          <description>
          Set the extension which converted files should have.
 If unset, files will not be renamed.
        </description>
        </attribute>
        <attribute name="reverse" required="no">
        <description>
          Flag the conversion to run in the reverse sense,
 that is Ascii to Native encoding.
        </description>
        </attribute>
        <attribute name="src" required="no">
          <description>
          Set the source directory in which to find files to convert.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="mapper" required="NOTDEFINED">
          <description>
          Defines the FileNameMapper to use (nested mapper element).
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="netrexxc">
    <description>
    Compiles NetRexx source files.
 &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" required="no">
          <description>
          Set whether literals are treated as binary, rather than NetRexx types
        </description>
        </attribute>
        <attribute name="classpath" required="no">
          <description>
          Set the classpath used for NetRexx compilation
        </description>
        </attribute>
        <attribute name="comments" required="no">
          <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" required="no">
          <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" required="no">
        <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" required="no">
        <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" required="no">
          <description>
          Whether variable cross references are generated
        </description>
        </attribute>
        <attribute name="decimal" required="no">
          <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" required="yes">
        <description>
          Set the destination directory into which the NetRexx source files
 should be copied and then compiled.
        </description>
        </attribute>
        <attribute name="diag" required="no">
          <description>
          Whether diagnostic information about the compile is generated
        </description>
        </attribute>
        <attribute name="explicit" required="no">
          <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" required="no">
        <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" required="no">
        <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" required="no">
        <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" required="no">
          <description>
          Whether the compiler text logo is displayed when compiling
        </description>
        </attribute>
        <attribute name="replace" required="no">
        <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" required="no">
        <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" required="no">
        <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" required="yes">
          <description>
          Set the source dir to find the source Java files.
        </description>
        </attribute>
        <attribute name="strictargs" required="no">
        <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" required="no">
          <description>
          Tells the NetRexx compile that assignments must match exactly on type
        </description>
        </attribute>
        <attribute name="strictcase" required="no">
          <description>
          Specifies whether the NetRexx compiler should be case sensitive or not
        </description>
        </attribute>
        <attribute name="strictimport" required="no">
        <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" required="no">
        <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" required="no">
        <description>
          Whether the compiler should force catching of exceptions by explicitly
 named types
        </description>
        </attribute>
        <attribute name="suppressdeprecation" required="no">
        <description>
          Tells whether we should filter out any deprecation-messages
 of the compiler out.
        </description>
        </attribute>
        <attribute name="suppressexceptionnotsignalled" required="no">
        <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" required="no">
        <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" required="no">
        <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" required="no">
        <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" required="no">
        <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" required="no">
        <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" required="no">
          <description>
        </description>
        </attribute>
        <attribute name="utf8" required="no">
        <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" required="no">
          <description>
          Whether lots of warnings and error messages should be generated
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="p4add">
    <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" required="NOTDEFINED">
        <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" required="NOTDEFINED">
        <description>
          The p4 client spec to use; defaults to the current user
        </description>
        </attribute>
        <attribute name="cmdopts" required="NOTDEFINED">
         <description>
          Set extra command options; only used on some
 of the Perforce tasks.
        </description>
        </attribute>
        <attribute name="commandlength" required="NOTDEFINED">
        <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" required="NOTDEFINED">
        <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" required="NOTDEFINED">
         <description>
          The p4d server and port to connect to; default "perforce:1666"
        </description>
        </attribute>
        <attribute name="user" required="NOTDEFINED">
        <description>
          The p4 username; defaults to the current user
        </description>
        </attribute>
        <attribute name="view" required="NOTDEFINED">
          <description>
          The client, branch or label view to operate upon; default "//..."
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          files to add
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="p4change">
    <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" required="NOTDEFINED">
        <description>
          The p4 client spec to use; defaults to the current user
        </description>
        </attribute>
        <attribute name="cmdopts" required="NOTDEFINED">
         <description>
          Set extra command options; only used on some
 of the Perforce tasks.
        </description>
        </attribute>
        <attribute name="description" required="NOTDEFINED">
          <description>
          Description for ChangeList.
 If none is specified, it will default to "AutoSubmit By Ant"
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <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" required="NOTDEFINED">
         <description>
          The p4d server and port to connect to; default "perforce:1666"
        </description>
        </attribute>
        <attribute name="user" required="NOTDEFINED">
        <description>
          The p4 username; defaults to the current user
        </description>
        </attribute>
        <attribute name="view" required="NOTDEFINED">
          <description>
          The client, branch or label view to operate upon; default "//..."
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="p4counter">
    <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" required="NOTDEFINED">
        <description>
          The p4 client spec to use; defaults to the current user
        </description>
        </attribute>
        <attribute name="cmdopts" required="NOTDEFINED">
        <description>
          Set extra command options; only used on some
 of the Perforce tasks.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
        <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" required="NOTDEFINED">
          <description>
          The name of the counter; required
        </description>
        </attribute>
        <attribute name="port" required="NOTDEFINED">
        <description>
          The p4d server and port to connect to; default "perforce:1666"
        </description>
        </attribute>
        <attribute name="property" required="NOTDEFINED">
          <description>
          A property to be set with the value of the counter
        </description>
        </attribute>
        <attribute name="user" required="NOTDEFINED">
        <description>
          The p4 username; defaults to the current user
        </description>
        </attribute>
        <attribute name="value" required="NOTDEFINED">
          <description>
          The new value for the counter.
        </description>
        </attribute>
        <attribute name="view" required="NOTDEFINED">
        <description>
          The client, branch or label view to operate upon; default "//..."
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="p4delete">
    <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" required="NOTDEFINED">
        <description>
          An existing changelist number for the deletion; optional
 but strongly recommended.
        </description>
        </attribute>
        <attribute name="client" required="NOTDEFINED">
		<description>
          The p4 client spec to use; defaults to the current user
        </description>
        </attribute>
        <attribute name="cmdopts" required="NOTDEFINED">
          <description>
          Set extra command options; only used on some
 of the Perforce tasks.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
        <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" required="NOTDEFINED">
        <description>
          The p4d server and port to connect to; default "perforce:1666"
        </description>
        </attribute>
        <attribute name="user" required="NOTDEFINED">
          <description>
          The p4 username; defaults to the current user
        </description>
        </attribute>
        <attribute name="view" required="NOTDEFINED">
        <description>
          The client, branch or label view to operate upon; default "//..."
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="p4edit">
  <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" required="NOTDEFINED">
        <description>
          An existing changelist number to assign files to; optional
 but strongly recommended.
        </description>
        </attribute>
        <attribute name="client" required="NOTDEFINED">
          <description>
          The p4 client spec to use; defaults to the current user
        </description>
        </attribute>
        <attribute name="cmdopts" required="NOTDEFINED">
          <description>
          Set extra command options; only used on some
 of the Perforce tasks.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          The p4d server and port to connect to; default "perforce:1666"
        </description>
        </attribute>
        <attribute name="user" required="NOTDEFINED">
          <description>
          The p4 username; defaults to the current user
        </description>
        </attribute>
        <attribute name="view" required="NOTDEFINED">
          <description>
          The client, branch or label view to operate upon; default "//..."
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="p4have">
    <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" required="NOTDEFINED">
          <description>
          The p4 client spec to use; defaults to the current user
        </description>
        </attribute>
        <attribute name="cmdopts" required="NOTDEFINED">
          <description>
          Set extra command options; only used on some
 of the Perforce tasks.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          The p4d server and port to connect to; default "perforce:1666"
        </description>
        </attribute>
        <attribute name="user" required="NOTDEFINED">
          <description>
          The p4 username; defaults to the current user
        </description>
        </attribute>
        <attribute name="view" required="NOTDEFINED">
          <description>
          The client, branch or label view to operate upon; default "//..."
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="p4label">
    <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" required="NOTDEFINED">
          <description>
          The p4 client spec to use;
 optional, defaults to the current user
        </description>
        </attribute>
        <attribute name="cmdopts" required="NOTDEFINED">
          <description>
          Set extra command options; only used on some
 of the Perforce tasks.
        </description>
        </attribute>
        <attribute name="desc" required="NOTDEFINED">
          <description>
          Label Description.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          When set to "locked", Perforce will lock the label once created.
        </description>
        </attribute>
        <attribute name="name" required="no">
          <description>
          The name of the label; default "AntLabel"
        </description>
        </attribute>
        <attribute name="port" required="no">
          <description>
          The p4d server and port to connect to; default "perforce:1666"
        </description>
        </attribute>
        <attribute name="user" required="no">
          <description>
          The p4 username; defaults to the current user
        </description>
        </attribute>
        <attribute name="view" required="no">
          <description>
          The client, branch or label view to operate upon; default "//..."
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="p4reopen">
    <description>
  </description>
    <structure>
      <attributes>
        <attribute name="client" required="no">
          <description>
          The p4 client spec to use; defaults to the current user
        </description>
        </attribute>
        <attribute name="cmdopts" required="NOTDEFINED">
          <description>
          Set extra command options; only used on some
 of the Perforce tasks.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <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" required="no">
          <description>
          The p4d server and port to connect to; default "perforce:1666"
        </description>
        </attribute>
        <attribute name="tochange" required="yes">
          <description>
          The changelist to move files to.
        </description>
        </attribute>
        <attribute name="user" required="no">
          <description>
          The p4 username; defaults to the current user
        </description>
        </attribute>
        <attribute name="view" required="no">
          <description>
          The client, branch or label view to operate upon; default "//..."
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="p4revert">
    <description>
    Revert Perforce open files or files in a changelist
  </description>
    <structure>
      <attributes>
        <attribute name="change" required="no">
          <description>
          The changelist to revert.
        </description>
        </attribute>
        <attribute name="client" required="no">
          <description>
          The p4 client spec to use; defaults to the current user
        </description>
        </attribute>
        <attribute name="cmdopts" required="NOTDEFINED">
          <description>
          Set extra command options; only used on some
 of the Perforce tasks.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <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" required="no">
          <description>
          The p4d server and port to connect to; default "perforce:1666"
        </description>
        </attribute>
        <attribute name="revertonlyunchanged" required="no">
          <description>
          flag to revert only unchanged files (p4 revert -a); default false.
        </description>
        </attribute>
        <attribute name="user" required="no">
                  <description>
          The p4 username; defaults to the current user
        </description>
        </attribute>
        <attribute name="view" required="no">
		<description>
          The client, branch or label view to operate upon; default "//..."
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="p4submit">
    <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" required="NOTDEFINED">
          <description>
          The changelist number to submit; required.
        </description>
        </attribute>
        <attribute name="client" required="NOTDEFINED">
          <description>
          The p4 client spec to use; defaults to the current user
        </description>
        </attribute>
        <attribute name="cmdopts" required="NOTDEFINED">
          <description>
          Set extra command options; only used on some
 of the Perforce tasks.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          The p4d server and port to connect to; default "perforce:1666"
        </description>
        </attribute>
        <attribute name="user" required="NOTDEFINED">
          <description>
          The p4 username; defaults to the current user
        </description>
        </attribute>
        <attribute name="view" required="no">
          <description>
          The client, branch or label view to operate upon; default "//..."
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="p4sync">
    <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" required="NOTDEFINED">
          <description>
          The p4 client spec to use; defaults to the current user
        </description>
        </attribute>
        <attribute name="cmdopts" required="NOTDEFINED">
          <description>
          Set extra command options; only used on some
 of the Perforce tasks.
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          force a refresh of files, if this attribute is set; false by default.
        </description>
        </attribute>
        <attribute name="label" required="no">
          <description>
          Label to sync client to.
        </description>
        </attribute>
        <attribute name="port" required="NOTDEFINED">
          <description>
          The p4d server and port to connect to; default "perforce:1666"
        </description>
        </attribute>
        <attribute name="user" required="NOTDEFINED">
          <description>
          The p4 username; defaults to the current user
        </description>
        </attribute>
        <attribute name="view" required="NOTDEFINED">
          <description>
          The client, branch or label view to operate upon; default "//..."
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="parallel">
    <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">
    <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" required="no">
          <description>
          flag to create backups; default=false
        </description>
        </attribute>
        <attribute name="dir" required="no, default is the project&apos;s basedir.">
          <description>
          The directory to run the patch command in, defaults to the
 project's base directory.
        </description>
        </attribute>
        <attribute name="ignorewhitespace" required="no">
          <description>
          flag to ignore whitespace differences; default=false
        </description>
        </attribute>
        <attribute name="originalfile" required="no, tries to guess it from the diff         file">
          <description>
          The file to patch; optional if it can be inferred from
 the diff file
        </description>
        </attribute>
        <attribute name="patchfile" required="yes">
          <description>
          The file containing the diff output.
        </description>
        </attribute>
        <attribute name="quiet" required="no">
          <description>
          Work silently unless an error occurs; default=false
        </description>
        </attribute>
        <attribute name="reverse" required="no">
          <description>
          Assume patch was created with old and new files swapped; default=false
        </description>
        </attribute>
        <attribute name="strip" required="no">
          <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">
    <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" required="no, defaults to current jvm file.separator">
          <description>
          Set the default directory separator string;
 defaults to current JVM {@link java.io.File#separator File.separator}
        </description>      
        </attribute>
        <attribute name="pathsep" required="no, defaults to current jvm file.pathseparator">
          <description>
          Set the default path separator string;
 defaults to current JVM
 {@link java.io.File#pathSeparator File.pathSeparator}
        </description>      
        </attribute>
        <attribute name="property" required="yes">
          <description>
          The property into which the converted path will be placed.
        </description>      
        </attribute>
        <attribute name="refid" required="no; if omitted, a nested &lt;path&gt; element must be supplied.">
          <description>
          Adds a reference to a Path, FileSet, DirSet, or FileList defined elsewhere.
        </description>
        </attribute>
        <attribute name="setonempty" required="no; default is &quot;true&quot;.    ">
          <description>
          Should the property be set, even if the result is the empty string?
        </description>
        </attribute>      
        <attribute name="targetos" required="yes, unless pathsep and/or dirsep are specified.">
          <description>
          The target architecture. Must be one of 'unix', 'windows', 'netware', 'tandem' or 'os/2'. This is a shorthand mechanism for specifying both pathsep and dirsep according to the specified target architecture.
        </description>
        </attribute>    
      </attributes>
      <elements>      
        <element name="map" required="NOTDEFINED">
          <description>
          Create a nested MAP element
        </description>      
        </element>
        <element name="path" required="NOTDEFINED">
          <description>
          Create a nested PATH element
        </description>      
        </element>
      </elements>
    </structure>
  </task>
  <task name="property">
    <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" required="no">
          <description>
          The classpath to use when looking up a resource.
        </description>      
        </attribute>
        <attribute name="classpathref" required="no">
          <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" required="">
          <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" required="">
          <description>
          the filename of a property file to load.
        </description>
        </attribute>
        <attribute name="location" required="">
          <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" required="no">
          <description>
          sets the name of the property to set.
        </description>
        </attribute>
        <attribute name="prefix" required="no">
          <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" required="">
          <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" required="one of these, when        not using the name attribute">
          <description>
          the resource name of a property file to load
        </description>
        </attribute>
        <attribute name="value" required="one of these, when using the         name attribute">
          <description>
          Sets the value of the property.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="classpath" required="NOTDEFINED">
          <description>
          The classpath to use when looking up a resource.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="propertyfile">
    <description>
    Modifies settings in a property file.
  </description>
    <structure>
      <attributes>
        <attribute name="comment" required="NOTDEFINED">
          <description>
          optional header comment for the file
        </description>
        </attribute>
        <attribute name="file" required="NOTDEFINED">
          <description>
          Location of the property file to be edited; required.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="entry" required="NOTDEFINED">
          <description>
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="pvcs">
    <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" required="no">
          <description>
          The format of the folder names.
 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" required="no">
          <description>
          Specifies the value of the force argument.
 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" required="no">
          <description>
          If set to true the return value from executing the pvcs
 commands are ignored; default false.
        </description>
        </attribute>
        <attribute name="label" required="no">
          <description>
          Only files marked with this label are extracted.
        </description>
        </attribute>
        <attribute name="linestart" required="no">
          <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" required="no">
          <description>
          Specifies the name of the promotiongroup argument
        </description>
        </attribute>
        <attribute name="pvcsbin" required="no">
          <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" required="no">
          <description>
          The project within the PVCS repository to extract files from; default &amp;quot;/&amp;quot;
        </description>
        </attribute>
        <attribute name="repository" required="yes">
          <description>
          The network name of the PVCS repository; required.
        </description>
        </attribute>
        <attribute name="updateonly" required="no">
          <description>
          If set to &lt;i&gt;true&lt;/i&gt; files are fetched only if 
 newer than existing local files; default false.
        </description>
        </attribute>
        <attribute name="workspace" required="no">
          <description>
          Workspace to use.
 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" required="NOTDEFINED">
          <description>
          Specify a project within the PVCS repository to extract files from.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="record">
    <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" required="NOTDEFINED">
          <description>
          Sets the action for the associated recorder entry.
        </description>
        </attribute>
        <attribute name="append" required="NOTDEFINED">
          <description>
          Whether or not the logger should append to a previous file.
        </description>
        </attribute>
        <attribute name="emacsmode" required="NOTDEFINED">
          <description>
        </description>
        </attribute>
        <attribute name="loglevel" required="NOTDEFINED">
          <description>
          Sets the level to which this recorder entry should log to.
        </description>
        </attribute>
        <attribute name="name" required="NOTDEFINED">
          <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">
    <description>
    Renames a file.
  </description>
    <structure>
      <attributes>
        <attribute name="dest" required="yes">
          <description>
          Sets the new name of the file.
        </description>
        </attribute>
        <attribute name="replace" required="no">
          <description>
          Sets whether an existing file should be replaced.
        </description>
        </attribute>
        <attribute name="src" required="yes">
          <description>
          Sets the file to be renamed.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="renameextensions">
    <description>
  </description>
    <structure>
      <attributes>
        <attribute name="fromextension" required="NOTDEFINED">
          <description>
          The string that files must end in to be renamed
        </description>
        </attribute>
        <attribute name="replace" required="no">
          <description>
          store replace attribute - this determines whether the target file
 should be overwritten if present
        </description>
        </attribute>
        <attribute name="srcdir" required="yes">
          <description>
          Set the source dir to find the files to be renamed.
        </description>
        </attribute>
        <attribute name="toextension" required="yes">
          <description>
          The string that renamed files will end with on
 completion
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="replace">
    <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" required="">
          <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" required="no - defaults to default jvm encoding">
          <description>
          Set the file encoding to use on the files read and written by the task; defaults to default JVM encoding
        </description>
        </attribute>      
        <attribute name="file" required="exactly one of the two.">
          <description>
          Set the source file; required unless &lt;code&gt;dir&lt;/code&gt; is set.
        </description>
        </attribute>      
        <attribute name="propertyfile" required="yes only if property attribute of &lt;replacefilter&gt; is used.">
          <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" required="no.">
          <description>
          Sets the name of a property file containing filters.
 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" required="no, by default no summary is produced">
          <description>
          Indicates whether a summary of the replace operation should be
 produced, detailing how many token occurrences and files were
 processed; default=false
        </description>
        </attribute>      
        <attribute name="token" required="yes, unless a nested      replacetoken element or the replacefilterfile attribute is used.">
          <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" required="no">
          <description>
          Set the string value to use as token replacement;
 optional, default is the empty string ""
        </description>      
        </attribute>
      </attributes>
      <elements>      
        <element name="replacetoken" required="NOTDEFINED">
          <description>
          the token to filter as the text of a nested element
        </description>      
        </element>
        <element name="replacevalue" required="NOTDEFINED">
          <description>
          the string to replace the token as the text of a nested element
        </description>      
        </element>
        <element name="replacefilter" required="NOTDEFINED">
          <description>
          Add a nested &amp;lt;replacefilter&amp;gt; element.
        </description>      
        </element>
      </elements>
    </structure>
  </task>
  <task name="replaceregexp">
    <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).
  </description>
    <structure>
      <attributes>      
        <attribute name="byline" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          file for which the regular expression should be replaced;
 required unless a nested fileset is supplied.
        </description>
        </attribute>
        <attribute name="flags" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          list files to apply the replacement to
        </description>      
        </element>
        <element name="regexp" required="NOTDEFINED">
          <description>
          A regular expression.
 You can use this element to refer to a previously
 defined regular expression datatype instance
        </description>      
        </element>
        <element name="substitution" required="NOTDEFINED">
          <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">
    <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;
  </description>
    <structure>
      <attributes>
        <attribute name="base" required="yes">
          <description>
          Sets the location to store the compiled files.
        </description>
        </attribute>
        <attribute name="classname" required="no">
          <description>
          	Sets the the class to run &lt;code&gt;rmic&lt;/code&gt; against
        </description>
        </attribute>
        <attribute name="classpath" required="no">
          <description>
          Set the classpath to be used for this compilation.
        </description>
        </attribute>
        <attribute name="classpathref" required="no">
          <description>
          Adds to the classpath a reference to a &amp;lt;path&amp;gt; defined elsewhere.
        </description>
        </attribute>
        <attribute name="compiler" required="no">
          <description>
          Sets the compiler implementation to use;
 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" required="no">
          <description>
          Generate debug info (passes -g to rmic); defaults to false
        </description>
        </attribute>
        <attribute name="extdirs" required="no">
          <description>
          Sets the extension directories that will be used during the compilation.
        </description>      
        </attribute>
        <attribute name="filtering" required="no">
          <description>
          indicates whether token filtering should take place; default=false
        </description>      
        </attribute>
        <attribute name="idl" required="no">
          <description>
          Indicates that IDL output should be generated.  This defaults to false if not set.
        </description>
        </attribute>
        <attribute name="idlopts" required="no">
          <description>
          pass additional arguments for idl compile
        </description>      
        </attribute>
        <attribute name="iiop" required="no">
        <description>
          Indicates that IIOP compatible stubs should be generated; defaults to false if not set.
        </description>
        </attribute>
        <attribute name="iiopopts" required="no">
          <description>
          Set additional arguments for iiop.
        </description>      
        </attribute>
        <attribute name="includeantruntime" required="no">
          <description>
          Sets whether or not to include ant's own classpath in this task's classpath. Default is &lt;code&gt;true&lt;/code&gt;.
        </description>
        </attribute>      
        <attribute name="includejavaruntime" required="no">
          <description>
        Whether to include the default run-time libraries from the executing VM; defaults to no.
        </description>
        </attribute>
        <attribute name="sourcebase" required="no">
          <description>
          Optional directory to save generated source files to.
        </description>      
        </attribute>
        <attribute name="stubversion" required="no">
          <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" required="no">
          <description>
          Flag to enable verification so that the classes found by the directory match are
 checked to see if they implement java.rmi.Remote. Defaults to false if not set.
        </description>      
        </attribute>
      </attributes>
      <elements>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Creates a nested classpath element.
        </description>      
        </element>
        <element name="compilerarg" required="NOTDEFINED">
          <description>
          Adds an implementation specific command line argument.
        </description>      
        </element>
        <element name="extdirs" required="NOTDEFINED">
          <description>
          Maybe creates a nested extdirs element.
        </description>      
        </element>
      </elements>
    </structure>
  </task>
  <task name="rpm">
    <description>
    Invokes the rpm tool to build a Linux installation file.
  </description>
    <structure>
      <attributes>      
        <attribute name="cleanbuilddir" required="no">
          <description>
          Flag (default=false) to remove 
 the generated files in the BUILD directory
        </description>
        </attribute>
        <attribute name="command" required="no">
          <description>
          What command to issue to the rpm tool. The default is "-bb".
        </description>
        </attribute>
        <attribute name="error" required="NOTDEFINED">
          <description>
          Optional file to save stderr to
        </description>
        </attribute>
        <attribute name="output" required="NOTDEFINED">
          <description>
          Optional file to save stdout to.
        </description>
        </attribute>
        <attribute name="removesource" required="no">
          <description>
          Flag (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" required="no">
          <description>
          Flag (default=false) to remove the spec file from SPECS
        </description>
        </attribute>
        <attribute name="specfile" required="yes">
          <description>
          The name of the spec File to use; required.
        </description>
        </attribute>
        <attribute name="topdir" required="no">
          <description>
          The directory which will have the expected subdirectories, SPECS, SOURCES, BUILD, SRPMS. 
 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">
    <description>
    Executes a script.
  </description>
    <structure>
      <attributes>
        <attribute name="language" required="yes">
          <description>
          Defines the language (required).
        </description>
        </attribute>
        <attribute name="src" required="no">
          <description>
          Load the script from an external file.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
      <body>
        <description>
          The script text.
        </description>
      </body>
    </structure>
  </task>
  <task name="sequential">
    <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">
    <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" required="yes">
          <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" required="tool dependant">
          <description>
          The filename of the component to be deployed; optional
  depending upon the tool and the action.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="generic" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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">
    <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; 
 
  </description>
    <structure>
      <attributes>
        <attribute name="nonproxyhosts" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          the HTTP/ftp proxy host. Set this to "" for the http proxy
 option to be disabled
        </description>
        </attribute>
        <attribute name="proxyport" required="NOTDEFINED">
          <description>
          the HTTP/ftp proxy port number; default is 80
        </description>
        </attribute>
        <attribute name="socksproxyhost" required="NOTDEFINED">
          <description>
          The name of a Socks server. Set to "" to turn socks
 proxying off.
        </description>
        </attribute>
        <attribute name="socksproxyport" required="NOTDEFINED">
          <description>
          Set the ProxyPort for socks connections. The default value is 1080
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="signjar">    
    <description>
    Signs jar or zip files with the javasign command line tool. The tool's detailed dependency checking: files are only signed if they
 are not signed. The &lt;tt&gt;signedjar&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" required="yes.">
          <description>
          the alias to sign under; required
        </description>
        </attribute>
        <attribute name="internalsf" required="no; default false">
          <description>
          Flag to include the .SF file inside the signature; default false
        </description>
        </attribute>
        <attribute name="jar" required="yes.">
          <description>
          The jar file to sign.
        </description>
        </attribute>
        <attribute name="keypass" required="no">
          <description>
          Password for private key (if different).
        </description>
        </attribute>
        <attribute name="keystore" required="no">
          <description>
          Keystore location.
        </description>
        </attribute>
        <attribute name="lazy" required="no; default false">
 file means a JAR is signed;
          <description>
          Flag to control whether the presence of a signature
 file means a JAR is signed; default false.
        </description>
        </attribute>
        <attribute name="sectionsonly" required="no; default false">
          <description>
          Flag to compute hash of entire manifest; default false
        </description>
        </attribute>
        <attribute name="sigfile" required="no">
          <description>
          Name of .SF/.DSA file.
        </description>
        </attribute>
        <attribute name="signedjar" required="no">
          <description>
          name of signed JAR file; optional
        </description>
        </attribute>
        <attribute name="storepass" required="yes.">
          <description>
          password for keystore integrity; required
        </description>
        </attribute>
        <attribute name="storetype" required="no">
          <description>
          keystore type; optional
        </description>
        </attribute>
        <attribute name="verbose" required="no; default false">
          <description>
          Enable verbose output when signing
 ; optional: default false
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Adds a set of files to sign
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="sleep">
    <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" required="no">
          <description>
          flag controlling whether to break the build on an error.
        </description>
        </attribute>
        <attribute name="hours" required="no">
          <description>
          hours to add to the sleep time.
        </description>
        </attribute>
        <attribute name="milliseconds" required="no">
          <description>
          milliseconds to add to the sleep time
        </description>
        </attribute>
        <attribute name="minutes" required="no">
          <description>
          minutes to add to the sleep time
        </description>
        </attribute>
        <attribute name="seconds" required="no">
          <description>
          seconds to add to the sleep time
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="soscheckin">
    <description>
    Commits and unlocks files in Visual SourceSafe via a SourceOffSite server.
   </description>
    <structure>
      <attributes>
        <attribute name="comment" required="NOTDEFINED">
          <description>
          Set the comment to apply to all files being labelled;
 optional, only valid in SOSLabel
        </description>
        </attribute>
        <attribute name="file" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the labeled version to operate on in SourceSafe
        </description>
        </attribute>
        <attribute name="localpath" required="NOTDEFINED">
          <description>
          Override the working directory and get to the specified path; optional.
        </description>
        </attribute>
        <attribute name="nocache" required="NOTDEFINED">
          <description>
          flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.
        </description>
        </attribute>
        <attribute name="nocompress" required="NOTDEFINED">
          <description>
          Flag that disables compression when set; optional, default
        </description>
        </attribute>
        <attribute name="password" required="NOTDEFINED">
          <description>
          Set the SourceSafe password; optional.
        </description>
        </attribute>
        <attribute name="projectpath" required="NOTDEFINED">
          <description>
          Set the SourceSafe project path without the "$" prefix; required
        </description>
        </attribute>
        <attribute name="recursive" required="NOTDEFINED">
          <description>
          Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false
        </description>
        </attribute>
        <attribute name="soscmd" required="NOTDEFINED">
          <description>
          Set the directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.
        </description>
        </attribute>
        <attribute name="soshome" required="NOTDEFINED">
          <description>
          The path to the SourceOffSite home directory
        </description>
        </attribute>
      
        <attribute name="sosserverpath" required="NOTDEFINED">
          <description>
          Set the address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.
        </description>
        </attribute>
        <attribute name="username" required="NOTDEFINED">
          <description>
          Set the SourceSafe username; required.
        </description>
        </attribute>
        <attribute name="verbose" required="NOTDEFINED">
          <description>
          Enable verbose output; optional, default false
        </description>
        </attribute>
        <attribute name="version" required="NOTDEFINED">
          <description>
          Set the a version number to get - 
 only works with the SOSGet on a file; optional.
        </description>
        </attribute>
        <attribute name="vssserverpath" required="NOTDEFINED">
          <description>
          Set the path to the location of the ss.ini file; 
 required.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="soscheckout">
    <description>
    Retrieves and locks files in Visual SourceSafe via a SourceOffSite server.
  </description>
    <structure>
      <attributes>
        <attribute name="comment" required="NOTDEFINED">
          <description>
          Set the comment to apply to all files being labelled;
 optional, only valid in SOSLabel
        </description>
        </attribute>
        <attribute name="file" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the labeled version to operate on in SourceSafe
        </description>
        </attribute>
        <attribute name="localpath" required="NOTDEFINED">
          <description>
          Override the working directory and get to the specified path; optional.
        </description>
        </attribute>
        <attribute name="nocache" required="NOTDEFINED">
          <description>
          flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.
        </description>
        </attribute>
        <attribute name="nocompress" required="NOTDEFINED">
          <description>
          Flag that disables compression when set; optional, default
        </description>
        </attribute>
        <attribute name="password" required="NOTDEFINED">
          <description>
          Set the SourceSafe password; optional.
        </description>
        </attribute>
        <attribute name="projectpath" required="NOTDEFINED">
          <description>
          Set the SourceSafe project path without the "$" prefix; required
        </description>
        </attribute>
        <attribute name="recursive" required="NOTDEFINED">
          <description>
          Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false
        </description>
        </attribute>
        <attribute name="soscmd" required="NOTDEFINED">
          <description>
          Set the directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.
        </description>
        </attribute>
        <attribute name="soshome" required="NOTDEFINED">
          <description>
          The path to the SourceOffSite home directory
        </description>
        </attribute>
        <attribute name="sosserverpath" required="NOTDEFINED">
          <description>
          Set the address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.
        </description>
        </attribute>
        <attribute name="username" required="NOTDEFINED">
          <description>
          Set the SourceSafe username; required.
        </description>
        </attribute>
        <attribute name="verbose" required="NOTDEFINED">
          <description>
          Enable verbose output; optional, default false
        </description>
        </attribute>
        <attribute name="version" required="NOTDEFINED">
          <description>
          Set the a version number to get - 
 only works with the SOSGet on a file; optional.
        </description>
        </attribute>
        <attribute name="vssserverpath" required="NOTDEFINED">
          <description>
          Set the path to the location of the ss.ini file; 
 required.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="sosget">
    <description>
    Retrieves a read-only copy of the specified project or file
 from Visual SourceSafe via a SourceOffSite server.
  </description>
    <structure>
      <attributes>
        <attribute name="comment" required="NOTDEFINED">
          <description>
          Set the comment to apply to all files being labelled;
 optional, only valid in SOSLabel
        </description>
        </attribute>
        <attribute name="file" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the labeled version to operate on in SourceSafe
        </description>
        </attribute>
        <attribute name="localpath" required="NOTDEFINED">
          <description>
          Override the working directory and get to the specified path; optional.
        </description>
        </attribute>
        <attribute name="nocache" required="NOTDEFINED">
          <description>
          flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.
        </description>
        </attribute>
        <attribute name="nocompress" required="NOTDEFINED">
          <description>
          Flag that disables compression when set; optional, default
        </description>
        </attribute>
        <attribute name="password" required="NOTDEFINED">
          <description>
          Set the SourceSafe password; optional.
        </description>
        </attribute>
        <attribute name="projectpath" required="NOTDEFINED">
          <description>
          Set the SourceSafe project path without the "$" prefix; required
        </description>
        </attribute>
        <attribute name="recursive" required="NOTDEFINED">
          <description>
          Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false
        </description>
        </attribute>
        <attribute name="soscmd" required="NOTDEFINED">
          <description>
          Set the directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.
        </description>
        </attribute>
        <attribute name="soshome" required="NOTDEFINED">
          <description>
          The path to the SourceOffSite home directory
        </description>
        </attribute>
        <attribute name="sosserverpath" required="NOTDEFINED">
          <description>
          Set the address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.
        </description>
        </attribute>
        <attribute name="username" required="NOTDEFINED">
          <description>
          Set the SourceSafe username; required.
        </description>
        </attribute>
        <attribute name="verbose" required="NOTDEFINED">
          <description>
          Enable verbose output; optional, default false
        </description>
        </attribute>
        <attribute name="version" required="NOTDEFINED">
          <description>
          Set the a version number to get - 
 only works with the SOSGet on a file; optional.
        </description>
        </attribute>
        <attribute name="vssserverpath" required="NOTDEFINED">
          <description>
          Set the path to the location of the ss.ini file; 
 required.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="soslabel">
    <description>
    Labels Visual SourceSafe files via a SourceOffSite server.
  </description>
    <structure>
      <attributes>
        <attribute name="comment" required="NOTDEFINED">
          <description>
          Set the comment to apply to all files being labelled;
 optional, only valid in SOSLabel
        </description>
        </attribute>
        <attribute name="file" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the labeled version to operate on in SourceSafe
        </description>
        </attribute>
        <attribute name="localpath" required="NOTDEFINED">
          <description>
          Override the working directory and get to the specified path; optional.
        </description>
        </attribute>
        <attribute name="nocache" required="NOTDEFINED">
          <description>
          flag to disable the cache when set;
 optional needed if SOSHOME is set as an environment variable.
        </description>
        </attribute>
        <attribute name="nocompress" required="NOTDEFINED">
          <description>
          Flag that disables compression when set; optional, default
        </description>
        </attribute>
        <attribute name="password" required="NOTDEFINED">
          <description>
          Set the SourceSafe password; optional.
        </description>
        </attribute>
        <attribute name="projectpath" required="NOTDEFINED">
          <description>
          Set the SourceSafe project path without the "$" prefix; required
        </description>
        </attribute>
        <attribute name="recursive" required="NOTDEFINED">
          <description>
          Flag to recursively apply the action (not valid
 on all SOS tasks ); optional, default false
        </description>
        </attribute>
        <attribute name="soscmd" required="NOTDEFINED">
          <description>
          Set the directory where soscmd(.exe) is located;
 optional, soscmd must be on the path if omitted.
        </description>
        </attribute>
        <attribute name="soshome" required="NOTDEFINED">
          <description>
          The path to the SourceOffSite home directory
        </description>
        </attribute>
        <attribute name="sosserverpath" required="NOTDEFINED">
          <description>
          Set the address and port of SourceOffSite Server,
 eg. 192.168.0.1:8888 ; required.
        </description>
        </attribute>
        <attribute name="username" required="NOTDEFINED">
          <description>
          Set the SourceSafe username; required.
        </description>
        </attribute>
        <attribute name="verbose" required="NOTDEFINED">
          <description>
          Enable verbose output; optional, default false
        </description>
        </attribute>
        <attribute name="version" required="NOTDEFINED">
          <description>
          Set the a version number to get - 
 only works with the SOSGet on a file; optional.
        </description>
        </attribute>
        <attribute name="vssserverpath" required="NOTDEFINED">
          <description>
          Set the path to the location of the ss.ini file; 
 required.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="sound">
    <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" required="NOTDEFINED">
          <description>
          add a sound when the build fails
        </description>
        </element>
        <element name="success" required="NOTDEFINED">
          <description>
          add a sound when the build succeeds
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="splash">
    <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" required="no">
          <description>
          A URL pointing to an image to display; optional, default antlogo.gif
 from the classpath.
        </description>
        </attribute>
        <attribute name="password" required="NOTDEFINED">
          <description>
          Proxy password; required if &lt;tt&gt;user&lt;/tt&gt; is set.
        </description>
        </attribute>
        <attribute name="port" required="NOTDEFINED">
          <description>
          Proxy port; optional, default 80.
        </description>
        </attribute>
        <attribute name="proxy" required="NOTDEFINED">
          <description>
          name of proxy; optional.
        </description>
        </attribute>
        <attribute name="showduration" required="no">
          <description>
          how long to show the splash screen in milliseconds,
 optional; default 5000 ms.
        </description>
        </attribute>
        <attribute name="user" required="NOTDEFINED">
          <description>
          Proxy user; optional, default =none.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="sql">
    <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" required="no">
          <description>
          whether output should be appended to or overwrite
 an existing file.  Defaults to false.
        </description>
        </attribute>
        <attribute name="autocommit" required="no, default &quot;false&quot;">
          <description>
          Auto commit flag for database connection;
 optional, default false.
        </description>
        </attribute>
        <attribute name="caching" required="no (default=true)">
          <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" required="no (use system classpath)">
          <description>
          Sets the classpath for loading the driver.
        </description>
        </attribute>
        <attribute name="classpathref" required="no (use system classpath)">
          <description>
          Set the classpath for loading the driver 
 using the classpath reference.
        </description>
        </attribute>
        <attribute name="delimiter" required="no, default &quot;;&quot;">
 optional, default &amp;quot;;&amp;quot;
 &lt;p&gt;For example, set this to "go" and delimitertype to "ROW" for
          <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" required="NOTDEFINED">
          <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" required="yes">
          <description>
          Class name of the JDBC driver; required.
        </description>
        </attribute>
        <attribute name="encoding" required="no - defaults to default jvm encoding">
          <description>
          Set the file encoding to use on the SQL files read in
        </description>
        </attribute>
        <attribute name="onerror" required="no, default &quot;abort&quot;">
          <description>
          Action to perform when statement fails: continue, stop, or abort
 optional; default &amp;quot;abort&amp;quot;
        </description>
        </attribute>
        <attribute name="output" required="no (print to system.out by default)">
          <description>
          Set the output file; 
 optional, defaults to the Ant log.
        </description>
        </attribute>
        <attribute name="password" required="yes">
          <description>
          Sets the password; required.
        </description>
        </attribute>
        <attribute name="print" required="no, default &quot;false&quot;">
          <description>
          Print result sets from the statements;
 optional, default false
        </description>
        </attribute>
        <attribute name="rdbms" required="no (no restriction)">
          <description>
          Execute task only if the lower case product name 
 of the DB matches this
        </description>
        </attribute>
        <attribute name="showheaders" required="no, default &quot;true&quot;">
          <description>
          Print headers for result sets from the 
 statements; optional, default true.
        </description>
        </attribute>
        <attribute name="src" required="yes, unless statements enclosed within tags">
          <description>
          Set the name of the SQL file to be run.
 Required unless statements are enclosed in the buildfile
        </description>
        </attribute>
        <attribute name="url" required="yes">
          <description>
          Sets the database connection URL; required.
        </description>
        </attribute>
        <attribute name="userid" required="yes">
          <description>
          Set the user name for the connection; required.
        </description>
        </attribute>
        <attribute name="version" required="no (no restriction)">
          <description>
          Sets the version string, execute task only if 
 rdbms version match; optional.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Adds a set of files (nested fileset attribute).
        </description>
        </element>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Add a path to the classpath for loading the driver.
        </description>
        </element>
        <element name="transaction" required="NOTDEFINED">
          <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">
    <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" required="NOTDEFINED">
          <description>
          If true, append output to existing file.
        </description>
        </attribute>
        <attribute name="book" required="yes">
          <description>
          The book xml file that the documentation generation starts from; 
 required.
        </description>
        </attribute>
        <attribute name="classname" required="NOTDEFINED">
          <description>
          Sets the Java class to execute.
        </description>
        </attribute>
        <attribute name="classpath" required="NOTDEFINED">
          <description>
          Set the classpath to be used when running the Java class
        </description>
        </attribute>
        <attribute name="classpathref" required="NOTDEFINED">
          <description>
          Classpath to use, by reference.
        </description>
        </attribute>
        <attribute name="dir" required="NOTDEFINED">
          <description>
          The working directory of the process
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <description>
          If true, then fail if the command exits with a
 returncode other than 0
        </description>
        </attribute>
        <attribute name="fork" required="NOTDEFINED">
          <description>
          If true, execute in a new VM.
        </description>
        </attribute>
        <attribute name="jvmversion" required="NOTDEFINED">
          <description>
          Sets the JVM version.
        </description>
        </attribute>
        <attribute name="jar" required="NOTDEFINED">
          <description>
          The location of the JAR file to execute.
        </description>
        </attribute>
        <attribute name="jvm" required="NOTDEFINED">
          <description>
          Set the command used to start the VM (only if not forking).
        </description>
        </attribute>
        <attribute name="jvmargs" required="NOTDEFINED">
          <description>
          Set the command line arguments for the JVM.
        </description>
        </attribute>
        <attribute name="loaderconfig" required="NOTDEFINED">
          <description>
          A loader configuration to send to stylebook; optional.
        </description>
        </attribute>
        <attribute name="maxmemory" required="NOTDEFINED">
          <description>
          Corresponds to -mx or -Xmx depending on VM version.
        </description>
        </attribute>
        <attribute name="newenvironment" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          File the output of the process is redirected to.
        </description>
        </attribute>
        <attribute name="skindirectory" required="yes">
          <description>
          the directory that contains the stylebook skin;
 required.
        </description>
        </attribute>
        <attribute name="targetdirectory" required="yes">
          <description>
          the destination directory where the documentation is generated;
 required.
        </description>
        </attribute>
        <attribute name="timeout" required="NOTDEFINED">
          <description>
          Timeout in milliseconds after which the process will be killed.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="env" required="NOTDEFINED">
          <description>
          Adds an environment variable.
 &lt;p&gt;Will be ignored if we are not forking a new VM.
        </description>
        </element>
        <element name="sysproperty" required="NOTDEFINED">
          <description>
          Adds a system property.
        </description>
        </element>
        <element name="arg" required="NOTDEFINED">
          <description>
          Adds a command-line argument.
        </description>
        </element>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Adds a path to the classpath.
        </description>
        </element>
        <element name="jvmarg" required="NOTDEFINED">
          <description>
          Adds a JVM argument.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="tar">
  <description>
    Creates a tar archive.
  </description>
    <structure>
      <attributes>
        <attribute name="basedir" required="no">
          <description>
          This is the base directory to look in for things to tar.
        </description>
        </attribute>
        <attribute name="compression" required="no">
          <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" required="yes">
          <description>
          Set is the name/location of where to create the tar file.
        </description>
        </attribute>
        <attribute name="longfile" required="no">
          <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" required="NOTDEFINED">
          <description>
          Add a new fileset with the option to specify permissions
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="taskdef">
<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" required="yes, unless file or resource have been specified.">
          <description>
          the full class name of the object being defined.
 Required, unless file or resource have
 been specified.
        </description>      
        </attribute>
        <attribute name="classpath" required="no">
          <description>
          Set the classpath to be used when searching for component being defined
        </description>
        </attribute>      
        <attribute name="classpathref" required="no">
          <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" required="no">
          <description>
          Name of the property file  to load
 ant name/classname pairs from.
        </description>      
        </attribute>
        <attribute name="loaderref" required="no">
          <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" required="yes, unless file or resource have been specified.">
          <description>
         The name of the data type.
        </description>
        </attribute>
        <attribute name="resource" required="no">
          <description>
          Name of the property resource to load
 ant name/classname pairs from.
        </description>
        </attribute>
      </attributes>
      <elements>      
        <element name="classpath" required="NOTDEFINED">
          <description>
          Create the classpath to be used when searching for component being defined
        </description>      
        </element>
      </elements>
    </structure>
  </task>
  <task name="telnet">
    <description>
    Automates the telnet protocol.
  </description>
    <structure>
      <attributes>
        <attribute name="initialcr" required="no">
          <description>
          send a carriage return after connecting; optional, defaults to false.
        </description>
        </attribute>
        <attribute name="password" required="only if userid is specified">
          <description>
          Set the the login password to use
 required if &lt;tt&gt;userid&lt;/tt&gt; is set.
        </description>
        </attribute>
        <attribute name="port" required="no">
          <description>
          Set the tcp port to connect to; default is 23.
        </description>
        </attribute>
        <attribute name="server" required="yes">
          <description>
          Set the hostname or address of the remote server.
        </description>
        </attribute>
        <attribute name="timeout" required="no">
          <description>
          set a default timeout in seconds to wait for a response, 
 zero means forever (the default)
        </description>
        </attribute>
        <attribute name="userid" required="only if password is specified">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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">
    <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" required="NOTDEFINED">
          <description>
          destination directory. If null, 
the parent directory is used instead
        </description>
        </attribute>
        <attribute name="prefix" required="NOTDEFINED">
          <description>
          optional prefix string
        </description>
        </attribute>
        <attribute name="property" required="NOTDEFINED">
          <description>
          The property you wish to assign the temporary file to
        </description>
        </attribute>
        <attribute name="suffix" required="NOTDEFINED">
          <description>
          Suffix string for the temp file (optional)
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="touch">
    <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" required="no">
          <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" required="unless a nested fileset element         has been specified.">
          <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" required="no">
          <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" required="NOTDEFINED">
          <description>
          Add a set of files to touch
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="translate">
    <description>
    Translates text embedded in files using Resource Bundle files.
  </description>
    <structure>
      <attributes>
        <attribute name="bundle" required="yes">
          <description>
          Sets Family name of resource bundle; required.
        </description>
        </attribute>
        <attribute name="bundlecountry" required="no">
          <description>
          Sets locale specific country of resource bundle; optional.
        </description>
        </attribute>
        <attribute name="bundleencoding" required="no">
          <description>
          Sets Resource Bundle file encoding scheme; optional.  Defaults to source file
 encoding
        </description>
        </attribute>
        <attribute name="bundlelanguage" required="no">
          <description>
          Sets locale specific language of resource bundle; optional.
        </description>
        </attribute>
        <attribute name="bundlevariant" required="no">
          <description>
          Sets locale specific variant of resource bundle; optional.
        </description>
        </attribute>
        <attribute name="destencoding" required="no">
          <description>
          Sets destination file encoding scheme; optional.  Defaults to source file
 encoding
        </description>
        </attribute>
        <attribute name="endtoken" required="yes">
          <description>
          Sets ending token to identify keys; required.
        </description>
        </attribute>
        <attribute name="forceoverwrite" required="no">
 whether it is newer than the source file as well as the
          <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" required="no">
          <description>
          Sets source file encoding scheme; optional,
 defaults to encoding of local system.
        </description>
        </attribute>
        <attribute name="starttoken" required="yes">
          <description>
          Sets starting token to identify keys; required.
        </description>
        </attribute>
        <attribute name="todir" required="yes">
          <description>
          Sets Destination directory; required.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Adds a set of files to translate as a nested fileset element.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="tstamp">
    <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" required="no">
          <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" required="NOTDEFINED">
          <description>
          create a custom format with the the current prefix.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="typedef">
    <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" required="yes, unless file or resource have      been specified.">
          <description>
          the full class name of the object being defined.
 Required, unless file or resource have
 been specified.
        </description>
        </attribute>
        <attribute name="classpath" required="no">
          <description>
          Set the classpath to be used when searching for component being defined
        </description>
        </attribute>
        <attribute name="classpathref" required="NOTDEFINED">
          <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" required="no">
          <description>
          Name of the property file  to load
 ant name/classname pairs from.
        </description>
        </attribute>
        <attribute name="loaderref" required="no">
          <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" required="yes, unless file or resource have      been specified.">
          <description>
          Name of the property resource to load
 ant name/classname pairs from.
        </description>
        </attribute>
        <attribute name="resource" required="no">
          <description>
          Name of the property resource to load
 ant name/classname pairs from.
        </description>
      
        </attribute>
      </attributes>
      <elements>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Create the classpath to be used when searching for component being defined
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="untar">
    <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the destination directory. File will be unzipped into the
 destination directory.
        </description>
        </attribute>
        <attribute name="overwrite" required="NOTDEFINED">
          <description>
          Should we overwrite files in dest, even if they are newer than
 the corresponding entries in the archive?
        </description>
        </attribute>
        <attribute name="src" required="NOTDEFINED">
          <description>
          Set the path to zip-file.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Add a fileset
        </description>
        </element>
        <element name="patternset" required="NOTDEFINED">
          <description>
          Add a patternset
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="unzip">
    <description>
    Unzip a file.
  </description>
    <structure>
      <attributes>
        <attribute name="dest" required="yes">
          <description>
          Set the destination directory. File will be unzipped into the
 destination directory.
        </description>
        </attribute>
        <attribute name="overwrite" required="no">
          <description>
          Should we overwrite files in dest, even if they are newer than
 the corresponding entries in the archive?
        </description>
        </attribute>
        <attribute name="src" required="yes, if filesets are not used.">
          <description>
          Set the path to zip-file.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="fileset" required="NOTDEFINED">
          <description>
          Add a fileset
        </description>
        </element>
        <element name="patternset" required="NOTDEFINED">
          <description>
          Add a patternset
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="uptodate">
    <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" required="yes">
          <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" required="yes, unless a nested        &lt;srcfiles&gt; element is present.">
          <description>
          The file that must be older than the target file
 if the property is to be set.
        </description>
        </attribute>
        <attribute name="targetfile" required="yes, unless a nested        &lt;mapper&gt; element is present.">
          <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" required="no; defaults to true.">
          <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" required="NOTDEFINED">
          <description>
          Nested &amp;lt;srcfiles&amp;gt; element.
        </description>
        </element>
        <element name="mapper" required="NOTDEFINED">
          <description>
          Defines the FileNameMapper to use (nested mapper element).
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="vajexport">
    <description>
    Exports Java source files, class files and/or resources from the Visual Age 
for Java workspace to the file system. Exports can be specified by giving the 
VAJ project name and package name(s). This works very similar to FileSets.
  </description>
    <structure>
      <attributes>      
        <attribute name="defaultexcludes" required="NOTDEFINED">
          <description>
          Sets whether default exclusions should be used or not; default true.
        </description>      
        </attribute>
        <attribute name="destdir" required="NOTDEFINED">
          <description>
          Set the destination directory into which the selected
 items should be exported; required.
        </description>      
        </attribute>
        <attribute name="excludes" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          optional flag to export the class files; default false.
        </description>      
        </attribute>
        <attribute name="exportdebuginfo" required="NOTDEFINED">
          <description>
          optional flag to export the debug info; default false.
 debug info
        </description>      
        </attribute>
        <attribute name="exportresources" required="NOTDEFINED">
          <description>
          optional flag to export the resource file; default true.
        </description>      
        </attribute>
        <attribute name="exportsources" required="NOTDEFINED">
          <description>
          optional flag to export the Java files; default true.
        </description>      
        </attribute>
        <attribute name="includes" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          if Overwrite is set, files will be overwritten during export
        </description>
        </attribute>      
        <attribute name="remote" required="NOTDEFINED">
          <description>
          Name and port of a remote tool server, optional.
 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" required="NOTDEFINED">
          <description>
          add a name entry on the exclude list
        </description>      
        </element>
        <element name="include" required="NOTDEFINED">
          <description>
          add a name entry on the include list
        </description>      
        </element>
      </elements>
    </structure>
  </task>
  <task name="vajimport">
    <description>
    Import source, class files, and resources to the Visual Age for Java
 workspace.
  </description>
    <structure>
      <attributes>
        <attribute name="defaultexcludes" required="NOTDEFINED">
          <description>
          Sets whether default exclusions should be used or not.
        </description>
        </attribute>
        <attribute name="importclasses" required="NOTDEFINED">
          <description>
          Flag to import .class files; optional, default false.
        </description>
        </attribute>
        <attribute name="importresources" required="NOTDEFINED">
          <description>
          Import resource files (anything that doesn't end in
 .class or .java); optional, default true.
        </description>
        </attribute>
        <attribute name="importsources" required="NOTDEFINED">
          <description>
          Import .java files; optional, default true.
        </description>
        </attribute>
        <attribute name="project" required="NOTDEFINED">
          <description>
          The VisualAge for Java Project name to import into.
        </description>
        </attribute>
        <attribute name="remote" required="NOTDEFINED">
          <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" required="NOTDEFINED">
    <description>
          Adds a set of files (nested fileset attribute).
        </description>
        </element>

      </elements>
    </structure>
  </task>
  <task name="vajload">
    <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Add a project description entry on the project list.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="vssadd">
    <description>
    Performs Add commands to Microsoft Visual SourceSafe.
 Based on the VSS Checkin code by Martin Poeschl
  </description>
    <structure>
      <attributes>
        <attribute name="autoresponse" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the local path.
        </description>
        </attribute>
        <attribute name="login" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set behaviour recursive or non-recursive
        </description>
        </attribute>
        <attribute name="serverpath" required="NOTDEFINED">
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
        </attribute>
        <attribute name="ssdir" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Leave added files writable? Default: false.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="vsscheckin">
    <description>
    Performs CheckIn commands to Microsoft Visual SourceSafe.
  </description>
    <structure>
      <attributes>
        <attribute name="autoresponse" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the local path.
        </description>
        </attribute>
        <attribute name="login" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Flag to tell the task to recurse down the tree;
 optional, default false.
        </description>
        </attribute>
        <attribute name="serverpath" required="NOTDEFINED">
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
        </attribute>
        <attribute name="ssdir" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Leave checked in files writable? Default: false.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="vsscheckout">
    <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
 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;
          <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" required="NOTDEFINED">
 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;
          <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" required="NOTDEFINED">
          <description>
          Set the local path.
        </description>
        </attribute>
        <attribute name="login" required="NOTDEFINED">
          <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" required="NOTDEFINED">

          <description>
          Flag to tell the task to recurse down the tree;
 optional, default false.
        </description>
        </attribute>
        <attribute name="serverpath" required="NOTDEFINED">
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
        </attribute>
        <attribute name="ssdir" required="NOTDEFINED">
          <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" required="NOTDEFINED">
 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;
          <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" required="NOTDEFINED">
          <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">
    <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
        </attribute>
        <attribute name="ssdir" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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">
    <description>
    Creates a new project in Microsoft Visual SourceSafe.
  </description>
    <structure>
      <attributes>
        <attribute name="autoresponse" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Sets whether task should fail if there is an error creating the project;
 optional, default true.
        </description>
        </attribute>
        <attribute name="login" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Sets/clears quiet mode; optional, default false.
        </description>
        </attribute>
        <attribute name="serverpath" required="NOTDEFINED">
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
        </attribute>
        <attribute name="ssdir" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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">
    <description>
    Perform Get commands to Microsoft Visual SourceSafe.
 &lt;p&gt;Note that only one of version, date or label should be specified&lt;/p&gt;
  </description>
    <structure>
      <attributes>
        <attribute name="autoresponse" required="NOTDEFINED">
          <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" required="NOTDEFINED">
 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;
          <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" required="NOTDEFINED">
 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;
          <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" required="NOTDEFINED">
          <description>
          Override the working directory and get to the specified path; optional.
        </description>
        </attribute>
        <attribute name="login" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Flag to suppress output when true ; false by default.
        </description>
        </attribute>
        <attribute name="recursive" required="NOTDEFINED">
          <description>
          Flag to tell the task to recurse down the tree;
 optional, default false.
        </description>
        </attribute>
        <attribute name="serverpath" required="NOTDEFINED">
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
        </attribute>
        <attribute name="ssdir" required="NOTDEFINED">
<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" required="NOTDEFINED">
 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;
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          make fetched files  writable; optional, default false.
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="vsshistory">
    <description>
    Performs History commands to Microsoft Visual SourceSafe.
  </description>
    <structure>
      <attributes>
        <attribute name="dateformat" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the Start Date for the Comparison of two versions; optional.
        </description>
        </attribute>
        <attribute name="fromlabel" required="NOTDEFINED">
          <description>
          Set the Start Label; optional
        </description>
        </attribute>
        <attribute name="login" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the number of days for comparison; 
 optional.
 &lt;p&gt;
 The default value is 2 days. (maybe)
        </description>
        </attribute>
        <attribute name="output" required="NOTDEFINED">
          <description>
          Set the output file name for the history; optional.
        </description>
        </attribute>
        <attribute name="recursive" required="NOTDEFINED">
          <description>
          Flag to tell the task to recurse down the tree;
 optional, default false.
        </description>
        </attribute>
        <attribute name="serverpath" required="NOTDEFINED">
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
        </attribute>
        <attribute name="ssdir" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Specify the output style; optional.
        </description>
        </attribute>
        <attribute name="todate" required="NOTDEFINED">
          <description>
          Set the End Date for the Comparison of two versions; optional.
        </description>
        </attribute>
        <attribute name="tolabel" required="NOTDEFINED">
          <description>
          Set the End Label ; optional
        </description>
        </attribute>
        <attribute name="user" required="NOTDEFINED">
          <description>
          Name the user whose changes we would like to see; optional
        </description>
        </attribute>
        <attribute name="vsspath" required="NOTDEFINED">
          <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">
    <description>
    Performs Label commands to Microsoft Visual SourceSafe.
  </description>
    <structure>
      <attributes>
        <attribute name="autoresponse" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the directory where &lt;code&gt;srssafe.ini&lt;/code&gt; resides; optional.
        </description>
        </attribute>
        <attribute name="ssdir" required="NOTDEFINED">
          <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" required="NOTDEFINED">
        
          <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" required="NOTDEFINED">
          <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">
    <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 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" required="no">
          <description>
          Set the time between each check
        </description>
        </attribute>
        <attribute name="checkeveryunit" required="no">
          <description>
          Set the check every time unit
        </description>
        </attribute>
        <attribute name="maxwait" required="no">
          <description>
          Set the maximum length of time to wait
        </description>
        </attribute>
        <attribute name="maxwaitunit" required="no">
          <description>
          Set the max wait time unit
        </description>
        </attribute>
        <attribute name="timeoutproperty" required="no">
          <description>
          Name the property to set after a timeout.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="and" required="NOTDEFINED">
              <description>
          Add an &amp;lt;and&amp;gt; condition "container".
        </description>
        </element>
        <element name="available" required="NOTDEFINED">
               <description>
          Add an &amp;lt;available&amp;gt; condition.
        </description>
        </element>
        <element name="checksum" required="NOTDEFINED">
          <description>
          Add an &amp;lt;checksum&amp;gt; condition.
        </description>
        </element>
        <element name="contains" required="NOTDEFINED">
          <description>
          Add a &amp;lt;contains&amp;gt; condition.
        </description>
        </element>
        <element name="equals" required="NOTDEFINED">
          <description>
          Add an &amp;lt;equals&amp;gt; condition.
        </description>
        </element>
        <element name="filesmatch" required="NOTDEFINED">
          <description>
          Add a &amp;lt;filesmatch&amp;gt; condition.
        </description>
        </element>
        <element name="http" required="NOTDEFINED">
          <description>
          Add an &amp;lt;http&amp;gt; condition.
        </description>
        </element>
        <element name="isfalse" required="NOTDEFINED">
          <description>
          Add a &amp;lt;isfalse&amp;gt; condition.
        </description>
        </element>
        <element name="isset" required="NOTDEFINED">
          <description>
          Add an &amp;lt;isset&amp;gt; condition.
        </description>
        </element>
        <element name="istrue" required="NOTDEFINED">
          <description>
          Add a &amp;lt;istrue&amp;gt; condition.
        </description>
        </element>
        <element name="not" required="NOTDEFINED">
          <description>
          Add an &amp;lt;not&amp;gt; condition "container".
        </description>
        </element>
        <element name="or" required="NOTDEFINED">
          <description>
          Add an &amp;lt;or&amp;gt; condition "container".
        </description>
        </element>
        <element name="os" required="NOTDEFINED">
          <description>
          Add an &amp;lt;os&amp;gt; condition.
        </description>
        </element>
        <element name="socket" required="NOTDEFINED">
          <description>
          Add a &amp;lt;socket&amp;gt; condition.
        </description>
        </element>
        <element name="uptodate" required="NOTDEFINED">
          <description>
          Add an &amp;lt;uptodate&amp;gt; condition.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="war">
    <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" required="no">
          <description>
          Directory from which to archive files; optional.
        </description>
        </attribute>
        <attribute name="compress" required="no">
          <description>
          Whether we want to compress the files or only store them;
 optional, default=true;
        </description>
        </attribute>
        <attribute name="destfile" required="yes">
          <description>
          The file to create; required.
        </description>
        </attribute>
        <attribute name="duplicate" required="no">
          <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" required="no">
          <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" required="no">
          <description>
          If true, emulate Sun's jar utility by not adding parent directories;
 optional, defaults to false.
        </description>
        </attribute>
        <attribute name="index" required="NOTDEFINED">
          <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" required="no">
          <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" required="no">
          <description>
          If true, updates an existing file, otherwise overwrite
 any existing one; optional defaults to false.
        </description>
        </attribute>
        <attribute name="webxml" required="yes, unless update is set to true">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          add files under WEB-INF/classes
        </description>
        </element>
        <element name="manifest" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Adds a set of files.
        </description>
        </element>
        <element name="lib" required="NOTDEFINED">
          <description>
          add files under WEB-INF/lib/
        </description>
        </element>
        <element name="metainf" required="NOTDEFINED">
          <description>
          Adds a zipfileset to include in the META-INF directory.
        </description>
        </element>
        <element name="webinf" required="NOTDEFINED">
          <description>
          files to add under WEB-INF;
        </description>
        </element>
        <element name="zipgroupfileset" required="NOTDEFINED">
          <description>
          Adds a group of zip files.
        </description>
        </element>
        <element name="zipfileset" required="NOTDEFINED">
          <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">
    <description>
    Precompiles JSP's using WebLogic's JSP compiler (weblogic.jspc).
  </description>
    <structure>
      <attributes>
        <attribute name="classpath" required="yes">
          <description>
          Set the classpath to be used for this compilation.
        </description>
        </attribute>
        <attribute name="dest" required="yes">
          <description>
          Root of destination directory, what you have set as WorkingDir in the weblogic 
properties.
        </description>
        </attribute>
        <attribute name="package" required="yes">
          <description>
          Set the package under which the compiled classes go
        </description>
        </attribute>
        <attribute name="src" required="yes">
          <description>
          Root of source tree for JSP, ie, the document root for your weblogic server.
        </description>
        </attribute>
      </attributes>
      <elements>      
        <element name="classpath" required="NOTDEFINED">
          <description>
          Maybe creates a nested classpath element.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="wlrun">
    <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" required="NOTDEFINED">
          <description>
          Additional argument string passed to the Weblogic instance;
 optional.
        </description>
        </attribute>
        <attribute name="beahome" required="NOTDEFINED">
          <description>
          The location of the BEA Home; implicitly
 selects Weblogic 6.0; optional.
        </description>
        </attribute>
        <attribute name="classpath" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the Domain to run in; required for WL6.0
        </description>
        </attribute>
        <attribute name="home" required="NOTDEFINED">
          <description>
          The location where weblogic lives.
 Required. This is the absolute location, not relative to
  BEA home.
        </description>
        </attribute>
        <attribute name="jvmargs" required="NOTDEFINED">
          <description>
          Set the additional arguments to pass to the weblogic JVM
        </description>
        </attribute>
        <attribute name="name" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <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" required="NOTDEFINED">
          <description>
          Set the management password of the server;
 optional and only applicable to WL6.0.
        </description>
        </attribute>
        <attribute name="policy" required="NOTDEFINED">
          <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" required="NOTDEFINED">
 used to control the weblogic instance;
          <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" required="NOTDEFINED">
          <description>
          Set the management username to run the server;
 optional and only applicable to WL6.0.
        </description>
        </attribute>
        <attribute name="weblogicmainclass" required="NOTDEFINED">
          <description>
          name of the main class for weblogic; optional.
        </description>
        </attribute>
        <attribute name="wlclasspath" required="NOTDEFINED">
 optional, and only applicable to WL4.5.1
          <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" required="NOTDEFINED">
          <description>
          Add the classpath for the user classes
        </description>
        </element>
        <element name="wlclasspath" required="NOTDEFINED">
          <description>
          Get the classpath to the weblogic classpaths
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="wlstop">
    <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" required="NOTDEFINED">
          <description>
          The location of the BEA Home; implicitly
 selects Weblogic 6.0 shutdown; optional.
        </description>
        </attribute>
        <attribute name="classpath" required="NOTDEFINED">
          <description>
          The classpath to be used with the Java Virtual Machine that runs the Weblogic
 Shutdown command;
        </description>
        </attribute>
        <attribute name="delay" required="NOTDEFINED">
          <description>
          Set the delay (in seconds) before shutting down the server;
 optional.
        </description>
        </attribute>
        <attribute name="password" required="NOTDEFINED">
          <description>
          The password for the account specified in the
 user parameter; required
        </description>
        </attribute>
        <attribute name="url" required="NOTDEFINED">
          <description>
          Set the URL to which the weblogic server is listening
 for T3 connections; required.
        </description>
        </attribute>
        <attribute name="user" required="NOTDEFINED">
          <description>
          The username of the account which will be used to shutdown the server;
 required.
        </description>
        </attribute>
      </attributes>
      <elements>
        <element name="classpath" required="NOTDEFINED">
          <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">
    <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" required="NOTDEFINED">
          <description>
          Name of the file to generate. Required
        </description>
        </attribute>
        <attribute name="extraoptions" required="NOTDEFINED">
          <description>
          Any extra WSDL.EXE options which aren't explicitly
  supported by the ant wrapper task; optional
        </description>
        </attribute>
        <attribute name="failonerror" required="NOTDEFINED">
          <description>
          Should failure halt the build? optional, default=true
        </description>
        </attribute>
        <attribute name="language" required="NOTDEFINED">
          <description>
          set the language; one of "CS", "JS", or "VB"
 optional, default is CS for C# source
        </description>
        </attribute>
        <attribute name="namespace" required="NOTDEFINED">
          <description>
          namespace to place  the source in.
 optional; default ""
        </description>
        </attribute>
        <attribute name="server" required="NOTDEFINED">
          <description>
          flag to enable server side code generation;
 optional, default=false
        </description>
        </attribute>
        <attribute name="srcfile" required="NOTDEFINED">
          <description>
          The local WSDL file to parse; either url or srcFile is required.
        </description>
        </attribute>
        <attribute name="url" required="NOTDEFINED">
          <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">
    <description>
    Loads property values from a valid XML file,
 generating the property names from the file's element and attribute names.
  </description>
    <structure>
      <attributes>
        <attribute name="collapseattributes" required="no, default is false.">
          <description>
          flag to treat attributes as nested elements;
 optional, default false
        </description>
        </attribute>
        <attribute name="file" required="yes">
          <description>
          The XML file to parse; required.
        </description>
        </attribute>
        <attribute name="keeproot" required="no, default is true.">
 first value in the property name; optional, 
          <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" required="no">
          <description>
          the prefix to prepend to each property
        </description>
        </attribute>
        <attribute name="validate" required="no, default is false.">
          <description>
          flag to validate the XML file; optional, default false
        </description>
        </attribute>
      </attributes>
      <elements>
    </elements>
    </structure>
  </task>
  <task name="xmlvalidate">
    <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" required="no">
          <description>
          Specify the class name of the SAX parser to be used. (optional)
        </description>
        </attribute>
        <attribute name="classpath" required="NOTDEFINED">
          <description>
          Specify the classpath to be searched to load the parser (optional)
        </description>
        </attribute>
        <attribute name="classpathref" required="no">
          <description>
          Where to find the parser class; optional.
        </description>
        </attribute>
        <attribute name="failonerror" required="no">
 optional, default=true
 &lt;p&gt;

          <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" required="no">
          <description>
          specify the file to be checked; optional.
        </description>
        </attribute>
        <attribute name="lenient" required="no">
          <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" required="no">
          <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" required="NOTDEFINED">
          <description>
          add an XMLCatalog as a nested element; optional.
        </description>
        </element>
        <element name="fileset" required="NOTDEFINED">
          <description>
          specify a set of file to be checked
        </description>
        </element>
        <element name="classpath" required="NOTDEFINED">
          <description>
        </description>
        </element>
        <element name="dtd" required="NOTDEFINED">
          <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">
    <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" required="no">
          <description>
          Set the base directory; 
 optional, default is the project's basedir.
        </description>
        </attribute>
        <attribute name="classpath" required="no">
          <description>
          Set the optional classpath to the XSL processor
        </description>
        </attribute>
        <attribute name="classpathref" required="no">
          <description>
          Set the reference to an optional classpath to the XSL processor
        </description>
        </attribute>
        <attribute name="destdir" required="yes, unless in and out have been        specified.">
          <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" required="no">
          <description>
          Set the desired file extension to be used for the target;
 optional, default is html.
        </description>
        </attribute>
        <attribute name="force" required="no; default is false">
          <description>
          Set whether to check dependencies, or always generate;
 optional, default is false.
        </description>
        </attribute>
        <attribute name="in" required="no">
          <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" required="no">
          <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" required="no">
          <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" required="no">
          <description>
          Whether to style all files in the included directories as well;
 optional, default is true.
        </description>
        </attribute>
        <attribute name="style" required="yes">
          <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" required="NOTDEFINED">
          <description>
          Add the catalog to our internal catalog
        </description>
        </element>
        <element name="classpath" required="NOTDEFINED">
          <description>
          Set the optional classpath to the XSL processor
        </description>
        </element>
        <element name="outputproperty" required="NOTDEFINED">
          <description>
          Create an instance of an output property to be configured.
        </description>
        </element>
        <element name="param" required="NOTDEFINED">
          <description>
          Create an instance of an XSL parameter for configuration by Ant.
        </description>
        </element>
      </elements>
    </structure>
  </task>
  <task name="zip">
    <description>
    Create a Zip file.
  </description>
    <structure>
      <attributes>
        <attribute name="basedir" required="no">
          <description>
          Directory from which to archive files; optional.
        </description>
        </attribute>
        <attribute name="compress" required="no">
          <description>
          Whether we want to compress the files or only store them;
 optional, default=true;
        </description>
        </attribute>
        <attribute name="destfile" required="yes">
          <description>
          The file to create; required.
        </description>
        </attribute>
        <attribute name="duplicate" required="no">
          <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" required="no">
          <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" required="no">
		<description>
          If true, emulate Sun's jar utility by not adding parent directories; defaults to false.
        </description>
        </attribute>
        <attribute name="update" required="no">
          <description>
          If true, updates an existing file, otherwise overwrite
 any existing one; defaults to false.
        </description>
        </attribute>
        <attribute name="whenempty" required="no">
          <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" required="NOTDEFINED">
          <description>
          Adds a set of files.
        </description>
        </element>
        <element name="zipgroupfileset" required="NOTDEFINED">
          <description>
          Adds a group of zip files.
        </description>
        </element>
        <element name="zipfileset" required="NOTDEFINED">
        <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">
    <description>
		Ant target that is executable and may depend on other targets. 
	</description>
	<structure>
		<attributes>
			<attribute name="name" required="yes">
				
				<description>the name of the target.</description>
			</attribute>
			<attribute name="depends" required="no">
				
				<description>a comma-separated list of names of targets on which this target depends.</description>
			</attribute>
			<attribute name="if" required="no">
				
				<description>the name of the property that must be set in order for this target to execute.</description>
			</attribute>
			<attribute name="unless" required="no">
				
				<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">
				
				<description>a short description of this target's function.</description>
			</attribute>
		</attributes>
	</structure>
  </task>
  <task name="macrodef">
    <description>
		This defines a new task using a sequential nested task as a template. Nested elements attribute and element are used to specify attributes and elements of the new task. These get substituted into the sequential task when the new task is run. 
		Since Ant 1.6.0.
	</description>
	<structure>
		<attributes>
			<attribute name="name" required="yes">
				
				<description>The name of the new definition.</description>
			</attribute>
			<attribute name="uri" required="no">
				
				<description>The uri that this definition should live in.</description>
			</attribute>
		</attributes>
		
		<elements>
        <element name="attribute" required="NOTDEFINED">
          <description>
          This is used to specify attributes of the new task. The values of the attributes get substituted into the templated task. The attributes will be required attributes unless a default value has been set. 
This attribute is placed in the body of the templated task using a notation similar to the ant property notation - @{attribute name}. (May be remembered as "put the substitution AT this location"). The escape sequence @@{x} is used to allow @{x} to be placed in the text without substitution of x. This corresponds to the $${x} escape sequence for properties 
        </description>
        </element>
        <element name="element" required="NOTDEFINED">
          <description>
          This is used to specify nested elements of the new task. The contents of the nested elements of the task instance are placed in the templated task at the tag name.
        </description>
        </element>
		</elements>
	</structure>
  </task>
  <task name="import">
    <description>
		Imports another build file into the current project. 
		Since Ant 1.6.0.
	</description>
	<structure>
		<attributes>
			<attribute name="file" required="yes">
				<description>The file to import.</description>
			</attribute>
			<attribute name="optional" required="no">
				<description>If true, do not issue stop the build if the file does not exist. Default is false.</description>
			</attribute>
		</attributes>
	</structure>
  </task>
   <task name="presetdef">
    <description>
	The preset definition generates a new definition based on a current definition with some attributes or elements preset. 
		Since Ant 1.6.0.
	</description>
	<structure>
		<attributes>
			<attribute name="name" required="yes">
				<description>The name of the new definition.</description>
			</attribute>
			<attribute name="uri" required="no">
				<description>The uri that this definition should live in.</description>
			</attribute>
		</attributes>
	</structure>
  </task>
<task name="scp">
    <description>
	Copies a file or FileSet to or from a remote machine running SSH daemon. FileSet only works for copying files from the local machine to a remote machine.
	Note: This task depends on external libraries not included in the Ant distribution
		Since Ant 1.6.
	</description>
	<structure>
		<attributes>
			<attribute name="file" required="yes">
				<description>The file to copy. This can be a local path or a remote path of the form user[:password]@host:/directory/path. :password can be ommitted if you use key based authentication or specify the password attribute. The way remote path is recognized is whether it contains @ character or not. This will not work if your localPath contains @ character.</description>
			</attribute>
			<attribute name="localFile" required="no">
				<description>This is an alternative to the file attribute. But this must always point to a local file. The reason this was added was that when you give file attribute it is treated as remote if it contains @ character. This character can exist also in local paths. since Ant 1.6.2</description>
			</attribute>
		    <attribute name="remoteFile" required="no">
				<description>This is an alternative to the file attribute. But this must always point to a remote file. since Ant 1.6.2</description>
			</attribute>
			<attribute name="todir" required="yes">
				<description>The directory to copy to. This can be a local path or a remote path of the form user[:password]@host:/directory/path. :password can be ommitted if you use key based authentication or specify the password attribute. The way remote path is recognized is whether it contains @ character or not. This will not work if your localPath contains @ character.</description>
			</attribute>
			<attribute name="localTodir" required="no">
				<description>This is an alternative to the todir attribute. But this must always point to a local directory. The reason this was added was that when you give todir attribute it is treated as remote if it contains @ character. This character can exist also in local paths. since Ant 1.6.2</description>
			</attribute>
			<attribute name="localTofile" required="no">
				<description>Changes the file name to the given name while receiving it, only useful if receiving a single file. since Ant 1.6.2</description>
			</attribute>
			<attribute name="remoteTodir" required="no">
				<description>This is an alternative to the todir attribute. But this must always point to a remote directory. since Ant 1.6.2</description>
			</attribute>
			<attribute name="remoteTofile" required="no">
				<description>Changes the file name to the given name while sending it, only useful if sending a single file. since Ant 1.6.2</description>
			</attribute>
			<attribute name="port" required="no">
				<description>The port to connect to on the remote host..</description>
			</attribute>
			<attribute name="trust" required="no">
				<description>This trusts all unknown hosts if set to yes/true.
Note If you set this to false (the default), the host you connect to must be listed in your knownhosts file, this also implies that the file exists.</description>
			</attribute>
			<attribute name="knownhosts" required="no">
				<description>This sets the known hosts file to use to validate the identity of the remote host. This must be a SSH2 format file. SSH1 format is not supported.</description>
			</attribute>
			<attribute name="failonerror" required="no">
				<description>Whether to halt the build if the transfer fails. </description>
			</attribute>
			<attribute name="password" required="no">
				<description>The password.</description>
			</attribute>
			<attribute name="keyfile" required="no">
				<description>Location of the file holding the private key.</description>
			</attribute>
			<attribute name="passphrase" required="no">
				<description>Passphrase for your private key.</description>
			</attribute>
			<attribute name="verbose" required="no">
				<description>Determines whether SCP outputs verbosely to the user. Currently this means outputting dots/stars showing the progress of a file transfer. Since Ant 1.6.2.</description>
			</attribute>
		</attributes>
	</structure>
  </task>
<task name="sshexec">
    <description>
	Runs a command on a remote machine running SSH daemon. 
Note: This task depends on external libraries not included in the Ant distribution. This task has been tested with jsch-0.1.7 to jsch-0.1.9 and won't work with versions of jsch earlier than 0.1.7.
		Since Ant 1.6.
	</description>
	<structure>
		<attributes>
			<attribute name="host" required="yes">
				<description>The hostname or IP address of the remote host to which you wish to connect.</description>
			</attribute>
			<attribute name="username" required="yes">
				<description>The username on the remote host to which you are connecting.</description>
			</attribute>
		    <attribute name="command" required="yes">
				<description>The command to run on the remote host.</description>
			</attribute>
			<attribute name="port" required="no">
				<description>The port to connect to on the remote host. Defaults to 22</description>
			</attribute>
			<attribute name="trust" required="no">
				<description>This trusts all unknown hosts if set to yes/true.
Note If you set this to false (the default), the host you connect to must be listed in your knownhosts file, this also implies that the file exists.</description>
			</attribute>
			<attribute name="knownhosts" required="no">
				<description>This sets the known hosts file to use to validate the identity of the remote host. This must be a SSH2 format file. SSH1 format is not supported. Defaults to ${user.home}/.ssh/known_hosts.</description>
			</attribute>
			<attribute name="failonerror" required="no">
				<description>Whether to halt the build if the command does not complete successfully. Defaults to true</description>
			</attribute>
			<attribute name="password" required="no">
				<description>The password.</description>
			</attribute>
			<attribute name="keyfile" required="no">
				<description>Location of the file holding the private key.</description>
			</attribute>
			<attribute name="passphrase" required="no">
				<description>Passphrase for your private key. Defaults to the empty string</description>
			</attribute>
			<attribute name="output" required="no">
				<description>Name of a file to which to write the output.</description>
			</attribute>
			<attribute name="append" required="no">
				<description>Whether output file should be appended to or overwritten. Defaults to false, meaning overwrite any existing file.</description>
			</attribute>
			<attribute name="outputproperty" required="no">
				<description>The name of a property in which the output of the command should be stored.</description>
			</attribute>
			<attribute name="timeout" required="no">
				<description>Stop the command if it doesn't finish within the specified time (given in milliseconds). Defaults to 0 which means &quot;wait forever&quot;.</description>
			</attribute>
		</attributes>
	</structure>
  </task>
<task name="jjdoc">
    <description>
	Invokes the JJDoc preprocessor for the JavaCC compiler compiler. It takes a JavaCC parser specification and produces documentation for the BNF grammar. It can operate in three modes, determined by command line options. 
To use the jjdoc task, set the target attribute to the name of the JavaCC grammar file to process. You also need to specify the directory containing the JavaCC installation using the javacchome attribute, so that ant can find the JavaCC classes. Optionally, you can also set the outputfile to write the generated BNF documentation file to a specific (directory and) file. Otherwise jjdoc writes the generated BNF documentation file as the JavaCC grammar file with a suffix .txt or .html.
This task only invokes JJDoc if the grammar file is newer than the generated BNF documentation file.
		Since Ant 1.6.
	</description>
	<structure>
		<attributes>
			<attribute name="target" required="yes">
				<description>The javacc grammar file to process.</description>
			</attribute>
			<attribute name="javacchome" required="yes">
				<description>The directory containing the JavaCC distribution.</description>
			</attribute>
		    <attribute name="outputfile" required="no">
				<description>The file to write the generated BNF documentation file to. If not set, the file is written with the same name as the JavaCC grammar file but with a the suffix .html or .txt.</description>
			</attribute>
			<attribute name="text" required="no">
				<description>Sets the TEXT BNF documentation option. This is a boolean option.</description>
			</attribute>
			<attribute name="onetable" required="no">
				<description>Sets the ONE_TABLE BNF documentation option. This is a boolean option.</description>
			</attribute>
		</attributes>
	</structure>
  </task>
<task name="chgrp">
    <description>
	Changes the group of a file or all files inside specified directories. Right now it has effect only under Unix. The group atribute is equivalent to the coresponding argument for the chgrp command.
FileSets, DirSets or FileLists can be specified using nested &amp;lt;fileset&amp;gt;, &amp;lt;dirset&amp;gt; and &amp;lt;filelist&amp;gt; elements.
		Since Ant 1.6.
	</description>
	<structure>
		<attributes>
			<attribute name="file" required="yes">
				<description>The file or directory of which the group must be changed. Required if nested &amp;lt;fileset/list&amp;gt; elements not provided</description>
			</attribute>
			<attribute name="group" required="yes">
				<description>The new group.</description>
			</attribute>
		    <attribute name="parallel" required="no">
				<description>Process all specified files using a single chgrp command. Defaults to true.</description>
			</attribute>
			<attribute name="type" required="no">
				<description>One of file, dir or both. If set to file, only the group of plain files are going to be changed. If set to dir, only the directories are considered.
Note: The type attribute does not apply to nested dirsets - dirsets always implicitly assume type to be dir. Defaults to file</description>
			</attribute>
			<attribute name="maxparallel" required="no">
				<description>Limit the amount of parallelism by passing at most this many sourcefiles at once. Set it to &amp;lt;= 0 for unlimited. Defaults to unlimited.</description>
			</attribute>
			<attribute name="verbose" required="no">
				<description>Whether to print a summary after execution or not. Defaults to false.</description>
			</attribute>
		</attributes>
	</structure>
  </task>
	<task name="chown">
    <description>
	Changes the owner of a file or all files inside specified directories. Right now it has effect only under Unix. The owner atribute is equivalent to the coresponding argument for the chown command.
FileSets, DirSets or FileLists can be specified using nested &amp;lt;fileset&amp;gt;, &amp;lt;dirset&amp;gt; and &amp;lt;filelist&amp;gt; elements.
		Since Ant 1.6.
	</description>
	<structure>
		<attributes>
			<attribute name="file" required="yes">
				<description>The file or directory of which the owner must be changed. Required if nested &amp;lt;fileset/list&amp;gt; elements not provided</description>
			</attribute>
			<attribute name="owner" required="yes">
				<description>The new owner.</description>
			</attribute>
		    <attribute name="parallel" required="no">
				<description>Process all specified files using a single chgrp command. Defaults to true.</description>
			</attribute>
			<attribute name="type" required="no">
				<description>One of file, dir or both. If set to file, only the owner of plain files are going to be changed. If set to dir, only the directories are considered.
Note: The type attribute does not apply to nested dirsets - dirsets always implicitly assume type to be dir. Defaults to file</description>
			</attribute>
			<attribute name="maxparallel" required="no">
				<description>Limit the amount of parallelism by passing at most this many sourcefiles at once. Set it to &amp;lt;= 0 for unlimited. Defaults to unlimited.</description>
			</attribute>
			<attribute name="verbose" required="no">
				<description>Whether to print a summary after execution or not. Defaults to false.</description>
			</attribute>
		</attributes>
	</structure>
  </task>
<task name="attrib">
    <description>
	Changes the attributes of a file or all files inside specified directories. Right now it has effect only under Windows. Each of the 4 possible permissions has its own attribute, matching the arguments for the attrib command.
FileSets, DirSets or FileLists can be specified using nested &amp;lt;fileset&amp;gt;, &amp;lt;dirset&amp;gt; and &amp;lt;filelist&amp;gt; elements.
		Since Ant 1.6.
	</description>
	<structure>
		<attributes>
			<attribute name="file" required="yes">
				<description>The file or directory of which the permissions must be changed. Required if nested &amp;lt;fileset/list&amp;gt; elements not provided</description>
			</attribute>
			<attribute name="readonly" required="yes">
				<description>The readonly permission</description>
			</attribute>
		    <attribute name="archive" required="no">
				<description>The archive permission.</description>
			</attribute>
		    <attribute name="system" required="no">
				<description>The system permission.</description>
			</attribute>
			<attribute name="hidden" required="no">
				<description>The hidden permission.</description>
			</attribute>
			<attribute name="type" required="no">
				<description>One of file, dir or both. If set to file, only the permissions of plain files are going to be changed. If set to dir, only the directories are considered.
Note: The type attribute does not apply to nested dirsets - dirsets always implicitly assume type to be dir.</description>
			</attribute>
			<attribute name="verbose" required="no">
				<description>Whether to print a summary after execution or not. Defaults to false.</description>
			</attribute>
		</attributes>
	</structure>
  </task>
 
</tasks>
