<?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>
		<element name="propertyset" required="NOTDEFINED">
          <description>
          You can specify a set of properties to be copied into the new project with propertysets.
        </description>
        </element>
		<element name="target" required="NOTDEFINED">
          <description>
          You can specify multiple targets using nested &amp;lt;target&amp;gt; elements instead of using the target attribute. These will be executed as if Ant had been invoked with a single target whose dependencies are the targets so specified, in the order specified.
        </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>
		<attribute name="else" required="no">
          <description>
          The value to set the property to if the condition evaluates to false. By default the property will remain unset. Since Ant 1.6.3.
        </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>
