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

<tasks>

  <task name="ant" catgory="control" classname="org.apache.tools.ant.taskdefs.Ant">
    <description>
    Build a sub-project.

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

  &amp;lt;target name=&amp;quot;bar&amp;quot; depends=&amp;quot;init&amp;quot;&amp;gt;
    &amp;lt;echo message=&amp;quot;prop is ${property1} ${foo}&amp;quot; /&amp;gt;
  &amp;lt;/target&amp;gt;
 &lt;/pre&gt;
  </description>
    <structure>
      <attributes>
        <attribute name="antfile"  required="no">
          <description>
          The buildfile to use.
 Defaults to "build.xml". This file is expected to be a filename relative
 to the dir attribute given.
        </description>
      
        </attribute>
      
        <attribute name="dir" required="no">

          <description>
          The directory to use as a base directory for the new Ant project.
 Defaults to the current project's basedir, unless inheritall
 has been set to false, in which case it doesn't have a default
 value. This will override the basedir setting of the called project.
        </description>
      
        </attribute>
      
        <attribute name="inheritall" required="no">

  

          <description>
          If true, pass all properties to the new Ant project.
 Defaults to true.
        </description>
      
        </attribute>
      
        <attribute name="inheritrefs" required="no">
 		<description>
          If true, pass all references to the new Ant project.
 Defaults to false.
        </description>
      
        </attribute>
      
        <attribute name="output"  required="no">
          <description>
          Filename to write the output to.
 This is relative to the value of the dir attribute
 if it has been set or to the base directory of the
 current project otherwise.
        </description>
      
        </attribute>
      
        <attribute name="target" required="no">
        
          <description>
          The target of the new Ant project to execute.
 Defaults to the new project's default target.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="reference" required="NOTDEFINED">
        
          <description>
          Reference element identifying a data type to carry
 over to the new project.
        </description>
      
        </element>

      
        <element name="property" required="NOTDEFINED">
        
          <description>
          Property to pass to the new project.
 The property is passed as a 'user property'
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="antcall">

    <description>
    Call another target in the same project.

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

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="inheritall" required="no">
        
          
        
          <description>
          If true, pass all properties to the new Ant project.
 Defaults to true.
        </description>
      
        </attribute>
      
        <attribute name="inheritrefs" required="no">
        
          
        
          <description>
          If true, pass all references to the new Ant project.
 Defaults to false
        </description>
      
        </attribute>
      
        <attribute name="target" required="yes">
        
          
        
          <description>
          Target to execute, required.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="reference" required="NOTDEFINED">
        
          <description>
          Reference element identifying a data type to carry
 over to the invoked target.
        </description>
      
        </element>

      
        <element name="param" required="NOTDEFINED">
        
          
        
          <description>
          Property to pass to the invoked target.
        </description>
      
        </element>

    
      </elements> 
    </structure>
  </task>



  <task name="antlr">
    <description>
    Invokes the ANTLR Translator generator on a grammar file.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="debug" required="no">

          <description>
          Sets a flag to enable ParseView debugging
        </description>
      
        </attribute>
      
        <attribute name="diagnostic" required="no">
        
          
        
          <description>
          Sets a flag to emit diagnostic text
        </description>
      
        </attribute>
      
        <attribute name="dir" required="no">
        
          
        
          <description>
          The working directory of the process
        </description>
      
        </attribute>
      
        <attribute name="glib" required="no">
        
          
        
          <description>
          Sets an optional super grammar file.
        </description>
      
        </attribute>
      
        <attribute name="html" required="no">
        
          
        
          <description>
          If true, emit html
        </description>
      
        </attribute>
      
        <attribute name="outputdirectory" required="no">
        
          
        
          <description>
          The directory to write the generated files to.
        </description>
      
        </attribute>
      
        <attribute name="target" required="yes">
        
          
        
          <description>
          The grammar file to process.
        </description>
      
        </attribute>
      
        <attribute name="trace" required="no">
        
          
        
          <description>
          If true, enables all tracing.
        </description>
      
        </attribute>
      
        <attribute name="tracelexer" required="no">
        
          
        
          <description>
          If true, enables lexer tracing.
        </description>
      
        </attribute>
      
        <attribute name="traceparser" required="no">
        
          
        
          <description>
          If true, enables parser tracing.
        </description>
      
        </attribute>
      
        <attribute name="tracetreewalker" required="no">
        
          
        
          <description>
          Sets a flag to allow the user to enable tree walker tracing
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="classpath" required="NOTDEFINED">
        
          <description>
          Adds a classpath to be set
 because a directory might be given for Antlr debug.
        </description>
      
        </element>

      
        <element name="jvmarg" required="NOTDEFINED">
        
          
        
          <description>
          Adds a new JVM argument.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="antstructure">

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

  
    <structure>

    
      <attributes>
      
        <attribute name="output" required="yes">
        
          
        
          <description>
          The output file.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="apply">

  
    
  
    <description>
    Executes a given command, supplying a set of files as arguments.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="append" required="NOTDEFINED">
        
          
        
          <description>
          Whether output should be appended to or overwrite an existing file.
 Defaults to false.
        </description>
      
        </attribute>
      
        <attribute name="dest" required="yes, if you specify a nested mapper">
        
          
        
          <description>
          The directory where target files are to be placed.
        </description>
      
        </attribute>
      
        <attribute name="dir" required="no">
        
          
        
          <description>
          The working directory of the process.
        </description>
      
        </attribute>
      
        <attribute name="executable" required="yes">
        
          
        
          <description>
          The command to execute.
        </description>
      
        </attribute>
      
        <attribute name="failifexecutionfails" required="NOTDEFINED">
        
          
        
          <description>
          Stop the build if program cannot be started. Defaults to true.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" required="no">
        
          
        
          <description>
          Fail if the command exits with a non-zero return code.
        </description>
      
        </attribute>
      
        <attribute name="newenvironment" required="no, default is false">
        
          
        
          <description>
          Do not propagate old environment when new environment variables are specified.
        </description>
      
        </attribute>
      
        <attribute name="os" required="no">
        
          
        
          <description>
          List of operating systems on which the command may be executed.
        </description>
      
        </attribute>
      
        <attribute name="output" required="no">
        
          
        
          <description>
          File the output of the process is redirected to.
        </description>
      
        </attribute>
      
        <attribute name="outputproperty" required="no">
        
          <description>
          Property name whose value should be set to the output of
 the process.
        </description>
      
        </attribute>
      
        <attribute name="parallel" required="no">
        
          
        
          <description>
          If true, run the command only once, appending all files as arguments.
 If false, command will be executed once for every file. Defaults to false.
        </description>
      
        </attribute>
      
        <attribute name="relative" required="no, default is false">
        <description>
          Whether the filenames should be passed on the command line as
 absolute or relative pathnames. Paths are relative to the base
 directory of the corresponding fileset for source files or the
 dest attribute for target files.
        </description>
      
        </attribute>
      
        <attribute name="resultproperty" required="NOTDEFINED">
        <description>
          The name of a property in which the return code of the
 command should be stored. Only of interest if failonerror=false.
        </description>
      
        </attribute>
      
        <attribute name="skipemptyfilesets" required="no, default is false">
        
          

        
          <description>
          If no source files have been found or are newer than their
 corresponding target files, do not run the command.
        </description>
      
        </attribute>
      
        <attribute name="type" required="no, default is file">
        
          
        
          <description>
          Whether the command works only on files, directories or both?
        </description>
      
        </attribute>
      
        <attribute name="vmlauncher" required="no, default is true">
        
          
        
          <description>
          If true, launch new process with VM, otherwise use the OS's shell.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="env" required="NOTDEFINED">
        
          
        
          <description>
          Add an environment variable to the launched process.
        </description>
      
        </element>

      
        <element name="fileset" required="NOTDEFINED">
        
          
        
          <description>
          Source files to operate upon.
        </description>
      
        </element>

      
        <element name="arg" required="NOTDEFINED">
        
          
        
          <description>
          Adds a command-line argument.
        </description>
      
        </element>

      
        <element name="mapper" required="NOTDEFINED">
        
          
        
          <description>
          Mapper to use for mapping source files to target files.
        </description>
      
        </element>

      
        <element name="srcfile" required="NOTDEFINED">
        
          

        
          <description>
          Marker that indicates where the name of the source file should
 be put on the command line.
        </description>
      
        </element>

      
        <element name="targetfile" required="NOTDEFINED">
        
          

        
          <description>
          Marker that indicates where the name of the target file should
 be put on the command line.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="available">

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

  
    <structure>

    
      <attributes>
      
        <attribute name="classname" required="yes">
        
          

        
          <description>
          Set a classname of a class which must be available to set the given 
 property.
        </description>
      
        </attribute>
      
        <attribute name="classpath" required="no">
        
          
        
          <description>
          Set the classpath to be used when searching for classes and resources.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" required="no">
        
          
        
          <description>
          Set the classpath by reference.
        </description>
      
        </attribute>
      
        <attribute name="file" required="">
        
          

        
          <description>
          Set the file which must be present in the file system to set the given
 property.
        </description>
      
        </attribute>
      
        <attribute name="filepath" required="no">
        
          
        
          <description>
          Set the path to use when looking for a file.
        </description>
      
        </attribute>
      
        <attribute name="ignoresystemclasses" required="no">
        
          

        
          <description>
          Set whether the search for classes should ignore the runtime classes and
 just use the given classpath.
        </description>
      
        </attribute>
      
        <attribute name="property" required="yes">
        
          

        
          <description>
          Set the name of the property which will be set if the particular resource
 is available.
        </description>
      
        </attribute>
      
        <attribute name="resource" required="">
        
          
        
          <description>
          Set the name of a Java resource which is required to set the property.
        </description>
      
        </attribute>
      
        <attribute name="type" required="no">
        
          
        
          <description>
          Set what type of file is required - either directory or file.
        </description>
      
        </attribute>
      
        <attribute name="value" required="no">
        
          

        
          <description>
          Set the value to be given to the property if the desired resource is
 available.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Classpath to be used when searching for classes and resources.
        </description>
      
        </element>

      
        <element name="filepath" required="NOTDEFINED">
        
          
        
          <description>
          Path to search for file resources.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="basename">

  
    
  
    <description>
    Sets a property to the base name of a specified file, optionally minus a
 suffix.

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

  
    <structure>

    
      <attributes>
      
        <attribute name="file" required="yes">
        
          
        
          <description>
          File or directory to get base name from.
        </description>
      
        </attribute>
      
        <attribute name="property" required="yes">
        
          
        
          <description>
          Property to set base name to.
        </description>
      
        </attribute>
      
        <attribute name="suffix" required="no">
        
          
        
          <description>
          Optional suffix to remove from base name.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="blgenclient">

  
    
  
    <description>
    Generates a Borland Application Server 4.5 client JAR using as
 input the EJB JAR file.

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

  
    <structure>

    
      <attributes>
      
        <attribute name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Path to use for classpath.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" required="NOTDEFINED">
        
          
        
          <description>
          Reference to existing path, to use as a classpath.
        </description>
      
        </attribute>
      
        <attribute name="clientjar" required="NOTDEFINED">
        
          
        
          <description>
          Client JAR file name.
        </description>
      
        </attribute>
      
        <attribute name="debug" required="NOTDEFINED">
        
          
        
          <description>
          If true, turn on the debug mode for each of the Borland tools launched.
        </description>
      
        </attribute>
      
        <attribute name="ejbjar" required="NOTDEFINED">
        
          
        
          <description>
          EJB JAR file.
        </description>
      
        </attribute>
      
        <attribute name="mode" required="NOTDEFINED">
        
          
        
          <description>
          Command launching mode: java or fork.
        </description>
      
        </attribute>
      
        <attribute name="version" required="NOTDEFINED">
        
          
        
          <description>
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Adds path to the classpath.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="buildnumber">

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

  
    <structure>

    
      <attributes>
      
        <attribute name="file" required="no; defaults to &quot;build.number&quot;">
        
          
        
          <description>
          The file in which the build number is stored. Defaults to
 "build.number" if not specified.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="bunzip2">

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

  
    <structure>

    
      <attributes>
      
        <attribute name="dest" required="NOTDEFINED">
        
          
        
          <description>
          The destination file or directory.
        </description>
      
        </attribute>
      
        <attribute name="src" required="NOTDEFINED">
        
          
        
          <description>
          The file to expand; required.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="bzip2">

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

  
    <structure>

    
      <attributes>
      
        <attribute name="src" required="NOTDEFINED">
        
          
        
          <description>
          the file to compress; required.
        </description>
      
        </attribute>
      
        <attribute name="zipfile" required="NOTDEFINED">
        
          
        
          <description>
          the required destination file.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="cab">

  
    
  
    <description>
    Create a CAB archive.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="basedir" required="yes">
        
          
        
          <description>
          Base directory to look in for files to CAB.
        </description>
      
        </attribute>
      
        <attribute name="cabfile" required="yes">
        
          
        
          <description>
          The name/location of where to create the .cab file.
        </description>
      
        </attribute>
      
        <attribute name="compress" required="no">
        
          
        
          <description>
          If true, compress the files otherwise only store them.
        </description>
      
        </attribute>
      
        <attribute name="options" required="no">
        
          
        
          <description>
          Sets additional cabarc options that are not supported directly.
        </description>
      
        </attribute>
      
        <attribute name="verbose" required="no">
        
          
        
          <description>
          If true, display cabarc output.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="fileset" required="NOTDEFINED">
        
          
        
          <description>
          Adds a set of files to archive.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="cccheckin">

  
    
  
    <description>
    Performs ClearCase checkin.

  </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>
    Performs ClearCase checkout.
  </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>
    Performs Continuus checkin command.
  </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>
    Performs Continuus Checkin Default task command.
  </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>
    Performs Continuus checkout command.
  </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>
    Creates new Continuus ccm task and sets it as the default.
  </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 allows to reconfigure a project, recurcively or not
  </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>
    Performs ClearCase UnCheckout command.

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

  
    <structure>

    
      <attributes>
      
        <attribute name="cleartooldir" 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>
    Performs a ClearCase Update command.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="cleartooldir" required="NOTDEFINED">
        
          
        
          <description>
          Set the directory where the cleartool executable is located.
        </description>
      
        </attribute>
      
        <attribute name="currenttime" required="NOTDEFINED">
        
          
        
          <description>
          If true, modification time should be written as the current time.
 Either currenttime or preservetime can be specified.
        </description>
      
        </attribute>
      
        <attribute name="graphical" required="NOTDEFINED">
        
          
        
          <description>
          If true, displays a graphical dialog during the update.
        </description>
      
        </attribute>
      
        <attribute name="log" required="NOTDEFINED">
        
          

        
          <description>
          Sets the log file where cleartool records
 the status of the command.
        </description>
      
        </attribute>
      
        <attribute name="overwrite" required="NOTDEFINED">
        
          
        
          <description>
          If true, overwrite hijacked files.
        </description>
      
        </attribute>
      
        <attribute name="preservetime" required="NOTDEFINED">
        
          
        
          <description>
          If true, modification time should be preserved from the VOB time.
 Either currenttime or preservetime can be specified.
        </description>
      
        </attribute>
      
        <attribute name="rename" required="NOTDEFINED">
        
          
        
          <description>
          If true, hijacked files are renamed with a .keep extension.
        </description>
      
        </attribute>
      
        <attribute name="viewpath" required="NOTDEFINED">
        
          
        
          <description>
          Set the path to the item in a ClearCase view to operate on.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="checksum">

  
    
  
    <description>
    Used to create or verify file checksums.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="algorithm" required="no">
        
          
        
          <description>
          Specifies the algorithm to be used to compute the checksum.
 Defaults to "MD5". Other popular algorithms like "SHA" may be used as well.
        </description>
      
        </attribute>
      
        <attribute name="file" required="one of either file or      at least one nested fileset element.">
        
          
        
          <description>
          Sets the file for which the checksum is to be calculated.
        </description>
      
        </attribute>
      
        <attribute name="fileext" required="no">
        
          

        
          <description>
          Sets the file extension that is be to used to
 create or identify destination file.
        </description>
      
        </attribute>
      
        <attribute name="forceoverwrite" required="no">
        
          
 whether it is newer than

        
          <description>
          Whether or not to overwrite existing file irrespective of 
 whether it is newer than
 the source file.  Defaults to false.
        </description>
      
        </attribute>
      
        <attribute name="property" required="no">
        
          
        
          <description>
          Sets the property to hold the generated checksum.
        </description>
      
        </attribute>
      
        <attribute name="provider" required="no">
        
          

        
          <description>
          Sets the MessageDigest algorithm provider to be used
 to calculate the checksum.
        </description>
      
        </attribute>
      
        <attribute name="readbuffersize" required="no">
        
          
        
          <description>
          The size of the read buffer to use.
        </description>
      
        </attribute>
      
        <attribute name="verifyproperty" required="no">
        
          
        
          <description>
          Sets the verify property.  This project property holds
 the result of a checksum verification - "true" or "false"
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="fileset" required="NOTDEFINED">
        
          
        
          <description>
          Files to generate checksums for.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="chmod">

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

  
    <structure>

    
      <attributes>
      
        <attribute name="append" required="NOTDEFINED">
        
          
        
          <description>
          Whether output should be appended to or overwrite an existing file.
 Defaults to false.
        </description>
      
        </attribute>
      
        <attribute name="defaultexcludes" required="no">
        
          
        
          <description>
          Sets whether default exclusions should be used or not.
        </description>
      
        </attribute>
      
        <attribute name="dest" required="NOTDEFINED">
        
          
        
          <description>
          The directory where target files are to be placed.
        </description>
      
        </attribute>
      
        <attribute name="dir" required="">
        
          
        
          <description>
          The directory which holds the files whose permissions must be changed.
        </description>
      
        </attribute>
      
        <attribute name="excludes" required="no">
        
          
        
          <description>
          Sets the set of exclude patterns. Patterns may be separated by a comma
 or a space.
        </description>
      
        </attribute>
      
        <attribute name="executable" required="NOTDEFINED">
        
          
        
          <description>
          The command to execute.
        </description>
      
        </attribute>
      
        <attribute name="failifexecutionfails" required="NOTDEFINED">
        
          
        
          <description>
          Stop the build if program cannot be started. Defaults to true.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" required="NOTDEFINED">
        
          
        
          <description>
          Fail if the command exits with a non-zero return code.
        </description>
      
        </attribute>
      
        <attribute name="file" required="exactly one of the two or nested &lt;fileset&gt; elements.">
        
          
        
          <description>
          The file or single directory of which the permissions must be changed.
        </description>
      
        </attribute>
      
        <attribute name="includes" required="no">
        
          
        
          <description>
          Sets the set of include patterns. Patterns may be separated by a comma
 or a space.
        </description>
      
        </attribute>
      
        <attribute name="newenvironment" required="NOTDEFINED">
        
          
        
          <description>
          Do not propagate old environment when new environment variables are specified.
        </description>
      
        </attribute>
      
        <attribute name="os" required="NOTDEFINED">
        
          
        
          <description>
          List of operating systems on which the command may be executed.
        </description>
      
        </attribute>
      
        <attribute name="output" required="NOTDEFINED">
        
          
        
          <description>
          File the output of the process is redirected to.
        </description>
      
        </attribute>
      
        <attribute name="outputproperty" required="NOTDEFINED">
        
          

        
          <description>
          Property name whose value should be set to the output of
 the process.
        </description>
      
        </attribute>
      
        <attribute name="parallel" required="no">
        
          
        
          <description>
          If true, run the command only once, appending all files as arguments.
 If false, command will be executed once for every file. Defaults to false.
        </description>
      
        </attribute>
      
        <attribute name="perm" required="yes">
        
          
        
          <description>
          The new permissions.
        </description>
      
        </attribute>
      
        <attribute name="relative" required="NOTDEFINED">
        
          

        
          <description>
          Whether the filenames should be passed on the command line as
 absolute or relative pathnames. Paths are relative to the base
 directory of the corresponding fileset for source files or the
 dest attribute for target files.
        </description>
      
        </attribute>
      
        <attribute name="resultproperty" required="NOTDEFINED">
        
          

        
          <description>
          The name of a property in which the return code of the
 command should be stored. Only of interest if failonerror=false.
        </description>
      
        </attribute>
      
        <attribute name="skipemptyfilesets" required="NOTDEFINED">
        
          

        
          <description>
          If no source files have been found or are newer than their
 corresponding target files, do not run the command.
        </description>
      
        </attribute>
      
        <attribute name="type" required="no, default is file">
        
          
        
          <description>
          Whether the command works only on files, directories or both?
        </description>
      
        </attribute>
      
        <attribute name="vmlauncher" required="NOTDEFINED">
        
          
        
          <description>
          If true, launch new process with VM, otherwise use the OS's shell.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="env" required="NOTDEFINED">
        
          
        
          <description>
          Add an environment variable to the launched process.
        </description>
      
        </element>

      
        <element name="fileset" required="NOTDEFINED">
        
          
        
          <description>
          Source files to operate upon.
        </description>
      
        </element>

      
        <element name="arg" required="NOTDEFINED">
        
          
        
          <description>
          Adds a command-line argument.
        </description>
      
        </element>

      
        <element name="exclude" required="NOTDEFINED">
        
          
        
          <description>
          Add a name entry on the exclude list.
        </description>
      
        </element>

      
        <element name="include" required="NOTDEFINED">
        
          
        
          <description>
          Add a name entry on the include list.
        </description>
      
        </element>

      
        <element name="mapper" required="NOTDEFINED">
        
          
        
          <description>
          Mapper to use for mapping source files to target files.
        </description>
      
        </element>

      
        <element name="patternset" required="NOTDEFINED">
        
          
        
          <description>
          Add a set of patterns.
        </description>
      
        </element>

      
        <element name="srcfile" required="NOTDEFINED">
        
          

        
          <description>
          Marker that indicates where the name of the source file should
 be put on the command line.
        </description>
      
        </element>

      
        <element name="targetfile" required="NOTDEFINED">
        
          

        
          <description>
          Marker that indicates where the name of the target file should
 be put on the command line.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="concat">

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

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

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="append" required="no">
        
          
        
          <description>
          Sets the behavior when the destination file exists. If set to
 &lt;code&gt;true&lt;/code&gt; the stream data will be appended to the
 existing file, otherwise the existing file will be
 overwritten. Defaults to &lt;code&gt;false&lt;/code&gt;.
        </description>
      
        </attribute>
      
        <attribute name="destfile" required="no     ">
        
          
        
          <description>
          Sets the destination file, or uses the console if not specified.
        </description>
      
        </attribute>
      
        <attribute name="encoding" required="no">
        
          

        
          <description>
          Sets the encoding for the input files, used when displaying the
 data via the console.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="filelist" required="NOTDEFINED">
        
          
        
          <description>
          List of files to concatenate.
        </description>
      
        </element>

      
        <element name="fileset" required="NOTDEFINED">
        
          
        
          <description>
          Set of files to concatenate.
        </description>
      
        </element>

    
      </elements>

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

  
    </structure>


  </task>



  <task name="condition">

  
    
  
    <description>
    Task to set a property conditionally using &amp;lt;uptodate&amp;gt;, &amp;lt;available&amp;gt;,
 and many other supported conditions.

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="property" required="yes">
        
          
        
          <description>
          The name of the property to set. Required.
        </description>
      
        </attribute>
      
        <attribute name="value" required="no">
        
          
        
          <description>
          The value for the property to set, if condition evaluates to true.
 Defaults to "true".
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="and" required="NOTDEFINED">
        
          
        
          <description>
          Add an &amp;lt;and&amp;gt; condition "container".
        </description>
      
        </element>

      
        <element name="available" required="NOTDEFINED">
        
          
        
          <description>
          Add an &amp;lt;available&amp;gt; condition.
        </description>
      
        </element>

      
        <element name="checksum" required="NOTDEFINED">
        
          
        
          <description>
          Add an &amp;lt;checksum&amp;gt; condition.
        </description>
      
        </element>

      
        <element name="contains" required="NOTDEFINED">
        
          
        
          <description>
          Add a &amp;lt;contains&amp;gt; condition.
        </description>
      
        </element>

      
        <element name="equals" required="NOTDEFINED">
        
          
        
          <description>
          Add an &amp;lt;equals&amp;gt; condition.
        </description>
      
        </element>

      
        <element name="filesmatch" required="NOTDEFINED">
        
          
        
          <description>
          Add a &amp;lt;filesmatch&amp;gt; condition.
        </description>
      
        </element>

      
        <element name="http" required="NOTDEFINED">
        
          
        
          <description>
          Add an &amp;lt;http&amp;gt; condition.
        </description>
      
        </element>

      
        <element name="isfalse" required="NOTDEFINED">
        
          
        
          <description>
          Add a &amp;lt;isfalse&amp;gt; condition.
        </description>
      
        </element>

      
        <element name="isset" required="NOTDEFINED">
        
          
        
          <description>
          Add an &amp;lt;isset&amp;gt; condition.
        </description>
      
        </element>

      
        <element name="istrue" required="NOTDEFINED">
        
          
        
          <description>
          Add a &amp;lt;istrue&amp;gt; condition.
        </description>
      
        </element>

      
        <element name="not" required="NOTDEFINED">
        
          
        
          <description>
          Add an &amp;lt;not&amp;gt; condition "container".
        </description>
      
        </element>

      
        <element name="or" required="NOTDEFINED">
        
          
        
          <description>
          Add an &amp;lt;or&amp;gt; condition "container".
        </description>
      
        </element>

      
        <element name="os" required="NOTDEFINED">
        
          
        
          <description>
          Add an &amp;lt;os&amp;gt; condition.
        </description>
      
        </element>

      
        <element name="socket" required="NOTDEFINED">
        
          
        
          <description>
          Add a &amp;lt;socket&amp;gt; condition.
        </description>
      
        </element>

      
        <element name="uptodate" required="NOTDEFINED">
        
          
        
          <description>
          Add an &amp;lt;uptodate&amp;gt; condition.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="copy">

  
    
  
    <description>
    Copies a file or directory to a new file
 or directory.  Files are only copied if the source file is newer
 than the destination file, or when the destination file does not
 exist.  It is possible to explicitly overwrite existing files.&lt;/p&gt;

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

  
    <structure>

    
      <attributes>
      
        <attribute name="encoding" required="NOTDEFINED">
        
          
        
          <description>
          Sets the character encoding
        </description>
      
        </attribute>
      
        <attribute name="failonerror" required="no; defaults to true.">
        
          
        
          <description>
          If false, note errors to the output but keep going.
        </description>
      
        </attribute>
      
        <attribute name="file" required="yes, unless a nested      &lt;fileset&gt; element is used.">
        
          
        
          <description>
          Sets a single source file to copy.
        </description>
      
        </attribute>
      
        <attribute name="filtering" required="no; defaults to false.">
        
          
        
          <description>
          If true, enables filtering.
        </description>
      
        </attribute>
      
        <attribute name="flatten" required="no; defaults to false.">
        
          

        
          <description>
          When copying directory trees, the files can be "flattened"
 into a single directory.  If there are multiple files with
 the same name in the source directory tree, only the first
 file will be copied into the "flattened" directory, unless
 the forceoverwrite attribute is true.
        </description>
      
        </attribute>
      
        <attribute name="includeemptydirs" required="no; defaults to true.">
        
          
        
          <description>
          Used to copy empty directories.
        </description>
      
        </attribute>
      
        <attribute name="overwrite" required="no; defaults to false.">
        
          
        
          <description>
          Overwrite any existing destination file(s).
        </description>
      
        </attribute>
      
        <attribute name="preservelastmodified" required="no; defaults to false.">
        
          
        
          <description>
          Give the copied files the same last modified time as the original files.
        </description>
      
        </attribute>
      
        <attribute name="todir" required="">
        
          
        
          <description>
          Sets the destination directory.
        </description>
      
        </attribute>
      
        <attribute name="tofile" required="with the file        attribute, either tofile or todir can be used.        with nested &lt;fileset&gt; elements, if the set of files        is greater than 1, or if only the dir attribute is        specified in the &lt;fileset&gt;, or if the        file attribute is also specified, then only        todir is allowed.">
        
          
        
          <description>
          Sets the destination file.
        </description>
      
        </attribute>
      
        <attribute name="verbose" required="no; defaults to false.">
        
          
        
          <description>
          Used to force listing of all names of copied files.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="fileset" required="NOTDEFINED">
        
          
        
          <description>
          Adds a set of files to copy.
        </description>
      
        </element>

      
        <element name="filterchain" required="NOTDEFINED">
        
          
        
          <description>
          Adds a FilterChain.
        </description>
      
        </element>

      
        <element name="filterset" required="NOTDEFINED">
        
          
        
          <description>
          Adds a filterset.
        </description>
      
        </element>

      
        <element name="mapper" required="NOTDEFINED">
        
          
        
          <description>
          Defines the mapper to map source to destination files.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="copydir">

  
    
  
    <description>
    Copies a directory.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="dest" required="yes">
        
          
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="filtering" required="no">
        
          
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="flatten" required="no">
        
          
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="forceoverwrite" required="no">
        
          
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="src" required="yes">
        
          
        
          <description>
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="copyfile">

  
    
  
    <description>
    Copies a file.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="dest" required="yes">
        
          
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="filtering" required="no">
        
          
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="forceoverwrite" required="no">
        
          
        
          <description>
        </description>
      
        </attribute>
      
        <attribute name="src" required="yes">
        
          
        
          <description>
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="csc">

  
    
  
    <description>
    Compiles C# source into executables or modules.

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

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="additionalmodules" required="NOTDEFINED">
        
          
        
          <description>
          Semicolon separated list of modules to refer to.
        </description>
      
        </attribute>
      
        <attribute name="debug" required="NOTDEFINED">
        
          
        
          <description>
          set the debug flag on or off.
        </description>
      
        </attribute>
      
        <attribute name="definitions" required="NOTDEFINED">
        
          
        
          <description>
          Semicolon separated list of defined constants.
        </description>
      
        </attribute>
      
        <attribute name="destdir" required="NOTDEFINED">
        
          
        
          <description>
          Set the destination directory of files to be compiled.
        </description>
      
        </attribute>
      
        <attribute name="destfile" required="NOTDEFINED">
        
          
        
          <description>
          Set the name of exe/library to create.
        </description>
      
        </attribute>
      
        <attribute name="docfile" required="NOTDEFINED">
        
          
        
          <description>
          file for generated XML documentation
        </description>
      
        </attribute>
      
        <attribute name="extraoptions" required="NOTDEFINED">
        
          

        
          <description>
          Any extra options which are not explicitly supported
 by this task.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" required="NOTDEFINED">
        
          
        
          <description>
          If true, fail on compilation errors.
        </description>
      
        </attribute>
      
        <attribute name="filealign" required="NOTDEFINED">
        
          
        
          <description>
          Set the file alignment.
 Valid values are 0,512, 1024, 2048, 4096, 8192,
 and 16384, 0 means 'leave to the compiler'
        </description>
      
        </attribute>
      
        <attribute name="fullpaths" required="NOTDEFINED">
        
          
        
          <description>
          If true, print the full path of files on errors.
        </description>
      
        </attribute>
      
        <attribute name="includedefaultreferences" required="NOTDEFINED">
        
          
          <description>
          If true, automatically includes the common assemblies
 in dotnet, and tells the compiler to link in mscore.dll.

  set the automatic reference inclusion flag on or off this flag controls
  the string of references and the /nostdlib option in CSC
        </description>
      
        </attribute>
      
        <attribute name="incremental" required="NOTDEFINED">
        
          
        
          <description>
          set the incremental compilation flag on or off.
        </description>
      
        </attribute>
      
        <attribute name="mainclass" required="NOTDEFINED">
        
          
        
          <description>
          Sets the name of main class for executables.
        </description>
      
        </attribute>
      
        <attribute name="noconfig" required="NOTDEFINED">
        
          

        
          <description>
          A flag that tells the compiler not to read in the compiler 
 settings files 'csc.rsp' in its bin directory and then the 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>
    Examines the output of cvs log and group related changes together.

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

  
    <structure>

    
      <attributes>
      
        <attribute name="daysinpast" required="NOTDEFINED">
        
          
        
          <description>
          Set the number of days worth of log entries to process.
        </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>
          Set the date at which the changelog should stop.
        </description>
      
        </attribute>
      
        <attribute name="start" required="NOTDEFINED">
        
          
        
          <description>
          Set the date at which the changelog should start.
        </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>
    Examines the output of cvs rdiff between two tags.

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="compression" 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>
          Set the output file for the diff.
        </description>
      
        </attribute>
      
        <attribute name="enddate" required="">
        
          
        
          <description>
          Set the end date.
        </description>
      
        </attribute>
      
        <attribute name="endtag" required="exactly one of the two.">
        
          
        
          <description>
          Set the end tag.
        </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>
          Set the start date.
        </description>
      
        </attribute>
      
        <attribute name="starttag" required="exactly one of the two.">
        
          
        
          <description>
          Set the start tag.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="ddcreator">

  
    
  
    <description>
    Builds a serialized deployment descriptor given a text file description of the
 descriptor in the format supported by WebLogic.

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

  
    <structure>

    
      <attributes>
      
        <attribute name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Set the classpath to be used for this compilation.
        </description>
      
        </attribute>
      
        <attribute name="descriptors" required="NOTDEFINED">
        
          

        
          <description>
          Set the directory from where the text descriptions of the deployment descriptors are
 to be read.
        </description>
      
        </attribute>
      
        <attribute name="dest" required="NOTDEFINED">
        
          

        
          <description>
          Set the directory into which the serialized deployment descriptors are to
 be written.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="delete">

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

  
    <structure>

    
      <attributes>
      
        <attribute name="defaultexcludes" required="no">
        
          
        
          <description>
          Sets whether default exclusions should be used or not.
        </description>
      
        </attribute>
      
        <attribute name="dir" required="">
        
          
        
          <description>
          Set the directory from which files are to be deleted
        </description>
      
        </attribute>
      
        <attribute name="excludes" required="no">
        
          
        
          <description>
          Sets the set of exclude patterns. Patterns may be separated by a comma
 or a space.
        </description>
      
        </attribute>
      
        <attribute name="excludesfile" required="no">
        
          
        
          <description>
          Sets the name of the file containing the includes patterns.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" required="no">
        
          
        
          <description>
          If false, note errors but continue.
        </description>
      
        </attribute>
      
        <attribute name="file" required="at least one of the two,       unless a &lt;fileset&gt; is specified.">
        
          
        
          <description>
          Set the name of a single file to be removed.
        </description>
      
        </attribute>
      
        <attribute name="includeemptydirs" required="no">
        
          
        
          <description>
          If true, delete empty directories.
        </description>
      
        </attribute>
      
        <attribute name="includes" required="no">
        
          
        
          <description>
          Sets the set of include patterns. Patterns may be separated by a comma
 or a space.
        </description>
      
        </attribute>
      
        <attribute name="includesfile" required="no">
        
          
        
          <description>
          Sets the name of the file containing the includes patterns.
        </description>
      
        </attribute>
      
        <attribute name="quiet" required="no">
        
          

        
          <description>
          If true and the file does not exist, do not display a diagnostic
 message or modify the exit status to reflect an error.
 This means that if a file or directory cannot be deleted,
 then no error is reported. This setting emulates the
 -f option to the Unix &amp;quot;rm&amp;quot; command.
 Default is false meaning things are &amp;quot;noisy&amp;quot;
        </description>
      
        </attribute>
      
        <attribute name="verbose" required="no">
        
          
        
          <description>
          If true, list all names of deleted files.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="fileset" required="NOTDEFINED">
        
          
        
          <description>
          Adds a set of files to be deleted.
        </description>
      
        </element>

      
        <element name="exclude" required="NOTDEFINED">
        
          
        
          <description>
          add a name entry on the exclude list
        </description>
      
        </element>

      
        <element name="excludesfile" required="NOTDEFINED">
        
          
        
          <description>
          add a name entry on the include files list
        </description>
      
        </element>

      
        <element name="include" required="NOTDEFINED">
        
          
        
          <description>
          add a name entry on the include list
        </description>
      
        </element>

      
        <element name="includesfile" required="NOTDEFINED">
        
          
        
          <description>
          add a name entry on the include files list
        </description>
      
        </element>

      
        <element name="patternset" required="NOTDEFINED">
        
          
        
          <description>
          add a set of patterns
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="deltree">

  
    
  
    <description>
    
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="dir" required="yes">
        
          
        
          <description>
          Set the directory to be deleted
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="depend">

  
    
  
    <description>
    Generates a dependency file for a given set of classes.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="cache" required="no">
        
          
        
          <description>
          Sets the dependency cache file.
        </description>
      
        </attribute>
      
        <attribute name="classpath" required="no">
        
          
        
          <description>
          Set the classpath to be used for this dependency check.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" required="NOTDEFINED">
        
          
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="closure" required="no">
        
          

        
          <description>
          If true, transitive dependencies are followed until the
 closure of the dependency set if reached.
 When not set, the depend task will only follow
 direct dependencies between classes.
        </description>
      
        </attribute>
      
        <attribute name="destdir" required="no">
        
          
        
          <description>
          Set the destination directory where the compiled Java files exist.
        </description>
      
        </attribute>
      
        <attribute name="dump" required="no">
        
          

        
          <description>
          If true, the dependency information will be written
 to the debug level log.
        </description>
      
        </attribute>
      
        <attribute name="srcdir" required="yes">
        
          
        
          <description>
          Set the directories path to find the Java source files.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Adds a classpath to be used for this dependency check.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="dependset">

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

  
    <structure>

    
      <attributes>
    </attributes>

    
      <elements>
      
        <element name="srcfilelist" required="NOTDEFINED">
        
          
        
          <description>
          Add a list of source files.
        </description>
      
        </element>

      
        <element name="srcfileset" required="NOTDEFINED">
        
          
        
          <description>
          Add a set of source files.
        </description>
      
        </element>

      
        <element name="targetfilelist" required="NOTDEFINED">
        
          
        
          <description>
          Add a list of target files.
        </description>
      
        </element>

      
        <element name="targetfileset" required="NOTDEFINED">
        
          
        
          <description>
          Add a set of target files.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="dirname">

  
    
  
    <description>
    Determines the directory name of the specified file.

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

  
    <structure>

    
      <attributes>
      
        <attribute name="file" required="yes">
        
          
        
          <description>
          Path to take the dirname of.
        </description>
      
        </attribute>
      
        <attribute name="property" required="yes">
        
          
        
          <description>
          The name of the property to set.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="ear">

  
    
  
    <description>
    Creates a EAR archive. Based on WAR task
  </description>

  
    <structure>

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

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

    
      <elements>
      
        <element name="archives" required="NOTDEFINED">

          <description>
          Adds zipfileset.
        </description>
      
        </element>

      
        <element name="manifest" required="NOTDEFINED">
        
        
          <description>
          Allows the manifest for the archive file to be provided inline
 in the buildfile rather than in an external file.
        </description>
      
        </element>

      
        <element name="fileset" required="NOTDEFINED">

          <description>
          Adds a set of files.
        </description>
      
        </element>

      
        <element name="metainf" required="NOTDEFINED">

          <description>
          Adds a zipfileset to include in the META-INF directory.
        </description>
      
        </element>

      
        <element name="zipgroupfileset" required="NOTDEFINED">

          <description>
          Adds a group of zip files.
        </description>
      
        </element>

      
        <element name="zipfileset" required="NOTDEFINED">
        
         
        
          <description>
          Adds a set of files that can be read from an archive and be given a prefix/fullpath.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="echo">

    <description>
    Writes a message to the Ant logging facilities.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="append" required="no - default is false.">

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

    
      <elements>
    </elements>

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

  
    </structure>


  </task>



  <task name="echoproperties">

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

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

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

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

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

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="destfile" required="no">

          <description>
          Set a file to store the property output.  If this is never specified,
  then the output will be sent to the Ant log.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" required="no">
        
          

        
          <description>
          If true, the task will fail if an error occurs writing the properties
 file, otherwise errors are just logged.
        </description>
      
        </attribute>
      
        <attribute name="prefix" required="no">
        
          <description>
          If the prefix is set, then only properties which start with this
  prefix string will be recorded.  If this is never set, or it is set
  to an empty string or &lt;tt&gt;null&lt;/tt&gt;, then all properties will be
  recorded. &lt;P&gt;

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

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="ejbc">

    <description>
    Builds EJB support classes using WebLogic's ejbc tool from a directory containing
 a set of deployment descriptors.
  </description>

  
    <structure>

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

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

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="ejbjar">

    <description>
    Provides automated EJB JAR file creation.
 &lt;p&gt;
 Extends the
 MatchingTask class provided in the default ant distribution to provide a
 directory scanning EJB jarfile generator.
 &lt;/p&gt;

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

  
    <structure>

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

    
      <elements>
      
        <element name="borland" required="NOTDEFINED">
        
          
        
          <description>
          Adds a deployment tool for Borland server.
        </description>
      
        </element>

      
        <element name="classpath" required="NOTDEFINED">
         <description>
          Adds to the classpath used to locate the super classes and
 interfaces of the classes that will make up the EJB JAR.
        </description>
      
        </element>

      
        <element name="dtd" required="NOTDEFINED">
          <description>
          Create a DTD location record. This stores the location of a DTD. The
 DTD is identified by its public Id. The location may either be a file
 location or a resource location.
        </description>
      
        </element>

      
        <element name="iplanet" required="NOTDEFINED">
        
          
        
          <description>
          Adds a deployment tool for iPlanet Application Server.
        </description>
      
        </element>

      
        <element name="jboss" required="NOTDEFINED">
        <description>
          Adds a deployment tool for JBoss server.
        </description>
      
        </element>

      
        <element name="jonas" required="NOTDEFINED">
        
          
        
          <description>
          Adds a deployment tool for JOnAS server.
        </description>
      
        </element>

      
        <element name="support" required="NOTDEFINED">
        <description>
          Adds a fileset for support elements.
        </description>
      
        </element>

      
        <element name="weblogic" required="NOTDEFINED">
        <description>
          Adds a deployment tool for Weblogic server.
        </description>
      
        </element>

      
        <element name="weblogictoplink" required="NOTDEFINED">
        <description>
          Adds a deployment tool for Weblogic when using the Toplink
 Object-Relational mapping.
        </description>
      
        </element>

      
        <element name="websphere" required="NOTDEFINED">
      
          <description>
          Adds a deployment tool for Websphere 4.0 server.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="exec">
	<description>
    Executes a given command if the os platform is appropriate.
  </description>

  
    <structure>

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

    
      <elements>
      
        <element name="env" required="NOTDEFINED">
        
          
        
          <description>
          Add an environment variable to the launched process.
        </description>
      
        </element>

      
        <element name="arg" required="NOTDEFINED">
        
          
        
          <description>
          Adds a command-line argument.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="fail">
	<description>
    Exits the active build, giving an additional message
 if available.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="if" required="no">
        
          
        
          <description>
          Only fail if a property of the given name exists in the current project.
        </description>
      
        </attribute>
      
        <attribute name="message" required="no">
        
          
        
          <description>
          A message giving further information on why the build exited.
        </description>
      
        </attribute>
      
        <attribute name="unless" required="no">
        <description>
          Only fail if a property of the given name does not
 exist in the current project.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

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

  
    </structure>


  </task>



  <task name="filter">

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

  
    <structure>

    
      <attributes>
      
        <attribute name="filtersfile" required="yes*">
        
          
        
          <description>
          The file from which the filters must be read.
 This file must be a formatted as a property file.
        </description>
      
        </attribute>
      
        <attribute name="token" required="yes*">
        
          
        
          <description>
          The token string without @ delimiters.
        </description>
      
        </attribute>
      
        <attribute name="value" required="yes*">
        
          
        
          <description>
          The string that should replace the token during filtered copies.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="fixcrlf">

  
    
  
    <description>
    Converts text source files to local OS formatting conventions, as
 well as repair text files damaged by misconfigured or misguided editors or
 file transfer programs.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="destdir" required="no">
        <description>
          Set the destination where the fixed files should be placed.
 Default is to replace the original file.
        </description>
      
        </attribute>
      
        <attribute name="encoding" required="no - defaults to default jvm encoding">
        <description>
          Specifies the encoding Ant expects the files to be in -
 defaults to the platforms default encoding.
        </description>
      
        </attribute>
      
        <attribute name="eof" required="no">
        <description>
          Specify how DOS EOF (control-z) characters are to be handled.
        </description>
      
        </attribute>
      
        <attribute name="eol" required="no">
        
          
        
          <description>
          Specify how EndOfLine characters are to be handled.
        </description>
      
        </attribute>
      
        <attribute name="javafiles" required="no">
        
          
        
          <description>
          Set to true if modifying Java source files.
        </description>
      
        </attribute>
      
        <attribute name="srcdir" required="yes">
        
          
        
          <description>
          Set the source dir to find the source text files.
        </description>
      
        </attribute>
      
        <attribute name="tab" required="no">
        
          
        
          <description>
          Specify how tab characters are to be handled.
        </description>
      
        </attribute>
      
        <attribute name="tablength" required="no">
        
          
        
          <description>
          Specify tab length in characters.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="ftp">

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

  
    <structure>

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

    
      <elements>
      
        <element name="fileset" required="NOTDEFINED">
        
          
        
          <description>
          A set of files to upload or download
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="genkey">

  
    
  
    <description>
    Generates a key in a keystore.
  </description>

  
    <structure>

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

    
      <elements>
      
        <element name="dname" required="NOTDEFINED">
        
          
        
          <description>
          Distinguished name list.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="get">

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

  
    <structure>

    
      <attributes>
      
        <attribute name="dest" required="yes">
        
          
        
          <description>
          Where to copy the source file.
        </description>
      
        </attribute>
      
        <attribute name="ignoreerrors" required="no; default &quot;false&quot;">
        
          
        
          <description>
          If true, log errors but do not treat as fatal.
        </description>
      
        </attribute>
      
        <attribute name="password" required="if username is set">
        
          
        
          <description>
          password for the basic authentication.
        </description>
      
        </attribute>
      
        <attribute name="src" required="yes">
        
          
        
          <description>
          Set the URL to get.
        </description>
      
        </attribute>
      
        <attribute name="usetimestamp" required="no; default &quot;false&quot;">
        
         <description>
          If true, conditionally download a file based on the timestamp
 of the local copy.

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

 &lt;p&gt;Note that remote files of date 1/1/1970 (GMT) are treated as
 'no timestamp', and web servers often serve files with a
 timestamp in the future by replacing their timestamp with that
 of the current time. Also, inter-computer clock differences can
 cause no end of grief.&lt;/p&gt;
        </description>
      
        </attribute>
      
        <attribute name="username" required="if password is set">
        
          
        
          <description>
          Username for basic auth.
        </description>
      
        </attribute>
      
        <attribute name="verbose" required="no; default &quot;false&quot;">
        
          
        
          <description>
          If true, show verbose progress information.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="gunzip">

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

  
    <structure>

    
      <attributes>
      
        <attribute name="dest" required="no">
        
          
        
          <description>
          The destination file or directory.
        </description>
      
        </attribute>
      
        <attribute name="src" required="yes">
        
          <description>
          The file to expand.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="gzip">

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

  
    <structure>

    
      <attributes>
      
        <attribute name="src" required="NOTDEFINED">
        
          
        
          <description>
          the file to compress; required.
        </description>
      
        </attribute>
      
        <attribute name="zipfile" required="NOTDEFINED">
        
          
        
          <description>
          the required destination file.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="icontract">

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

  
    <structure>

    
      <attributes>
      
        <attribute name="builddir" required="no">
        
          
        
          <description>
          Sets the build directory for instrumented classes.
        </description>
      
        </attribute>
      
        <attribute name="classdir" required="only if updateicontrol=true">
        
          
        
          <description>
          Sets the class directory (uninstrumented classes).
        </description>
      
        </attribute>
      
        <attribute name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Sets the classpath to be used for invocation of iContract.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" required="NOTDEFINED">
        
          
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="controlfile" required="only if updateicontrol=true">
        
          
        
          <description>
          Sets the control file to pass to iContract.
        </description>
      
        </attribute>
      
        <attribute name="failthrowable" required="no">
        
          
        
          <description>
          Sets the Throwable (Exception) to be thrown on assertion violation.
        </description>
      
        </attribute>
      
        <attribute name="instrumentdir" required="yes">
        
          
        
          <description>
          Sets the instrumentation directory.
        </description>
      
        </attribute>
      
        <attribute name="invariant" required="no">
        
          
        
          <description>
          Turns on/off invariant instrumentation.
        </description>
      
        </attribute>
      
        <attribute name="post" required="no">
        
          
        
          <description>
          Turns on/off postcondition instrumentation.
        </description>
      
        </attribute>
      
        <attribute name="pre" required="no">
        
          
        
          <description>
          Turns on/off precondition instrumentation.
        </description>
      
        </attribute>
      
        <attribute name="quiet" required="no">
        
          
        
          <description>
          Tells iContract to be quiet.
        </description>
      
        </attribute>
      
        <attribute name="repbuilddir" required="NOTDEFINED">
        
          
        
          <description>
          Sets the build directory for instrumented classes.
        </description>
      
        </attribute>
      
        <attribute name="repositorydir" required="yes">
        
          
        
          <description>
          Sets the build directory for repository classes.
        </description>
      
        </attribute>
      
        <attribute name="srcdir" required="yes">
        
          
        
          <description>
          Sets the source directory.
        </description>
      
        </attribute>
      
        <attribute name="targets" required="no">
        
          
        
          <description>
          Sets the name of the file where targets will be written. That is the
 file that tells iContract what files to process.
        </description>
      
        </attribute>
      
        <attribute name="updateicontrol" required="no">
        
          
        
          <description>
          If true, updates iControl properties file
        </description>
      
        </attribute>
      
        <attribute name="verbosity" required="no">
        
          
        
          <description>
          Sets the verbosity level of iContract. Any combination of
 error*,warning*,note*,info*,progress*,debug* (comma separated) can be
 used. Defaults to error*,warning*
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Sets the classpath.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="ilasm">

  
    
  
    <description>
    Assembles .NET Intermediate Language files. The task will only work
  on win2K until other platforms support csc.exe or an equivalent. ilasm.exe
  must be on the execute path too. &lt;p&gt;

  &lt;p&gt;

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="debug" required="NOTDEFINED">
        
          
        
          <description>
          set the debug flag on or off.
        </description>
      
        </attribute>
      
        <attribute name="extraoptions" required="NOTDEFINED">
        <description>
          Any extra options which are not explicitly supported by this task.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" required="NOTDEFINED">
        
          
        
          <description>
          If true, fails if ilasm tool fails.
        </description>
      
        </attribute>
      
        <attribute name="keyfile" required="NOTDEFINED">
        
          
        
          <description>
          the name of a file containing a private key.
        </description>
      
        </attribute>
      
        <attribute name="listing" required="NOTDEFINED">
        
          
        
          <description>
          If true, produce a listing (off by default).
        </description>
      
        </attribute>
      
        <attribute name="outputfile" required="NOTDEFINED">
        
          
        
          <description>
          Set the output file.
        </description>
      
        </attribute>
      
        <attribute name="resourcefile" required="NOTDEFINED">
        
          
        
          <description>
          name of resource file to include.
        </description>
      
        </attribute>
      
        <attribute name="srcdir" required="NOTDEFINED">
        
          
        
          <description>
          Set the source directory containing the files to be compiled.
        </description>
      
        </attribute>
      
        <attribute name="targettype" required="NOTDEFINED">
        
          
        
          <description>
          Sets the type of target, either "exe" or "library".
        </description>
      
        </attribute>
      
        <attribute name="verbose" required="NOTDEFINED">
        
          
        
          <description>
          If true, enable verbose ILASM output.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="input">

  
    
  
    <description>
    Reads an input line from the console.
  </description>

  
    <structure>

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

    
      <elements>
    </elements>

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

  
    </structure>


  </task>



  <task name="iplanet-ejbc">

  
    
  
    <description>
    Compiles EJB stubs and skeletons for the iPlanet Application Server.
 The EJBs to be processed are specified by the EJB 1.1 standard XML
 descriptor, and additional attributes are obtained from the iPlanet Application
 Server-specific XML descriptor.  Since the XML descriptors can include
 multiple EJBs, this is a convenient way of specifying many EJBs in a single
 Ant task.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Sets the classpath to be used when compiling the EJB stubs and skeletons.
        </description>
      
        </attribute>
      
        <attribute name="debug" required="NOTDEFINED">
        <description>
          If true, debugging output will be generated when ejbc is executed.
        </description>
      
        </attribute>
      
        <attribute name="dest" required="NOTDEFINED">
        <description>
          Sets the destination directory where the EJB source classes must exist
 and where the stubs and skeletons will be written.  The destination
 directory must exist before this task is executed.
        </description>
      
        </attribute>
      
        <attribute name="ejbdescriptor" required="NOTDEFINED">
        <description>
          Sets the location of the standard XML EJB descriptor.  Typically, this
 file is named "ejb-jar.xml".
        </description>
      
        </attribute>
      
        <attribute name="iasdescriptor" required="NOTDEFINED">
        <description>
          Sets the location of the iAS-specific XML EJB descriptor.  Typically,
 this file is named "ias-ejb-jar.xml".
        </description>
      
        </attribute>
      
        <attribute name="iashome" required="NOTDEFINED">
        
          
        
          <description>
          May be used to specify the "home" directory for this iAS installation.
 The directory specified should typically be
 &lt;code&gt;[install-location]/iplanet/ias6/ias&lt;/code&gt;.
        </description>
      
        </attribute>
      
        <attribute name="keepgenerated" required="NOTDEFINED">
        
          
        
          <description>
          If true, the Java source files which are generated by ejbc will be saved .
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Adds to the classpath used when compiling the EJB stubs and skeletons.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="jar">

  
    
  
    <description>
    Creates a JAR archive.
  </description>

  
    <structure>

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

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

    
      <elements>
      
        <element name="manifest" required="NOTDEFINED">
        
          <description>
          Allows the manifest for the archive file to be provided inline
 in the buildfile rather than in an external file.
        </description>
      
        </element>

      
        <element name="fileset" required="NOTDEFINED">
        <description>
          Adds a set of files.
        </description>
      
        </element>

      
        <element name="metainf" required="NOTDEFINED">
        <description>
          Adds a zipfileset to include in the META-INF directory.
        </description>
      
        </element>

      
        <element name="zipgroupfileset" required="NOTDEFINED">
        
          
        
          <description>
          Adds a group of zip files.
        </description>
      
        </element>

      
        <element name="zipfileset" required="NOTDEFINED">
        
          <description>
          Adds a set of files that can be read from an archive and be given a prefix/fullpath.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="jarlib-available">
  <description>
    Checks whether an extension is present in a fileset or an extensionSet.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="file" required="no, one of file, nested      extensionset or nested fileset must be present.">
        
          
        
          <description>
          The JAR library to check.
        </description>
      
        </attribute>
      
        <attribute name="property" required="yes">
        
          
        
          <description>
          The name of property to set if extensions are available.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="extension" required="NOTDEFINED">
        
          
        
          <description>
          Set the Extension looking for.
        </description>
      
        </element>

      
        <element name="extensionset" required="NOTDEFINED">
        
          
        
          <description>
          Adds a set of extensions to search in.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="jarlib-display">

  
    
  
    <description>
    Displays the "Optional Package" and "Package Specification" information
 contained within the specified JARs.

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

  
    <structure>

    
      <attributes>
      
        <attribute name="file" required="no, but one of file or fileset must be      present.">
        
          
        
          <description>
          The JAR library to display information for.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="fileset" required="NOTDEFINED">
        
          
        
          <description>
          Adds a set of files about which library data will be displayed.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="jarlib-manifest">

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="destfile" required="yes.">
        
          
        
          <description>
          The location where generated manifest is placed.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="attribute" required="NOTDEFINED">
        
          
        
          <description>
          Adds an attribute that is to be put in main section of manifest.
        </description>
      
        </element>

      
        <element name="depends" required="NOTDEFINED">
        
          
        
          <description>
          Adds a set of extensions that this library requires.
        </description>
      
        </element>

      
        <element name="extension" required="NOTDEFINED">
        
          
        
          <description>
          Adds an extension that this library implements.
        </description>
      
        </element>

      
        <element name="options" required="NOTDEFINED">
        
          
        
          <description>
          Adds a set of extensions that this library optionally requires.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="jarlib-resolve">

  
    
  
    <description>
    Tries to locate a JAR to satisfy an extension and place
 location of JAR into property.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="checkextension" required="no, defaults to true.">
        
          <description>
          If true, libraries returned by nested resolvers should be
 checked to see if they supply extension.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" required="no, defaults to true.">
        <description>
          If true, failure to locate library should fail build.
        </description>
      
        </attribute>
      
        <attribute name="property" required="yes">
        
          <description>
          The name of the property in which the location of library is stored.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="ant" required="NOTDEFINED">
        
          
        
          <description>
          Adds Ant resolver to run an Ant buildfile to generate a library.
        </description>
      
        </element>

      
        <element name="extension" required="NOTDEFINED">
        
          
        
          <description>
          Set the Extension looking for.
        </description>
      
        </element>

      
        <element name="location" required="NOTDEFINED">
        
          <description>
          Adds location resolver to look for a library in a location
 relative to project directory.
        </description>
      
        </element>

      
        <element name="url" required="NOTDEFINED">
        
          <description>
          Adds a URL resolver to download a library from a URL to a local file.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="java">

  
    
  
    <description>
    Launcher for Java applications. Allows use of
 the same JVM for the called application thus resulting in much
 faster operation.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="append" required="no">
        
          
        
          <description>
          If true, append output to existing file.
        </description>
      
        </attribute>
      
        <attribute name="classname" required="either jar or classname">
        
          
        
          <description>
          Sets the Java class to execute.
        </description>
      
        </attribute>
      
        <attribute name="classpath" required="no">
        
          
        
          <description>
          Set the classpath to be used when running the Java class
        </description>
      
        </attribute>
      
        <attribute name="classpathref" required="no">
        
          
        
          <description>
          Classpath to use, by reference.
        </description>
      
        </attribute>
      
        <attribute name="dir" required="no">
        
          
        
          <description>
          The working directory of the process
        </description>
      
        </attribute>
      
        <attribute name="failonerror" required="no">
        
          <description>
          If true, then fail if the command exits with a returncode other than 0
        </description>
      
        </attribute>
      
        <attribute name="fork" required="no">
        
          
        
          <description>
          If true, execute in a new VM.
        </description>
      
        </attribute>
      
        <attribute name="jvmversion" required="NOTDEFINED">
        
          
        
          <description>
          Sets the JVM version.
        </description>
      
        </attribute>
      
        <attribute name="jar" required="either jar or classname">
        
          
        
          <description>
          The location of the JAR file to execute.
        </description>
      
        </attribute>
      
        <attribute name="jvm" required="no">
        
          
        
          <description>
          Set the command used to start the VM (only if not forking).
        </description>
      
        </attribute>
      
        <attribute name="jvmargs" required="no">
        
          
        
          <description>
          Set the command line arguments for the JVM.
        </description>
      
        </attribute>
      
        <attribute name="maxmemory" required="no">
        
          
        
          <description>
          Corresponds to -mx or -Xmx depending on VM version.
        </description>
      
        </attribute>
      
        <attribute name="newenvironment" required="no">
        
          
        
          <description>
          If true, use a completely new environment.

 &lt;p&gt;Will be ignored if we are not forking a new VM.
        </description>
      
        </attribute>
      
        <attribute name="output" required="no">
        
          
        
          <description>
          File the output of the process is redirected to.
        </description>
      
        </attribute>
      
        <attribute name="timeout" required="no">
        
          
        
          <description>
          Timeout in milliseconds after which the process will be killed.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="env" required="NOTDEFINED">
        
          
        
          <description>
          Adds an environment variable.

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

      
        <element name="sysproperty" required="NOTDEFINED">
        
          
        
          <description>
          Adds a system property.
        </description>
      
        </element>

      
        <element name="arg" required="NOTDEFINED">
        
          
        
          <description>
          Adds a command-line argument.
        </description>
      
        </element>

      
        <element name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Adds a path to the classpath.
        </description>
      
        </element>

      
        <element name="jvmarg" required="NOTDEFINED">
        
          
        
          <description>
          Adds a JVM argument.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="javac">
  
    <description>
    Compiles Java source files. This task can take the following
 When this task executes, it will recursively scan the sourcedir and
 destdir looking for Java source files to compile. This task makes its
 compile decision based on timestamp.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="bootclasspathref" required="no">
        
          
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="bootclasspath" required="no">
        <description>
          Sets the bootclasspath that will be used to compile the classes
 against.
        </description>
      
        </attribute>
      
        <attribute name="classpath" required="no">
        
          
        
          <description>
          Set the classpath to be used for this compilation.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" required="no">
        
          
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="compiler" required="no">
        
          
        
          <description>
          Choose the implementation for this particular task.
        </description>
      
        </attribute>
      
        <attribute name="debug" required="no">
        <description>
          Indicates whether source should be compiled
 with debug information; defaults to off.
        </description>
      
        </attribute>
      
        <attribute name="debuglevel" required="no">
        
          
        
          <description>
          Keyword list to be appended to the -g command-line switch.

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

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

 If you use this attribute together with jikes, you must
 make sure that your version of jikes supports the -source switch.
 Legal values are 1.3 and 1.4 - by default, no -source argument
 will be used at all.
        </description>
      
        </attribute>
      
        <attribute name="sourcepath" required="no">
        
          
        
          <description>
          Set the sourcepath to be used for this compilation.
        </description>
      
        </attribute>
      
        <attribute name="sourcepathref" required="no">
        
          
        
          <description>
          Adds a reference to a source path defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="srcdir" required="yes, unless nested &lt;src&gt; elements are present.">
        
          
        
          <description>
          Set the source directories to find the source Java files.
        </description>
      
        </attribute>
      
        <attribute name="target" required="no">
        
          
        
          <description>
          Sets the target VM that the classes will be compiled for. Valid
 strings are "1.1", "1.2", and "1.3".
        </description>
      
        </attribute>
      
        <attribute name="verbose" required="no">
        
          
        
          <description>
          If true, asks the compiler for verbose output.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="bootclasspath" required="NOTDEFINED">
        
          
        
          <description>
          Adds a path to the bootclasspath.
        </description>
      
        </element>

      
        <element name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Adds a path to the classpath.
        </description>
      
        </element>

      
        <element name="compilerarg" required="NOTDEFINED">
        
          
        
          <description>
          Adds an implementation specific command-line argument.
        </description>
      
        </element>

      
        <element name="extdirs" required="NOTDEFINED">
        
          
        
          <description>
          Adds a path to extdirs.
        </description>
      
        </element>

      
        <element name="sourcepath" required="NOTDEFINED">
        
          
        
          <description>
          Adds a path to sourcepath.
        </description>
      
        </element>

      
        <element name="src" required="NOTDEFINED">
        
          
        
          <description>
          Adds a path for source compilation.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="javacc">

  
    
  
    <description>
    JavaCC compiler compiler task.
  </description>

  
    <structure>

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

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="javadoc">

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

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

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

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="access" required="no (default protected)">
        
          
        
          <description>
          Set the scope to be processed. This is an alternative to the
 use of the setPublic, setPrivate, etc methods. It gives better build
 file control over what scope is processed.
        </description>
      
        </attribute>
      
        <attribute name="additionalparam" required="no">
        
          
        
          <description>
          Set an additional parameter on the command line
        </description>
      
        </attribute>
      
        <attribute name="author" required="no">
        
          
        
          <description>
          Include the author tag in the generated documentation.
        </description>
      
        </attribute>
      
        <attribute name="bootclasspathref" required="no">
        
          
        
          <description>
          Adds a reference to a CLASSPATH defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="bootclasspath" required="no">
        
          
        
          <description>
          Set the boot classpath to use.
        </description>
      
        </attribute>
      
        <attribute name="bottom" required="no">
        
          
        
          <description>
          Set the text to be placed at the bottom of each output file.
        </description>
      
        </attribute>
      
        <attribute name="charset" required="no">
        
          
        
          <description>
          Charset for cross-platform viewing of generated documentation.
        </description>
      
        </attribute>
      
        <attribute name="classpath" required="no">
        
          
        
          <description>
          Set the classpath to be used for this javadoc run.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" required="no">
        
          
        
          <description>
          Adds a reference to a CLASSPATH defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="defaultexcludes" required="no">
        
          
        
          <description>
          Sets whether default exclusions should be used or not.
        </description>
      
        </attribute>
      
        <attribute name="destdir" required="yes, unless a doclet has been specified.">
        
          
        
          <description>
          Set the directory where the Javadoc output will be generated.
        </description>
      
        </attribute>
      
        <attribute name="docencoding" required="no">
        
          
        
          <description>
          Output file encoding name.
        </description>
      
        </attribute>
      
        <attribute name="doclet" required="no">
        <description>
          Set the class that starts the doclet used in generating the 
 documentation.
        </description>
      
        </attribute>
      
        <attribute name="docletpath" required="no">
        
          
        
          <description>
          Set the classpath used to find the doclet class.
        </description>
      
        </attribute>
      
        <attribute name="docletpathref" required="no">
        
          
        
          <description>
          Set the classpath used to find the doclet class by reference.
        </description>
      
        </attribute>
      
        <attribute name="doctitle" required="no">
        
          
        
          <description>
          Set the title of the generated overview page.
        </description>
      
        </attribute>
      
        <attribute name="encoding" required="no">
        
          
        
          <description>
          Set the encoding name of the source files,
        </description>
      
        </attribute>
      
        <attribute name="excludepackagenames" required="no">
        
          
        
          <description>
          Set the list of packages to be excluded.
        </description>
      
        </attribute>
      
        <attribute name="extdirs" required="no">
        
          
        
          <description>
          Set the location of the extensions directories.
        </description>
      
        </attribute>
      
        <attribute name="failonerror" required="no">
        
        <description>
          Should the build process fail if javadoc fails (as indicated by
 a non zero return code)?

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

 This is not supported by JDK 1.1 and has been phased out in JDK 1.4
        </description>
      
        </attribute>
      
        <attribute name="overview" required="no">
        <description>
          Specify the file containing the overview to be included in the generated
 documentation.
        </description>
      
        </attribute>
      
        <attribute name="package" required="no">
        <description>
          Indicate whether only package, protected and public classes and 
 members are to be included in the scope processed
        </description>
      
        </attribute>
      
        <attribute name="packagelist" required="no">
        
          
        
          <description>
          The name of a file containing the packages to process.
        </description>
      
        </attribute>
      
        <attribute name="packagenames" required="no">
        
          
        
          <description>
          Set the package names to be processed.
        </description>
      
        </attribute>
      
        <attribute name="private" required="no">
        <description>
          Indicate whether all classes and  members are to be included in the scope processed
        </description>
      
        </attribute>
      
        <attribute name="protected" required="no">
          <description>
          Indicate whether only protected and public classes and members are to be included in the scope processed
        </description>
      
        </attribute>
      
        <attribute name="public" required="no">
        <description>
          Indicate whether only public classes and members are to be included in the scope processed
        </description>
      
        </attribute>
      
        <attribute name="serialwarn" required="no">
        
          
        
          <description>
          If true, generate warning about @serial tag.
        </description>
      
        </attribute>
      
        <attribute name="source" required="no">
        <description>
          Enables the -source switch, will be ignored if javadoc is not
 the 1.4 version or a different doclet than the standard doclet
 is used.
        </description>
      
        </attribute>
      
        <attribute name="sourcefiles" required="">
        
          
        
          <description>
          Set the list of source files to process.
        </description>
      
        </attribute>
      
        <attribute name="sourcepath" required="at least one of the three or nested      &lt;sourcepath&gt;, &lt;fileset&gt; or      &lt;packageset&gt;">
        
          
        
          <description>
          Specify where to find source file
        </description>
      
        </attribute>
      
        <attribute name="sourcepathref" required="">
        
          
        
          <description>
          Adds a reference to a CLASSPATH defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="splitindex" required="no">
        
          
        
          <description>
          Generate a split index
        </description>
      
        </attribute>
      
        <attribute name="stylesheetfile" required="no">
        
          
        
          <description>
          Specifies the CSS stylesheet file to use.
        </description>
      
        </attribute>
      
        <attribute name="use" required="no">
        
          
        
          <description>
          Generate the &amp;quot;use&amp;quot page for each package.
        </description>
      
        </attribute>
      
        <attribute name="useexternalfile" required="no">
        <description>
          Work around command line length limit by using an external file
 for the sourcefiles.
        </description>
      
        </attribute>
      
        <attribute name="verbose" required="no">
        
          
        
          <description>
          Run javadoc in verbose mode
        </description>
      
        </attribute>
      
        <attribute name="version" required="no">
        
          
        
          <description>
          Include the version tag in the generated documentation.
        </description>
      
        </attribute>
      
        <attribute name="windowtitle" required="no">
        <description>
          Set the title to be placed in the HTML &amp;lt;title&amp;gt; tag of the 
 generated documentation.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="bottom" required="NOTDEFINED">
        
          
        
          <description>
          Set the text to be placed at the bottom of each output file.
        </description>
      
        </element>

      
        <element name="doctitle" required="NOTDEFINED">
        
          
        
          <description>
          Add a document title to use for the overview page.
        </description>
      
        </element>

      
        <element name="excludepackage" required="NOTDEFINED">
        
          
        
          <description>
          Add a package to be excluded from the javadoc run.
        </description>
      
        </element>

      
        <element name="fileset" required="NOTDEFINED">
        
          
        
          <description>
          Adds a fileset.

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

      
        <element name="footer" required="NOTDEFINED">
        
          
        
          <description>
          Set the footer text to be placed at the bottom of each output file.
        </description>
      
        </element>

      
        <element name="header" required="NOTDEFINED">
        
          
        
          <description>
          Set the header text to be placed at the top of each output file.
        </description>
      
        </element>

      
        <element name="package" required="NOTDEFINED">
        
          
        
          <description>
          Add a single package to be processed.

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

      
        <element name="packageset" required="NOTDEFINED">
        
          
        
          <description>
          Adds a packageset.

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

      
        <element name="source" required="NOTDEFINED">
        
          
        
          <description>
          Add a single source file.
        </description>
      
        </element>

      
        <element name="taglet" required="NOTDEFINED">
        
          
        
          <description>
          Add a taglet
        </description>
      
        </element>

      
        <element name="bootclasspath" required="NOTDEFINED">
        
          
        
          <description>
          Create a Path to be configured with the boot classpath
        </description>
      
        </element>

      
        <element name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Create a Path to be configured with the classpath to use
        </description>
      
        </element>

      
        <element name="doclet" required="NOTDEFINED">
        
          
        
          <description>
          Create a doclet to be used in the documentation generation.
        </description>
      
        </element>

      
        <element name="group" required="NOTDEFINED">
        <description>
          Separates packages on the overview page into whatever
 groups you specify, one group per table.
        </description>
      
        </element>

      
        <element name="link" required="NOTDEFINED">
        
          
        
          <description>
          Create link to javadoc output at the given URL.
        </description>
      
        </element>

      
        <element name="sourcepath" required="NOTDEFINED">
        
          <description>
          Create a path to be configured with the locations of the source files.
        </description>
      
        </element>

      
        <element name="tag" required="NOTDEFINED">
        
          
        
          <description>
          Creates and adds a -tag argument. This is used to specify
 custom tags. This argument is only available for JavaDoc 1.4,
 and will generate a verbose message (and then be ignored)
 when run on Java versions below 1.4.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="javah">

  
    
  
    <description>
  Generates JNI headers from a Java class.
