<?xml version="1.0" encoding="UTF-8"?><!--
     Copyright (c) 2005, 2007 IBM Corporation and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
     which accompanies this distribution, and is available at
     http://www.eclipse.org/legal/epl-v10.html
    
     Contributors:
         IBM Corporation - initial API and implementation
 -->

<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>
   Executes a Java class within the running (Ant) VM or forks another VM if specified.
  </description>
    <structure>
      <attributes>
        <attribute name="append" required="no">
          <description>
         Whether output and error files should be appended to or overwritten. Defaults to false.
        </description>
        </attribute>
        <attribute name="classname" required="either jar or classname">
          <description>
           	The Java class to execute.
        </description>
        </attribute>
        <attribute name="classpath" required="no">
          <description>
          The classpath to use.
        </description>
        </attribute>
        <attribute name="classpathref" required="no">
          <description>
           	The classpath to use, given as reference to a PATH defined elsewhere.
        </description>
        </attribute>
        <attribute name="clonevm" required="no">
          <description>
           	If set to true, then all system properties and the bootclasspath of the forked Java Virtual Machine will be the same as those of the Java VM running Ant. Default is false (ignored if fork is disabled). Since Ant 1.7.0
        </description>
        </attribute>
        <attribute name="dir" required="no">
          <description>
          The directory to invoke the VM in (ignored if fork is disabled).
        </description>
        </attribute>
        <attribute name="failonerror" required="no">
          <description>
          Stop the buildprocess if the command exits with a returncode other than 0. Default is false.
        </description>
        </attribute>
        <attribute name="fork" required="no">
          <description>
          If enabled triggers the class execution in another VM (disabled by default)
        </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 (must have a Main-Class entry in the manifest). Fork must be set to true if this option is selected.
        </description>
        </attribute>
        <attribute name="jvm" required="no">
          <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="jvmargs" required="no">
          <description>
          The arguments to pass to the forked VM (ignored if fork is disabled). Deprecated, use nested jvmarg elements instead.
        </description>
        </attribute>
        <attribute name="maxmemory" required="no">
          <description>
          Maximum amount of memory to allocate to the forked VM (ignored if fork is disabled)
        </description>
        </attribute>
        <attribute name="newenvironment" required="no">
          <description>
          Do not propagate old environment when new environment variables are specified. Default is false (ignored if fork is disabled).
        </description>
        </attribute>
        <attribute name="output" required="no">
          <description>
          Name of a file to which to write the output. If the error stream is not also redirected to a file or property, it will appear in this output.
        </description>
        </attribute>
        <attribute name="timeout" required="no">
          <description>
          Stop the command if it doesn't finish within the specified time (given in milliseconds). It is highly recommended to use this feature only if fork is enabled.
        </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>