When this task executes, it will generate the C header and source files that are needed to implement native methods. JNI operates differently depending on whether JDK1.2 (or later) or pre-JDK1.2 systems are used.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="bootclasspathref" required="NOTDEFINED">
        
          
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="bootclasspath" required="no">
        
          
        
          <description>
          location of bootstrap class files.
        </description>
      
        </attribute>
      
        <attribute name="class" required="yes">
        
          
        
          <description>
          the fully-qualified name of the class (or classes, separated by commas).
        </description>
      
        </attribute>
      
        <attribute name="classpath" required="no">
        
          
        
          <description>
          the classpath to use.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" required="NOTDEFINED">
        
          
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="destdir" required="">
        
          <description>
          Set the destination directory into which the Java source
 files should be compiled.
        </description>
      
        </attribute>
      
        <attribute name="force" required="no">
        
          
        
          <description>
          If true, output files should always be written (JDK1.2 only).
        </description>
      
        </attribute>
      
        <attribute name="old" required="no">
        
          <description>
          If true, specifies that old JDK1.0-style header files should be
 generated.
 (otherwise output file contain JNI-style native method function prototypes) (JDK1.2 only)
        </description>
      
        </attribute>
      
        <attribute name="outputfile" required="yes">
        
          <description>
          Concatenates the resulting header or source files for all
 the classes listed into this file.
        </description>
      
        </attribute>
      
        <attribute name="stubs" required="no">
        
          
        
          <description>
          If true, generate C declarations from the Java object file (used with old).
        </description>
      
        </attribute>
      
        <attribute name="verbose" required="no">
        
          <description>
          If true, causes Javah to print a message concerning
 the status of the generated files.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="bootclasspath" required="NOTDEFINED">
        
          
        
          <description>
          Adds path to bootstrap class files.
        </description>
      
        </element>

      
        <element name="class" required="NOTDEFINED">
        
          
        
          <description>
          Adds class to process.
        </description>
      
        </element>

      
        <element name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Path to use for classpath.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="jdepend">

  
    
  
    <description>
    Runs JDepend tests.

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

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

  
    <structure>

    
      <attributes>
      
        <attribute name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Set the classpath to be used for this compilation.
        </description>
      
        </attribute>
      
        <attribute name="classpathref" required="no">
        
          
        
          <description>
          Adds a reference to a classpath defined elsewhere.
        </description>
      
        </attribute>
      
        <attribute name="dir" required="no">
        
          
        
          <description>
          The directory to invoke the VM in. Ignored if no JVM is forked.
        </description>
      
        </attribute>
      
        <attribute name="fork" required="no, default is &quot;off&quot;">
        
          
        
          <description>
          If true, forks into a new JVM. Default: false.
        </description>
      
        </attribute>
      
        <attribute name="format" required="no">
        
          
        
          <description>
          The format to write the output in, "xml" or "text".
        </description>
      
        </attribute>
      
        <attribute name="haltonerror" required="no, default is &quot;off&quot;">
        
          
        
          <description>
          Whether or not to halt on failure. Default: false.
        </description>
      
        </attribute>
      
        <attribute name="jvm" required="no, default &quot;java&quot;">
        
          
        
          <description>
          The command used to invoke a forked Java Virtual Machine.

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

    
      <elements>
      
        <element name="classpath" required="NOTDEFINED">
        
          
        
          <description>
          Adds a path to the classpath.
        </description>
      
        </element>

      
        <element name="sourcespath" required="NOTDEFINED">
        
          
        
          <description>
          Adds a path to source code to analyze.
        </description>
      
        </element>

    
      </elements>

  
    </structure>


  </task>



  <task name="jjtree">

  
    
  
    <description>
    Runs the JJTree compiler compiler.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="buildnodefiles" required="no">
        
          
        
          <description>
          Sets the BUILD_NODE_FILES grammar option.
        </description>
      
        </attribute>
      
        <attribute name="javacchome" required="yes">
        
          
        
          <description>
          The directory containing the JavaCC distribution.
        </description>
      
        </attribute>
      
        <attribute name="multi" required="no">
        
          
        
          <description>
          Sets the MULTI grammar option.
        </description>
      
        </attribute>
      
        <attribute name="nodedefaultvoid" required="no">
        
          
        
          <description>
          Sets the NODE_DEFAULT_VOID grammar option.
        </description>
      
        </attribute>
      
        <attribute name="nodefactory" required="no">
        
          
        
          <description>
          Sets the NODE_FACTORY grammar option.
        </description>
      
        </attribute>
      
        <attribute name="nodepackage" required="no">
        
          
        
          <description>
          Sets the NODE_PACKAGE grammar option.
        </description>
      
        </attribute>
      
        <attribute name="nodeprefix" required="no">
        
          
        
          <description>
          Sets the NODE_PREFIX grammar option.
        </description>
      
        </attribute>
      
        <attribute name="nodescopehook" required="no">
        
          
        
          <description>
          Sets the NODE_SCOPE_HOOK grammar option.
        </description>
      
        </attribute>
      
        <attribute name="nodeusesparser" required="no">
        
          
        
          <description>
          Sets the NODE_USES_PARSER grammar option.
        </description>
      
        </attribute>
      
        <attribute name="outputdirectory" required="no">
        
          
        
          <description>
          The directory to write the generated file to.
 If not set, the files are written to the directory
 containing the grammar file.
        </description>
      
        </attribute>
      
        <attribute name="static" required="no">
        
          
        
          <description>
          Sets the STATIC grammar option.
        </description>
      
        </attribute>
      
        <attribute name="target" required="yes">
        
          
        
          <description>
          The jjtree grammar file to process.
        </description>
      
        </attribute>
      
        <attribute name="visitor" required="no">
        
          
        
          <description>
          Sets the VISITOR grammar option.
        </description>
      
        </attribute>
      
        <attribute name="visitorexception" required="no">
        
          
        
          <description>
          Sets the VISITOR_EXCEPTION grammar option.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
    </elements>

  
    </structure>


  </task>



  <task name="jpcoverage">

  
    
  
    <description>
    Runs Sitraka JProbe Coverage.

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

  
    <structure>

    
      <attributes>
      
        <attribute name="applet" required="NOTDEFINED">
        
          
        
          <description>
          If true, run an applet.
        </description>
      
        </attribute>
      
        <attribute name="classname" required="NOTDEFINED">
        
          
        
          <description>
          classname to run as standalone or runner for filesets.
        </description>
      
        </attribute>
      
        <attribute name="exitprompt" required="NOTDEFINED">
        
          
        
          <description>
          Toggles display of the console prompt: always, error, never
        </description>
      
        </attribute>
      
        <attribute name="finalsnapshot" required="NOTDEFINED">
        
          
        
          <description>
          Type of snapshot to send at program termination: none, coverage, all.
 Can be null, default to none
        </description>
      
        </attribute>
      
        <attribute name="home" required="NOTDEFINED">
        
          
        
          <description>
          The directory where JProbe is installed.
        </description>
      
        </attribute>
      
        <attribute name="javaexe" required="NOTDEFINED">
        
          
        
          <description>
          Path to the java executable.
        </description>
      
        </attribute>
      
        <attribute name="recordfromstart" required="NOTDEFINED">
        
          
        
          <description>
          "all", "coverage",  or "none".
        </description>
      
        </attribute>
      
        <attribute name="seedname" required="NOTDEFINED">
        
          
        
          <description>
          seed name for snapshot file. Can be null, default to snap
        </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 is 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 for inclusion in a JAR, Ant task wrapper
 around {@link Manifest Manifest}.  This task can be used to write a
 Manifest file, optionally replacing or updating an existing file.
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="file" 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>
    
      </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>
          Set setonempty

 If false, don't set the new property if the result is the empty string.
        </description>
      
        </attribute>
      
        <attribute name="targetos" required="yes, unless pathsep and/or         dirsep are specified.      ">
        
          
 "windows", "unix", "netware", or "os/2"; required unless

        
          <description>
          Set targetos to a platform to one of
 "windows", "unix", "netware", or "os/2"; required unless
 unless pathsep and/or dirsep are specified.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="map" 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.">
        
          
 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

        
          <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">
        
          
 produced, detailing how many token occurrences and files were

        
          <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.">
        
          
 required unless a nested
 &lt;code&gt;replacetoken&lt;/code&gt; element or the &lt;code&gt;replacefilterfile&lt;/code&gt;

        
          <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">
        
          
 be generated; optional, defaults to false 

        
          <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>
          Task's classpath.
 Enables or disables including the default run-time
 libraries from the executing VM; defaults to false
        </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">
        
          
 found by the directory match are

        
          <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 detailed dependency checking: files are only signed if they
 are not signed. The &lt;tt&gt;signjar&lt;/tt&gt; attribute can point to the file to
 generate; if this file exists then
 its modification date is used as a cue as to whether to resign any JAR file.
 &lt;br&gt;  
 &lt;strong&gt;Note:&lt;/strong&gt; Requires Java 1.2 or later. &lt;/p&gt;
  </description>

  
    <structure>

    
      <attributes>
      
        <attribute name="alias" 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>
          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="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>
    Export packages from the Visual Age for Java workspace.
 The packages are specified similar to all other MatchingTasks.
 Since the VA Workspace is not file based, this task is simulating
 a directory hierarchy for the workspace:
 The 'root' contains all project 'dir's, and the projects contain
 their respective package 'dir's.
  </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, optiona.
 Format: &amp;lt;servername&amp;gt;:&amp;lt;port no&amp;gt;.
 If this attribute is set, the tasks will be executed on the specified tool
 server.
        </description>
      
        </attribute>
    
      </attributes>

    
      <elements>
      
        <element name="exclude" 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>
          Set the directory containing the source jsp's
        </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>
          Set the directory containing the source jsp's
        </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>
 
</tasks>