You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2020/05/05 13:33:14 UTC

[ant] branch master updated (bc9fed1 -> a8645a1)

This is an automated email from the ASF dual-hosted git repository.

bodewig pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/ant.git.


    from bc9fed1  Merge branch '1.9.x'
     add 9c1f4d9  provide a magic property that overrides temp directory
     new fe7e961  Merge branch '1.9.x'
     new 041b058  make junitlauncher use ant.tmpdir as well
     new a8645a1  use nio.Files.createTempFile rather than File.createTempFile

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 WHATSNEW                                           |   3 +
 manual/Tasks/cab.html                              |   4 +
 manual/Tasks/cvstagdiff.html                       |   2 +
 manual/Tasks/ejb.html                              |   3 +
 manual/Tasks/exec.html                             |   2 +
 manual/Tasks/fixcrlf.html                          |  11 ++-
 manual/Tasks/ftp.html                              |   7 +-
 manual/Tasks/javadoc.html                          |   5 +-
 manual/Tasks/junitlauncher.html                    |   4 +
 manual/Tasks/replaceregexp.html                    |   8 +-
 manual/Types/selectors.html                        |   4 +
 manual/running.html                                |  48 +++++++++-
 src/main/org/apache/tools/ant/MagicNames.java      |   8 ++
 .../org/apache/tools/ant/taskdefs/FixCRLF.java     |   2 +-
 .../org/apache/tools/ant/taskdefs/Javadoc.java     |   4 +-
 src/main/org/apache/tools/ant/taskdefs/Jikes.java  |   2 +-
 .../org/apache/tools/ant/taskdefs/Replace.java     |   2 +-
 .../org/apache/tools/ant/taskdefs/TempFile.java    |   2 +-
 src/main/org/apache/tools/ant/taskdefs/Zip.java    |   2 +-
 .../taskdefs/compilers/DefaultCompilerAdapter.java |   2 +-
 .../tools/ant/taskdefs/cvslib/CvsTagDiff.java      |   2 +-
 .../ant/taskdefs/launcher/VmsCommandLauncher.java  |   8 +-
 .../apache/tools/ant/taskdefs/optional/Cab.java    |   4 +-
 .../tools/ant/taskdefs/optional/ReplaceRegExp.java |   2 +-
 .../ant/taskdefs/optional/junit/JUnitTask.java     |   2 +-
 .../AbstractJUnitResultFormatter.java              |  10 +-
 .../junitlauncher/confined/JUnitLauncherTask.java  |   4 +-
 .../tools/ant/taskdefs/optional/net/FTP.java       |   2 +-
 .../taskdefs/optional/net/FTPTaskMirrorImpl.java   |   2 +-
 .../modifiedselector/ModifiedSelector.java         |   2 +-
 src/main/org/apache/tools/ant/util/FileUtils.java  | 101 +++++++++++++++++----
 .../org/apache/tools/ant/util/JavaEnvUtils.java    |   2 +-
 .../apache/tools/ant/util/SymbolicLinkUtils.java   |   7 +-
 .../org/apache/tools/ant/util/FileUtilsTest.java   |  75 ++++++++++++---
 34 files changed, 280 insertions(+), 68 deletions(-)


[ant] 03/03: use nio.Files.createTempFile rather than File.createTempFile

Posted by bo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bodewig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ant.git

commit a8645a151bc706259fb1789ef587d05482d98612
Author: Stefan Bodewig <bo...@apache.org>
AuthorDate: Tue May 5 15:32:09 2020 +0200

    use nio.Files.createTempFile rather than File.createTempFile
---
 src/main/org/apache/tools/ant/util/FileUtils.java  | 35 +++++++++++++++++++++-
 .../org/apache/tools/ant/util/FileUtilsTest.java   | 13 ++++++++
 2 files changed, 47 insertions(+), 1 deletion(-)

diff --git a/src/main/org/apache/tools/ant/util/FileUtils.java b/src/main/org/apache/tools/ant/util/FileUtils.java
index 565d69b..4667184 100644
--- a/src/main/org/apache/tools/ant/util/FileUtils.java
+++ b/src/main/org/apache/tools/ant/util/FileUtils.java
@@ -36,9 +36,14 @@ import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.StandardOpenOption;
+import java.nio.file.attribute.FileAttribute;
+import java.nio.file.attribute.PosixFileAttributeView;
+import java.nio.file.attribute.PosixFilePermission;
+import java.nio.file.attribute.PosixFilePermissions;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.EnumSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Optional;
@@ -100,6 +105,13 @@ public class FileUtils {
      */
     public static final long NTFS_FILE_TIMESTAMP_GRANULARITY = 1;
 
+    private static final FileAttribute[] TMPFILE_ATTRIBUTES =
+        new FileAttribute[] {
+            PosixFilePermissions.asFileAttribute(EnumSet.of(PosixFilePermission.OWNER_READ,
+                PosixFilePermission.OWNER_WRITE))
+        };
+    private static final FileAttribute[] NO_TMPFILE_ATTRIBUTES = new FileAttribute[0];
+
     /**
      * A one item cache for fromUri.
      * fromUri is called for each element when parsing ant build
@@ -893,6 +905,10 @@ public class FileUtils {
      * yield a different file name.
      * </p>
      *
+     * <p>If the filesystem where the temporary file is created
+     * supports POSIX permissions, the file will only be readable and
+     * writable by the current user.</p>
+     *
      * @param prefix file name prefix.
      * @param suffix
      *            file extension; include the '.'.
@@ -916,6 +932,10 @@ public class FileUtils {
      * exist before this method was invoked, any subsequent invocation
      * of this method will yield a different file name.</p>
      *
+     * <p>If the filesystem where the temporary file is created
+     * supports POSIX permissions, the file will only be readable and
+     * writable by the current user.</p>
+     *
      * @param prefix file name prefix.
      * @param suffix file extension; include the '.'.
      * @param parentDir Directory to create the temporary file in;
@@ -947,6 +967,10 @@ public class FileUtils {
      * exist before this method was invoked, any subsequent invocation
      * of this method will yield a different file name.</p>
      *
+     * <p>If the filesystem where the temporary file is created
+     * supports POSIX permissions, the file will only be readable and
+     * writable by the current user.</p>
+     *
      * @param project reference to the current Ant project.
      * @param prefix file name prefix.
      * @param suffix file extension; include the '.'.
@@ -984,7 +1008,12 @@ public class FileUtils {
 
         if (createFile) {
             try {
-                result = File.createTempFile(prefix, suffix, new File(parent));
+                final Path parentPath = new File(parent).toPath();
+                final PosixFileAttributeView parentPosixAttributes =
+                    Files.getFileAttributeView(parentPath, PosixFileAttributeView.class);
+                result = Files.createTempFile(parentPath, prefix, suffix,
+                    parentPosixAttributes != null ? TMPFILE_ATTRIBUTES : NO_TMPFILE_ATTRIBUTES)
+                    .toFile();
             } catch (IOException e) {
                 throw new BuildException("Could not create tempfile in "
                         + parent, e);
@@ -1015,6 +1044,10 @@ public class FileUtils {
      * yield a different file name.
      * </p>
      *
+     * <p>If the filesystem where the temporary file is created
+     * supports POSIX permissions, the file will only be readable and
+     * writable by the current user.</p>
+     *
      * @param prefix file name prefix.
      * @param suffix
      *            file extension; include the '.'.
diff --git a/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java b/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java
index fc58456..d2ea122 100644
--- a/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java
+++ b/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java
@@ -24,8 +24,11 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.nio.file.attribute.PosixFileAttributeView;
+import java.nio.file.attribute.PosixFilePermission;
 import java.util.Locale;
 import java.util.Optional;
+import java.util.Set;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.MagicTestNames;
@@ -40,7 +43,9 @@ import org.junit.rules.TemporaryFolder;
 import static org.apache.tools.ant.util.FileUtils.getFileUtils;
 import static org.apache.tools.ant.util.FileUtils.isCaseSensitiveFileSystem;
 import static org.apache.tools.ant.util.FileUtils.isContextRelativePath;
+import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.hamcrest.Matchers.endsWith;
+import static org.hamcrest.Matchers.hasSize;
 import static org.hamcrest.Matchers.startsWith;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -370,6 +375,14 @@ public class FileUtilsTest {
         assertTrue("File was created", tmp1.exists());
         assertEquals((new File(tmploc, tmp1.getName())).getAbsolutePath(),
                 tmp1.getAbsolutePath());
+        final PosixFileAttributeView attributes =
+            Files.getFileAttributeView(tmp1.toPath(), PosixFileAttributeView.class);
+        if (attributes != null) {
+            final Set<PosixFilePermission> perm = attributes.readAttributes().permissions();
+            assertThat(perm,
+                containsInAnyOrder(PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE));
+            assertThat(perm, hasSize(2));
+        }
         tmp1.delete();
 
         // null parent dir, project without magic property


[ant] 01/03: Merge branch '1.9.x'

Posted by bo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bodewig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ant.git

commit fe7e9617ed54bb4aeae2e79871d022cbfdddbf3d
Merge: bc9fed1 9c1f4d9
Author: Stefan Bodewig <bo...@apache.org>
AuthorDate: Tue May 5 14:51:38 2020 +0200

    Merge branch '1.9.x'

 WHATSNEW                                           |  3 +
 manual/Tasks/cab.html                              |  4 ++
 manual/Tasks/cvstagdiff.html                       |  2 +
 manual/Tasks/ejb.html                              |  3 +
 manual/Tasks/exec.html                             |  2 +
 manual/Tasks/fixcrlf.html                          | 11 +++-
 manual/Tasks/ftp.html                              |  7 ++-
 manual/Tasks/javadoc.html                          |  5 +-
 manual/Tasks/replaceregexp.html                    |  8 ++-
 manual/Types/selectors.html                        |  4 ++
 manual/running.html                                | 48 +++++++++++++++-
 src/main/org/apache/tools/ant/MagicNames.java      |  8 +++
 .../org/apache/tools/ant/taskdefs/FixCRLF.java     |  2 +-
 .../org/apache/tools/ant/taskdefs/Javadoc.java     |  4 +-
 src/main/org/apache/tools/ant/taskdefs/Jikes.java  |  2 +-
 .../org/apache/tools/ant/taskdefs/Replace.java     |  2 +-
 .../org/apache/tools/ant/taskdefs/TempFile.java    |  2 +-
 src/main/org/apache/tools/ant/taskdefs/Zip.java    |  2 +-
 .../taskdefs/compilers/DefaultCompilerAdapter.java |  2 +-
 .../tools/ant/taskdefs/cvslib/CvsTagDiff.java      |  2 +-
 .../ant/taskdefs/launcher/VmsCommandLauncher.java  |  8 +--
 .../apache/tools/ant/taskdefs/optional/Cab.java    |  4 +-
 .../tools/ant/taskdefs/optional/ReplaceRegExp.java |  2 +-
 .../ant/taskdefs/optional/junit/JUnitTask.java     |  2 +-
 .../tools/ant/taskdefs/optional/net/FTP.java       |  2 +-
 .../taskdefs/optional/net/FTPTaskMirrorImpl.java   |  2 +-
 .../modifiedselector/ModifiedSelector.java         |  2 +-
 src/main/org/apache/tools/ant/util/FileUtils.java  | 66 ++++++++++++++++------
 .../org/apache/tools/ant/util/JavaEnvUtils.java    |  2 +-
 .../apache/tools/ant/util/SymbolicLinkUtils.java   |  7 ++-
 .../org/apache/tools/ant/util/FileUtilsTest.java   | 62 ++++++++++++++++----
 31 files changed, 221 insertions(+), 61 deletions(-)

diff --cc WHATSNEW
index 125def9,4f7841a..6a74163
--- a/WHATSNEW
+++ b/WHATSNEW
@@@ -57,52 -10,10 +57,55 @@@ Other changes
   * rmic has been removed from Java 15. The task will now throw an
     exception if you try to use it while running Java 15 or newer.
  
+  * a new property ant.tmpdir provides improved control over the
+    location Ant uses to create temporary files
+ 
 -Changes from Ant 1.9.13 TO Ant 1.9.14
 +Changes from Ant 1.10.6 TO Ant 1.10.7
 +=====================================
 +
 +Fixed bugs:
 +-----------
 +
 + * FTP still tries checking or entering directories after a timeout
 +   Bugzilla Report 63454
 +
 + * junitlauncher - does not detect failure in @BeforeAll
 +   Bugzilla Report 63479
 +
 + * Error using ant-1.10.6 with jdk8
 +   Bugzilla Report 63457
 +
 + * FTP task no longer duplicates a check for a file being a symlink.
 +   Bugzilla Report 63259
 +
 + * junitlauncher task, when used in fork mode with "<testclasses>",
 +   used to create the wrong number of listeners per test class. This
 +   has now been fixed.
 +   Bugzilla Report 63446
 +
 + * The "legacy-xml" junitlauncher task's listener would not include
 +   @ParameterizedTest testcases in its XML report file. This has now
 +   been fixed.
 +   Bugzilla Report 63680
 +
 +Other changes:
 +--------------
 +
 + * FTP task timeout improvements.
 +   Bugzilla Reports 63252 and 47414
 +
 + * junitlauncher task now supports selecting test classes for execution,
 +   based on the JUnit 5 tags, through the new "includeTags" and
 +   "excludeTags" attributes.
 +
 + * prefer https over http when building ant itself, and in the ant 
 +   documentation and sources
 +
 + * changed the references and Maven coordinates of JavaMail dependency
 +   to Jakarta Mail and thus javax.mail to jakarta.mail - and upgraded
 +   the dependency to 1.6.3.
 +
 +Changes from Ant 1.10.5 TO Ant 1.10.6
  =====================================
  
  Changes that could break older environments:
diff --cc manual/Tasks/cab.html
index 24f8af6,42312f5..a773b04
--- a/manual/Tasks/cab.html
+++ b/manual/Tasks/cab.html
@@@ -24,78 -24,92 +24,82 @@@
  
  <body>
  
 -<h2><a name="cab">Cab</a></h2>
 +<h2 id="cab">Cab</h2>
  <h3>Description</h3>
 -<p>The cab task creates Microsoft cab archive files.  It is invoked
 -similar to the <a href="../Tasks/jar.html">jar</a> or <a href="../Tasks/zip.html">zip</a> tasks.
 -This task will work on Windows using the external cabarc tool (provided by Microsoft)
 -which must be located in your executable path.</p>
 -<p>To use this task on other platforms you need to download and compile libcabinet from
 -<a href="http://trill.cis.fordham.edu/~barbacha/cabinet_library/">
 -http://trill.cis.fordham.edu/~barbacha/cabinet_library/</a>.</p>
 -<p>See the section on <a href="../dirtasks.html#directorybasedtasks">directory based
 -tasks</a>, on how the inclusion/exclusion of files works, and how to
 -write patterns.</p>
 -<p>This task forms an implicit <a href="../Types/fileset.html">FileSet</a> and
 -supports most attributes of <code>&lt;fileset&gt;</code>
 -(<code>dir</code> becomes <code>basedir</code>) as well as the nested
 -<code>&lt;include&gt;</code>, <code>&lt;exclude&gt;</code> and
 -<code>&lt;patternset&gt;</code> elements.</p>
 +<p>The cab task creates Microsoft cabinet archive files.  It is invoked similar to
 +the <a href="../Tasks/jar.html">jar</a> or <a href="../Tasks/zip.html">zip</a> tasks.  This task
 +will work on Windows using the external <kbd>cabarc</kbd> tool (provided by Microsoft) which must
 +be located in your executable path.</p>
 +<p>To use this task on other platforms you need to download and compile <code>libcabinet</code>
 +from <a href="https://www.freshports.org/archivers/libcabinet/"
 +target="_top">https://www.freshports.org/archivers/libcabinet/</a>.</p>
 +<p>See the section on <a href="../dirtasks.html#directorybasedtasks">directory based tasks</a>, on
 +how the inclusion/exclusion of files works, and how to write patterns.</p>
 +<p>This task forms an implicit <a href="../Types/fileset.html">FileSet</a> and supports most
 +attributes of <code>&lt;fileset&gt;</code> (<var>dir</var> becomes <var>basedir</var>) as well as
 +the nested <code>&lt;include&gt;</code>, <code>&lt;exclude&gt;</code>
 +and <code>&lt;patternset&gt;</code> elements.</p>
+ 
+ <p>On non-Unix platforms this task writes the list of files to archive
+   to the <a href="../running.html#tmpdir">temporary directory</a>.</p>
+ 
  <h3>Parameters</h3>
 -<table border="1" cellpadding="2" cellspacing="0">
 +<table class="attr">
    <tr>
 -    <td valign="top"><b>Attribute</b></td>
 -    <td valign="top"><b>Description</b></td>
 -    <td align="center" valign="top"><b>Required</b></td>
 +    <th scope="col">Attribute</th>
 +    <th scope="col">Description</th>
 +    <th scope="col">Required</th>
    </tr>
    <tr>
 -    <td valign="top">cabfile</td>
 -    <td valign="top">the name of the cab file to create.</td>
 -    <td valign="top" align="center">Yes</td>
 +    <td>cabfile</td>
 +    <td>the name of the cab file to create.</td>
 +    <td>Yes</td>
    </tr>
    <tr>
 -    <td valign="top">basedir</td>
 -    <td valign="top">the directory to start archiving files from.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>basedir</td>
 +    <td>the directory to start archiving files from.</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">verbose</td>
 -    <td valign="top">set to &quot;yes&quot; if you want to see the output from
 -      the cabarc tool.  defaults to &quot;no&quot;.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>verbose</td>
 +    <td>set to <q>yes</q> if you want to see the output from the <code>cabarc</code> tool.</td>
 +    <td>No; defaults to <q>no</q></td>
    </tr>
    <tr>
 -    <td valign="top">compress</td>
 -    <td valign="top">set to &quot;no&quot; to store files without compressing.
 -      defaults to &quot;yes&quot;.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>compress</td>
 +    <td>set to <q>no</q> to store files without compressing.</td>
 +    <td>No; defaults to <q>yes</q></td>
    </tr>
    <tr>
 -    <td valign="top">options</td>
 -    <td valign="top">use to set additional command-line options for
 -      the cabarc tool.  should not normally be necessary.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>options</td>
 +    <td>set additional command-line options for the <code>cabarc</code> tool.  Should not
 +      normally be necessary.</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">includes</td>
 -    <td valign="top">comma- or space-separated list of patterns of files that
 -      must be included. All files are included when omitted.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>includes</td>
 +    <td>comma- or space-separated list of patterns of files that must be included.</td>
 +    <td>No; defaults to all (<q>**</q>)</td>
    </tr>
    <tr>
 -    <td valign="top">includesfile</td>
 -    <td valign="top">the name of a file. Each line of this file is
 -      taken to be an include pattern</td>
 -    <td valign="top" align="center">No</td>
 +    <td>includesfile</td>
 +    <td>name of a file. Each line of this file is taken to be an include pattern</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">excludes</td>
 -    <td valign="top">comma- or space-separated list of patterns of files that
 -      must be excluded. No files (except default excludes) are excluded
 -      when omitted.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>excludes</td>
 +    <td>comma- or space-separated list of patterns of files that must be excluded.</td>
 +    <td>No; defaults to default excludes or none if <var>defaultexcludes</var> is <q>no</q></td>
    </tr>
    <tr>
 -    <td valign="top">excludesfile</td>
 -    <td valign="top">the name of a file. Each line of this file is
 -      taken to be an exclude pattern</td>
 -    <td valign="top" align="center">No</td>
 +    <td>excludesfile</td>
 +    <td>name of a file. Each line of this file is taken to be an exclude pattern</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">defaultexcludes</td>
 -    <td valign="top">indicates whether default excludes should be used
 -      or not (&quot;yes&quot;/&quot;no&quot;). Default excludes are used when omitted.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>defaultexcludes</td>
 +    <td>indicates whether default excludes should be used or not (<q>yes|no</q>).</td>
 +    <td>No; defaults to <q>yes</q></td>
    </tr>
  </table>
  <h3>Parameters specified as nested elements</h3>
diff --cc manual/Tasks/cvstagdiff.html
index aef891f,f4083a9..ad1c67e
--- a/manual/Tasks/cvstagdiff.html
+++ b/manual/Tasks/cvstagdiff.html
@@@ -21,55 -21,61 +21,57 @@@
  <title>CvsTagDiff Task</title>
  </head>
  <body>
 -<h2><a name="cvstagdiff">CvsTagDiff</a></h2>
 +<h2 id="cvstagdiff">CvsTagDiff</h2>
  <h3>Description</h3>
 -<p>Generates an XML-formatted report file of the changes between two tags or dates recorded in a
 -<a href="http://www.nongnu.org/cvs/" target="_top">CVS</a> repository. </p>
 -<p><b>Important:</b> This task needs &quot;<code>cvs</code>&quot; on the path. If it isn't, you will get
 -an error (such as error <code>2</code> on windows). If <code>&lt;cvs&gt;</code> doesn't work, try to execute <code>cvs.exe</code>
 -from the command line in the target directory in which you are working.
 -Also note that this task assumes that the cvs executable is compatible
 -with the Unix version from cvshome.org, this is not completely true
 -for certain other cvs clients - like CVSNT for example - and some
 -operation may fail when using such an incompatible client.
 -</p>
 +<p>Generates an XML-formatted report file of the changes between two tags or dates recorded in
 +a <a href="https://www.nongnu.org/cvs/" target="_top">CVS</a> repository.</p>
 +<p><strong>Important</strong>: This task needs <kbd>cvs</kbd> on the path. If it isn't, you will get
 +an error (such as <code>error=2</code> on Windows). If <code>&lt;cvs&gt;</code> doesn't work, try to
 +execute <kbd>cvs.exe</kbd> from the command line in the target directory in which you are working.
 +Also note that this task assumes that the <kbd>cvs</kbd> executable is compatible with the Unix
 +version, this is not completely true for certain other CVS clients&mdash;like CVSNT for
 +example&mdash;and some operation may fail when using such an incompatible client.</p>
+ <p>This task captures the output of the CVS command in a file inside of
+   the <a href="../running.html#tmpdir">temporary directory</a>.</p>
  <h3>Parameters</h3>
 -<table border="1" cellpadding="2" cellspacing="0">
 +<table class="attr">
    <tr>
 -    <td valign="top"><b>Attribute</b></td>
 -    <td valign="top"><b>Description</b></td>
 -    <td align="center" valign="top"><b>Required</b></td>
 +    <th scope="col">Attribute</th>
 +    <th scope="col">Description</th>
 +    <th scope="col">Required</th>
    </tr>
    <tr>
 -    <td valign="top">startTag</td>
 -    <td valign="top">The earliest tag from which diffs are to be
 -     included in the report.</td>
 -    <td align="center" valign="top" rowspan="2">exactly one of the two.</td>
 +    <td>startTag</td>
 +    <td>The earliest tag from which diffs are to be included in the report.</td>
 +    <td rowspan="2">Exactly one of the two</td>
    </tr>
    <tr>
 -    <td valign="top">startDate</td>
 -    <td valign="top">The earliest date from which diffs are to be
 -     included in the report.<br>
 -     accepts all formats accepted by the cvs command for -D date_spec arguments</td>
 +    <td>startDate</td>
 +    <td class="left">The earliest date from which diffs are to be included in the
 +     report.<br/>Accepts all formats accepted by the <kbd>cvs</kbd> command for <kbd>-D
 +     date_spec</kbd> arguments.</td>
    </tr>
    <tr>
 -    <td valign="top">endTag</td>
 -    <td valign="top">The latest tag from which diffs are to be
 -     included in the report.</td>
 -    <td align="center" valign="top" rowspan="2">exactly one of the two.</td>
 +    <td>endTag</td>
 +    <td>The latest tag from which diffs are to be included in the report.</td>
 +    <td rowspan="2">Exactly one of the two</td>
    </tr>
    <tr>
 -    <td valign="top">endDate</td>
 -    <td valign="top">The latest date from which diffs are to be
 -     included in the report.<br>
 -     accepts all formats accepted by the cvs command for -D date_spec arguments</td>
 +    <td>endDate</td>
 +    <td class="left">The latest date from which diffs are to be included in the report.<br/>Accepts
 +     all formats accepted by the <kbd>cvs</kbd> command for <kbd>-D date_spec</kbd>
 +     arguments.</td>
    </tr>
    <tr>
 -    <td valign="top">destfile</td>
 -    <td valign="top">The file in which to write the diff report.</td>
 -    <td align="center" valign="top">Yes</td>
 +    <td>destfile</td>
 +    <td>The file in which to write the diff report.</td>
 +    <td>Yes</td>
    </tr>
    <tr>
 -    <td valign="top">ignoreRemoved</td>
 -    <td valign="top">When set to true, the report will not include any
 -      removed files.  <em>Since Apache Ant 1.8.0</em></td>
 -    <td align="center" valign="top">No, defaults to false.</td>
 +    <td>ignoreRemoved</td>
 +    <td>When set to <q>true</q>, the report will not include any removed files.  <em>Since Apache
 +      Ant 1.8.0</em></td>
 +    <td>No; defaults to <q>false</q></td>
  </table>
  
  <h3>Parameters inherited from the <code>cvs</code> task</h3>
diff --cc manual/Tasks/ejb.html
index 24fb9c2,37a34a9..0e78bde
--- a/manual/Tasks/ejb.html
+++ b/manual/Tasks/ejb.html
@@@ -1221,308 -1386,350 +1221,311 @@@ the <code>websphere.home</code> propert
    </tr>
  </table>
  
 -<p>This example shows ejbjar being used to generate deployment jars for all deployment descriptors
 -in the descriptor dir:</p>
 +<p>This example shows <code>ejbjar</code> being used to generate deployment jars for all deployment
 +descriptors in the <var>descriptordir</var>:</p>
  
  <pre>
 -    &lt;property name=&quot;websphere.home&quot; value=&quot;${was4.home}&quot;/&gt;
 -    &lt;ejbjar srcdir="${build.class}" descriptordir="etc/ejb"&gt;
 -      &lt;include name="*-ejb-jar.xml"/&gt;
 -      &lt;websphere dbvendor="DB2UDBOS390_V6"
 -                 ejbdeploy="true"
 -                 oldCMP="false"
 -                 tempdir="/tmp"
 -                 destdir="${dist.server}"&gt;
 -        &lt;wasclasspath&gt;
 -          &lt;pathelement location="${was4.home}/deploytool/itp/plugins/org.eclipse.core.boot/boot.jar"/&gt;
 -          &lt;pathelement location="${was4.home}/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime/batch.jar"/&gt;
 -          &lt;pathelement location="${was4.home}/lib/xerces.jar"/&gt;
 -          &lt;pathelement location="${was4.home}/lib/ivjejb35.jar"/&gt;
 -          &lt;pathelement location="${was4.home}/lib/j2ee.jar"/&gt;
 -          &lt;pathelement location="${was4.home}/lib/vaprt.jar"/&gt;
 -        &lt;/wasclasspath&gt;
 -        &lt;classpath&gt;
 -          &lt;path refid="build.classpath"/&gt;
 -        &lt;/classpath&gt;
 -      &lt;/websphere&gt;
 -      &lt;dtd publicId="-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN"
 -           location="${lib}/dtd/ejb-jar_1_1.dtd"/&gt;
 -    &lt;/ejbjar&gt;
 -</pre>
 -
 -<h3><a name="ejbjar_iplanet">iPlanet Application Server (iAS) element</a></h3>
 -
 -The &lt;iplanet&lt; nested element is used to build iAS-specific stubs and
 -
 -skeletons and construct a JAR file which may be deployed to the iPlanet
 -Application Server 6.0.  The build process will always determine if
 -the EJB stubs/skeletons and the EJB-JAR file are up to date, and it will
 -do the minimum amount of work required.
 -<p>Like the WebLogic element, a naming convention for the EJB descriptors
 -is most commonly used to specify the name for the completed JAR file.
 -For example, if the EJB descriptor ejb/Account-ejb-jar.xml is found in
 -the descriptor directory, the iplanet element will search for an iAS-specific
 -EJB descriptor file named ejb/Account-ias-ejb-jar.xml (if it isn't found,
 -the task will fail) and a JAR file named ejb/Account.jar will be written
 -in the destination directory.  Note that when the EJB descriptors
 -are added to the JAR file, they are automatically renamed META-INF/ejb-jar.xml
 -and META-INF/ias-ejb-jar.xml.</p>
 -<p>Of course, this naming behaviour can be modified by specifying attributes
 -in the ejbjar task (for example, basejarname, basenameterminator, and flatdestdir)
 -as well as the iplanet element (for example, suffix).  Refer to the
 -appropriate documentation for more details.</p>
 -<h3>
 -Parameters:</h3>
 -
 -<table border="1" cellpadding="2" cellspacing="0">
 -<tr>
 -<td valign="top"><b>Attribute</b></td>
 -
 -<td valign="top"><b>Description</b></td>
 -
 -<td align="center" valign="top"><b>Required</b></td>
 -</tr>
 -
 -<tr>
 -<td valign="top">destdir</td>
 -
 -<td valign="top">The base directory into which the generated JAR files will
 -be written. Each JAR file is written in directories which correspond to
 -their location within the "descriptordir" namespace.</td>
 -
 -<td align="center" valign="top">Yes</td>
 -</tr>
 +&lt;property name=&quot;websphere.home&quot; value=&quot;${was4.home}&quot;/&gt;
 +&lt;ejbjar srcdir="${build.class}" descriptordir="etc/ejb"&gt;
 +  &lt;include name="*-ejb-jar.xml"/&gt;
 +  &lt;websphere dbvendor="DB2UDBOS390_V6"
 +             ejbdeploy="true"
 +             oldCMP="false"
 +             tempdir="/tmp"
 +             destdir="${dist.server}"&gt;
 +    &lt;wasclasspath&gt;
 +      &lt;pathelement location="${was4.home}/deploytool/itp/plugins/org.eclipse.core.boot/boot.jar"/&gt;
 +      &lt;pathelement location="${was4.home}/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime/batch.jar"/&gt;
 +      &lt;pathelement location="${was4.home}/lib/xerces.jar"/&gt;
 +      &lt;pathelement location="${was4.home}/lib/ivjejb35.jar"/&gt;
 +      &lt;pathelement location="${was4.home}/lib/j2ee.jar"/&gt;
 +      &lt;pathelement location="${was4.home}/lib/vaprt.jar"/&gt;
 +    &lt;/wasclasspath&gt;
 +    &lt;classpath&gt;
 +      &lt;path refid="build.classpath"/&gt;
 +    &lt;/classpath&gt;
 +  &lt;/websphere&gt;
 +  &lt;dtd publicId="-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN"
 +       location="${lib}/dtd/ejb-jar_1_1.dtd"/&gt;
 +&lt;/ejbjar&gt;</pre>
  
 -<tr>
 -<td valign="top">classpath</td>
 +<h3 id="ejbjar_iplanet">iPlanet Application Server (iAS) element</h3>
  
 -<td valign="top">The classpath used when generating EJB stubs and skeletons.
 -If omitted, the classpath specified in the "ejbjar" parent task will be
 -used.  If specified, the classpath elements will be prepended to the
 -classpath specified in the parent "ejbjar" task. Note that nested "classpath"
 -elements may also be used.</td>
 +<p>The <code>&lt;iplanet&gt;</code> nested element is used to build iAS-specific stubs and skeletons
 +and construct a JAR file which may be deployed to the iPlanet Application Server 6.0.  The build
 +process will always determine if the EJB stubs/skeletons and the EJB jar file are up to date, and it
 +will do the minimum amount of work required.</p>
 +<p>Like the <code>weblogic</code> element, a naming convention for the EJB descriptors is most
 +commonly used to specify the name for the completed JAR file.  For example, if the EJB
 +descriptor <samp>ejb/Account-ejb-jar.xml</samp> is found in the descriptor directory,
 +the <code>iplanet</code> element will search for an iAS-specific EJB descriptor file
 +named <samp>ejb/Account-ias-ejb-jar.xml</samp> (if it isn't found, the task will fail) and a JAR
 +file named <samp>ejb/Account.jar</samp> will be written in the destination directory.  Note that
 +when the EJB descriptors are added to the JAR file, they are automatically
 +renamed <samp>META-INF/ejb-jar.xml</samp> and <samp>META-INF/ias-ejb-jar.xml</samp>.</p>
 +<p>Of course, this naming behaviour can be modified by specifying attributes in
 +the <code>ejbjar</code> task (for example, <var>basejarname</var>, <var>basenameterminator</var>,
 +and <var>flatdestdir</var>) as well as the <code>iplanet</code> element (for
 +example, <var>suffix</var>).  Refer to the appropriate documentation for more details.</p>
  
 -<td align="center" valign="top">No</td>
 -</tr>
 +<h3>Parameters</h3>
  
 -<tr>
 -<td valign="top">keepgenerated</td>
 +<table class="attr">
 +  <tr>
 +    <th scope="col">Attribute</th>
 +    <th scope="col">Description</th>
 +    <th scope="col">Required</th>
 +  </tr>
  
 -<td valign="top">Indicates whether or not the Java source files which are
 -generated by ejbc will be saved or automatically deleted. If "yes", the
 -source files will be retained.  If omitted, it defaults to "no". </td>
 +  <tr>
 +    <td>destdir</td>
 +    <td>The base directory into which the generated JAR files will be written. Each JAR file is
 +      written in directories which correspond to their location within the <var>descriptordir</var>
 +      namespace.</td>
 +    <td>Yes</td>
 +  </tr>
  
 -<td align="center" valign="top">No</td>
 -</tr>
 +  <tr>
 +    <td>classpath</td>
 +    <td>The classpath used when generating EJB stubs and skeletons.  If
 +      specified, <var>classpath</var> will be prepended to the classpath specified in the
 +      parent <code>ejbjar</code> task. Note that nested <code>classpath</code> elements may also be
 +      used.</td>
 +    <td>No; defaults to the classpath specified in the <code>ejbjar</code> parent task</td>
 +  </tr>
  
 -<tr>
 -<td valign="top">debug</td>
 +  <tr>
 +    <td>keepgenerated</td>
 +    <td>Indicates whether or not the Java source files which are generated by <kbd>ejbc</kbd> will
 +      be saved or automatically deleted. If <q>yes</q>, the source files will be retained.</td>
 +    <td>No; defaults to <q>no</q></td>
 +  </tr>
  
 -<td>Indicates whether or not the ejbc utility should log additional debugging
 -statements to the standard output. If "yes", the additional debugging statements
 -will be generated.  If omitted, it defaults to "no". </td>
 +  <tr>
 +    <td>debug</td>
 +    <td>Indicates whether or not the <kbd>ejbc</kbd> utility should log additional debugging
 +      statements to the standard output. If <q>yes</q>, the additional debugging statements will be
 +      generated.</td>
 +    <td>No; defaults to <q>no</q></td>
 +  </tr>
  
 -<td align="center" valign="top">No</td>
 -</tr>
 +  <tr>
 +    <td>iashome</td>
 +    <td>May be used to specify the "home" directory for this iAS installation.  This is used to find
 +      the <kbd>ejbc</kbd> utility if it isn't included in the user's system path.  If specified, it
 +      should refer to the <samp>[install-location]/iplanet/ias6/ias</samp> directory.</td>
 +    <td>No; by default, the <kbd>ejbc</kbd> utility must be on the user's system path.</td>
 +  </tr>
  
 -<tr>
 -<td valign="top">iashome</td>
 +  <tr>
 +    <td>suffix</td>
 +    <td>String value appended to the JAR filename when creating each JAR.</td>
 +    <td>No; defaults to <q>.jar</q></td>
 +  </tr>
 +</table>
  
 -<td>May be used to specify the "home" directory for this iAS installation.
 -This is used to find the ejbc utility if it isn't included in the user's
 -system path.  If specified, it should refer to the [install-location]/iplanet/ias6/ias
 -directory.  If omitted, the ejbc utility must be on the user's system
 -path. </td>
 +<p>As noted above, the <code>iplanet</code> element supports
 +additional <code>&lt;classpath&gt;</code> nested elements.</p>
 +<h3>Examples</h3>
 +<p>This example demonstrates the typical use of the <code>&lt;iplanet&gt;</code> nested element.  It
 +will name each EJB jar using the "basename" prepended to each standard EJB descriptor.  For example,
 +if the descriptor named <samp>Account-ejb-jar.xml</samp> is processed, the EJB-JAR will be
 +named <samp>Account.jar</samp></p>
 +<pre>
 +&lt;ejbjar srcdir="${build.classesdir}"
 +        descriptordir="${src}"&gt;
  
 -<td align="center" valign="top">No</td>
 -</tr>
 +    &lt;iplanet destdir="${assemble.ejbjar}"
 +             classpath="${ias.ejbc.cpath}"/&gt;
 +    &lt;include name="**/*-ejb-jar.xml"/&gt;
 +    &lt;exclude name="**/*ias-*.xml"/&gt;
 +&lt;/ejbjar&gt;</pre>
  
 -<tr>
 -<td valign="top">suffix</td>
 +<p>This example demonstrates the use of a nested <code>classpath</code> element as well as some of
 +the other optional attributes.</p>
 +<pre>
 +&lt;ejbjar srcdir="${build.classesdir}"
 +        descriptordir="${src}"&gt;
  
 -<td>String value appended to the JAR filename when creating each JAR.
 -If omitted, it defaults to ".jar". </td>
 +    &lt;iplanet destdir="${assemble.ejbjar}"
 +             iashome="${ias.home}"
 +             debug="yes"
 +             keepgenerated="yes"&gt;
 +        &lt;classpath&gt;
 +            &lt;pathelement path="."/&gt;
 +            &lt;pathelement path="${build.classpath}"/&gt;
 +        &lt;/classpath&gt;
 +    &lt;/iplanet&gt;
 +    &lt;include name="**/*-ejb-jar.xml"/&gt;
 +    &lt;exclude name="**/*ias-*.xml"/&gt;
 +&lt;/ejbjar&gt;</pre>
  
 -<td align="center" valign="top">No</td>
 -</tr>
 -</table>
 +<p>This example demonstrates the use of <var>basejarname</var> attribute.  In this case, the
 +completed EJB jar will be named <samp>HelloWorld.jar</samp>.  If multiple EJB descriptors might be
 +found, care must be taken to ensure that the completed JAR files don't overwrite each other.</p>
  
 -<p>As noted above, the iplanet element supports additional <code>&lt;classpath&gt;</code>
 -nested elements.</p>
 -<h3>
 -Examples</h3>
 -This example demonstrates the typical use of the <code>&lt;iplanet&gt;</code> nested element.
 -It will name each EJB-JAR using the "basename" prepended to each standard
 -EJB descriptor.  For example, if the descriptor named "Account-ejb-jar.xml"
 -is processed, the EJB-JAR will be named "Account.jar"
  <pre>
 -    &lt;ejbjar srcdir="${build.classesdir}"
 -            descriptordir="${src}"&gt;
 -
 -            &lt;iplanet destdir="${assemble.ejbjar}"
 -                     classpath="${ias.ejbc.cpath}"/&gt;
 -            &lt;include name="**/*-ejb-jar.xml"/&gt;
 -            &lt;exclude name="**/*ias-*.xml"/&gt;
 -    &lt;/ejbjar&gt;</pre>
 +&lt;ejbjar srcdir="${build.classesdir}"
 +        descriptordir="${src}"
 +        basejarname="HelloWorld"&gt;
 +
 +    &lt;iplanet destdir="${assemble.ejbjar}"
 +             classpath="${ias.ejbc.cpath}"/&gt;
 +    &lt;include name="**/*-ejb-jar.xml"/&gt;
 +    &lt;exclude name="**/*ias-*.xml"/&gt;
 +&lt;/ejbjar&gt;</pre>
 +
 +<p>This example demonstrates the use of the <code>dtd</code> nested element. If the local copies of
 +the DTDs are included in the classpath, they will be automatically referenced without the nested
 +elements.  In iAS 6.0 SP2, these local DTDs are found in
 +the <samp>[iAS-install-directory]/APPS</samp> directory.  In iAS 6.0 SP3, these local DTDs are found
 +in the <samp>[iAS-install-directory]/dtd</samp> directory.</p>
  
 -This example demonstrates the use of a nested classpath element as well
 -as some of the other optional attributes.
 -<pre>
 -    &lt;ejbjar srcdir="${build.classesdir}"
 -            descriptordir="${src}"&gt;
 -
 -            &lt;iplanet destdir="${assemble.ejbjar}"
 -                     iashome="${ias.home}"
 -                     debug="yes"
 -                     keepgenerated="yes"&gt;
 -                     &lt;classpath&gt;
 -                         &lt;pathelement path="."/&gt;
 -                         &lt;pathelement path="${build.classpath}"/&gt;
 -                     &lt;/classpath&gt;
 -            &lt;/iplanet&gt;
 -            &lt;include name="**/*-ejb-jar.xml"/&gt;
 -            &lt;exclude name="**/*ias-*.xml"/&gt;
 -    &lt;/ejbjar&gt;</pre>
 -
 -This example demonstrates the use of basejarname attribute.  In this
 -case, the completed EJB-JAR will be named "HelloWorld.jar"  If multiple
 -EJB descriptors might be found, care must be taken to ensure that the completed
 -JAR files don't overwrite each other.
  <pre>
 -    &lt;ejbjar srcdir="${build.classesdir}"
 -            descriptordir="${src}"
 -            basejarname="HelloWorld"&gt;
 -
 -            &lt;iplanet destdir="${assemble.ejbjar}"
 -                     classpath="${ias.ejbc.cpath}"/&gt;
 -            &lt;include name="**/*-ejb-jar.xml"/&gt;
 -            &lt;exclude name="**/*ias-*.xml"/&gt;
 -    &lt;/ejbjar&gt;</pre>
 -This example demonstrates the use of the dtd nested element. If the local
 -copies of the DTDs are included in the classpath, they will be automatically
 -referenced without the nested elements.  In iAS 6.0 SP2, these local DTDs are
 -found in the [iAS-install-directory]/APPS directory.  In iAS 6.0 SP3, these
 -local DTDs are found in the [iAS-install-directory]/dtd directory.
 -<pre>
 -    &lt;ejbjar srcdir="${build.classesdir}"
 -            descriptordir="${src}"&gt;
 -            &lt;iplanet destdir="${assemble.ejbjar}"&gt;
 -                     classpath="${ias.ejbc.cpath}"/&gt;
 -            &lt;include name="**/*-ejb-jar.xml"/&gt;
 -            &lt;exclude name="**/*ias-*.xml"/&gt;
 -
 -            &lt;dtd publicId="-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN"
 -                 location="${ias.home}/APPS/ejb-jar_1_1.dtd"/&gt;
 -            &lt;dtd publicId="-//Sun Microsystems, Inc.//DTD iAS Enterprise JavaBeans 1.0//EN"
 -                 location="${ias.home}/APPS/IASEjb_jar_1_0.dtd"/&gt;
 -    &lt;/ejbjar&gt;</pre>
 -
 -<h3><a name="ejbjar_jonas">JOnAS (Java Open Application Server) element</a></h3>
 -
 -<p>The <code>&lt;jonas&gt;</code> nested element is used to build JOnAS-specific stubs and
 -skeletons thanks to the <code>GenIC</code> specific tool, and construct a JAR
 -file which may be deployed to the JOnAS Application Server. The build process
 -will always determine if the EJB stubs/skeletons and the EJB-JAR file are up to
 -date, and it will do the minimum amount of work required.</p>
 -
 -<p>Like the WebLogic element, a naming convention for the EJB descriptors is
 -most commonly used to specify the name for the completed JAR file. For example,
 -if the EJB descriptor <code>ejb/Account-ejb-jar.xml</code> is found in the
 -descriptor directory, the <code>&lt;jonas&gt;</code> element will search for a JOnAS-specific
 -EJB descriptor file named <code>ejb/Account-jonas-ejb-jar.xml</code> and a JAR
 -file named <code>ejb/Account.jar</code> will be written in the destination
 -directory. But the <code>&lt;jonas&gt;</code> element can also use the JOnAS naming
 -convention. With the same example as below, the EJB descriptor can also be named
 -<code>ejb/Account.xml</code> (no base name terminator here) in the descriptor
 -directory. Then the <code>&lt;jonas&gt;</code> element will search for a JOnAS-specific EJB
 -descriptor file called <code>ejb/jonas-Account.xml</code>. This convention do
 -not follow strictly the ejb-jar naming convention recommendation but is
 -supported for backward compatibility with previous version of JOnAS.</p>
 -
 -<p>Note that when the EJB descriptors are added to the JAR file, they are
 -automatically renamed <code>META-INF/ejb-jar.xml</code> and
 -<code>META-INF/jonas-ejb-jar.xml</code>.</p>
 +&lt;ejbjar srcdir="${build.classesdir}"
 +        descriptordir="${src}"&gt;
 +    &lt;iplanet destdir="${assemble.ejbjar}"&gt;
 +             classpath="${ias.ejbc.cpath}"/&gt;
 +    &lt;include name="**/*-ejb-jar.xml"/&gt;
 +    &lt;exclude name="**/*ias-*.xml"/&gt;
 +
 +    &lt;dtd publicId="-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN"
 +         location="${ias.home}/APPS/ejb-jar_1_1.dtd"/&gt;
 +    &lt;dtd publicId="-//Sun Microsystems, Inc.//DTD iAS Enterprise JavaBeans 1.0//EN"
 +         location="${ias.home}/APPS/IASEjb_jar_1_0.dtd"/&gt;
 +&lt;/ejbjar&gt;</pre>
 +
 +<h3 id="ejbjar_jonas">JOnAS (Java Open Application Server) element</h3>
 +
 +<p>The <code>&lt;jonas&gt;</code> nested element is used to build JOnAS-specific stubs and skeletons
 +thanks to the <code>GenIC</code> specific tool, and construct a JAR file which may be deployed to
 +the JOnAS Application Server. The build process will always determine if the EJB stubs/skeletons and
 +the EJB jar file are up to date, and it will do the minimum amount of work required.</p>
 +
 +<p>Like the WebLogic element, a naming convention for the EJB descriptors is most commonly used to
 +specify the name for the completed JAR file. For example, if the EJB
 +descriptor <samp>ejb/Account-ejb-jar.xml</samp> is found in the descriptor directory,
 +the <code>&lt;jonas&gt;</code> element will search for a JOnAS-specific EJB descriptor file
 +named <samp>ejb/Account-jonas-ejb-jar.xml</samp> and a JAR file named <samp>ejb/Account.jar</samp>
 +will be written in the destination directory. But the <code>&lt;jonas&gt;</code> element can also
 +use the JOnAS naming convention. With the same example as below, the EJB descriptor can also be
 +named <samp>ejb/Account.xml</samp> (no base name terminator here) in the descriptor directory. Then
 +the <code>&lt;jonas&gt;</code> element will search for a JOnAS-specific EJB descriptor file
 +called <samp>ejb/jonas-Account.xml</samp>. This convention do not follow strictly the EJB jar naming
 +convention recommendation but is supported for backward compatibility with previous version of
 +JOnAS.</p>
 +
 +<p>Note that when the EJB descriptors are added to the JAR file, they are automatically
 +renamed <samp>META-INF/ejb-jar.xml</samp> and <samp>META-INF/jonas-ejb-jar.xml</samp>.</p>
  
  <p>Of course, this naming behavior can be modified by specifying attributes in
 -the ejbjar task (for example, basejarname, basenameterminator, and flatdestdir)
 -as well as the iplanet element (for example, suffix). Refer to the appropriate
 -documentation for more details.</p>
 +the <code>ejbjar</code> task (for example, <var>basejarname</var>, <var>basenameterminator</var>,
 +and <var>flatdestdir</var>) as well as the <code>iplanet</code> element (for
 +example, <var>suffix</var>). Refer to the appropriate documentation for more details.</p>
  
+ <p>This task creates a directory for scratch data inside of
+   the <a href="../running.html#tmpdir">temporary directory</a>.</p>
+ 
 -<h3> Parameters:</h3>
 +<h3>Parameters</h3>
  
 -<table border="1" cellspacing="0" cellpadding="2">
 +<table class="attr">
    <tbody>
      <tr>
 -      <td valign="Top"><b>Attribute</b></td>
 -      <td valign="Top"><b>Description</b></td>
 -      <td align="Center" valign="Top"><b>Required</b></td>
 +      <th scope="col">Attribute</th>
 +      <th scope="col">Description</th>
 +      <th scope="col">Required</th>
      </tr>
      <tr>
 -      <td valign="Top">destdir</td>
 -      <td valign="Top">The base directory into which the generated JAR files
 -      will be written. Each JAR file is written in directories which correspond
 -      to their location within the "<code>descriptordir</code>" namespace.</td>
 -      <td align="Center" valign="Top">Yes</td>
 +      <td>destdir</td>
 +      <td>The base directory into which the generated JAR files will be written. Each JAR file is
 +        written in directories which correspond to their location within
 +        the <var>descriptordir</var> namespace.</td>
 +      <td>Yes</td>
      </tr>
      <tr>
 -      <td valign="Top">jonasroot</td>
 -      <td valign="Top">The root directory for JOnAS.</td>
 -      <td valign="Top" align="Center">Yes</td>
 +      <td>jonasroot</td>
 +      <td>The root directory for JOnAS.</td>
 +      <td>Yes</td>
      </tr>
      <tr>
 -      <td valign="Top">classpath</td>
 -      <td valign="Top">The classpath used when generating EJB stubs and
 -      skeletons. If omitted, the classpath specified in the "ejbjar" parent
 -      task will be used. If specified, the classpath elements will be prepended
 -      to the classpath specified in the parent "ejbjar" task (see also the ORB
 -      attribute documentation below). Note that nested "classpath" elements may
 -      also be used.</td>
 -      <td valign="Top" align="Center">No</td>
 +      <td>classpath</td>
 +      <td>The classpath used when generating EJB stubs and skeletons. If
 +        specified, <var>classpath</var> will be prepended to the classpath specified in the
 +        parent <code>ejbjar</code> task (see also the ORB attribute documentation below). Note that
 +        nested <code>classpath</code> elements may also be used.</td>
 +      <td>No; defaults to the classpath specified in the <code>ejbjar</code> parent task</td>
      </tr>
      <tr>
 -      <td valign="Top">keepgenerated</td>
 -      <td valign="Top"><code>true</code> if the intermediate Java
 -      source files generated by GenIC must be deleted or not. If
 -      omitted, it defaults to <code>false</code>.</td>
 -      <td align="Center" valign="Top">No</td>
 +      <td>keepgenerated</td>
 +      <td><q>true</q> if the intermediate Java source files generated by GenIC must be deleted or
 +      not.</td>
 +      <td>No; defaults to <q>false</q></td>
      </tr>
      <tr>
 -      <td valign="Top">nocompil</td>
 -      <td valign="Top"><code>true</code> if the generated source files
 -      must not be compiled via the java and rmi compilers. If omitted,
 -      it defaults to <code>false</code>.</td>
 -      <td align="Center" valign="Top">No</td>
 +      <td>nocompil</td>
 +      <td><q>true</q> if the generated source files must not be compiled via the Java and RMI
 +      compilers.</td>
 +      <td>No; defaults to <q>false</q></td>
      </tr>
      <tr>
 -      <td valign="Top">novalidation</td>
 -      <td valign="Top"><code>true</code> if the XML deployment descriptors must
 -      be parsed without validation. If omitted, it defaults to <code>false</code>.</td>
 -      <td align="Center" valign="Top">No</td>
 +      <td>novalidation</td>
 +      <td><q>true</q> if the XML deployment descriptors must be parsed without validation.</td>
 +      <td>No; defaults to <q>false</q></td>
      </tr>
      <tr>
 -      <td valign="Top">javac</td>
 -      <td valign="Top">Java compiler to use. If omitted, it defaults
 -      to the value of <code>build.compiler</code> property.</td>
 -      <td align="Center" valign="Top">No</td>
 +      <td>javac</td>
 +      <td>Java compiler to use.</td>
 +      <td>No; defaults
 +      to the value of <code>build.compiler</code> property</td>
      </tr>
      <tr>
 -      <td valign="Top">javacopts</td>
 -      <td valign="Top">Options to pass to the java compiler.</td>
 -      <td align="Center" valign="Top">No</td>
 +      <td>javacopts</td>
 +      <td>Options to pass to the Java compiler.</td>
 +      <td>No</td>
      </tr>
      <tr>
 -      <td valign="Top">rmicopts</td>
 -      <td valign="Top">Options to pass to the rmi compiler.</td>
 -      <td align="Center" valign="Top">No</td>
 +      <td>rmicopts</td>
 +      <td>Options to pass to the RMI compiler.</td>
 +      <td>No</td>
      </tr>
      <tr>
 -      <td valign="top">secpropag</td>
 -      <td valign="top"><code>true</code> if the RMI Skel. and
 -      Stub. must be modified to implement the implicit propagation of
 -      the security context (the transactional context is always
 -      provided). If omitted, it defaults to <code>false</code>.</td>
 -      <td valign="top" align="center">No</td>
 +      <td>secpropag</td>
 +      <td><q>true</q> if the RMI skeletons and stubs must be modified to implement the implicit
 +        propagation of the security context (the transactional context is always provided).</td>
 +      <td>No; defaults to <q>false</q></td>
      </tr>
      <tr>
 -      <td valign="Top">verbose</td>
 -      <td valign="Top">Indicates whether or not to use -verbose switch. If
 -      omitted, it defaults to <code>false</code>.</td>
 -      <td align="Center" valign="Top">No</td>
 +      <td>verbose</td>
 +      <td>Indicates whether or not to use <kbd>-verbose</kbd> switch.</td>
 +      <td>No; defaults to <q>false</q></td>
      </tr>
      <tr>
 -      <td valign="Top">additionalargs</td>
 -      <td valign="Top">Add additional args to GenIC.</td>
 -      <td align="Center" valign="Top">No</td>
 +      <td>additionalargs</td>
 +      <td>Add additional args to GenIC.</td>
 +      <td>No</td>
      </tr>
      <tr>
 -      <td valign="Top">keepgeneric</td>
 -      <td valign="Top"><code>true</code> if the generic JAR file used as input
 -      to GenIC must be retained. If omitted, it defaults to <code>false</code>.</td>
 -      <td align="Center" valign="Top">No</td>
 +      <td>keepgeneric</td>
 +      <td><q>true</q> if the generic JAR file used as input to GenIC must be retained.</td>
 +      <td>No; defaults to <q>false</q></td>
      </tr>
      <tr>
 -      <td valign="Top">jarsuffix</td>
 -      <td>String value appended to the JAR filename when creating each JAR.  If
 -      omitted, it defaults to ".jar". </td>
 -      <td align="Center" valign="Top">No</td>
 +      <td>jarsuffix</td>
 +      <td>String value appended to the JAR filename when creating each JAR.</td>
 +      <td>No; defaults to <q>.jar</q></td>
      </tr>
      <tr>
 -      <td valign="Top">orb</td>
 -      <td>Choose your ORB : RMI, JEREMIE, DAVID. If omitted, it defaults to the
 -      one present in classpath. If specified, the corresponding JOnAS JAR is
 -      automatically added to the classpath.</td>
 -      <td align="Center" valign="Top">No</td>
 +      <td>orb</td>
 +      <td>Choose your ORB: <q>RMI</q>, <q>JEREMIE</q>, <q>DAVID</q>.  If specified, the
 +        corresponding JOnAS JAR is automatically added to the classpath.</td>
 +      <td>No; defaults to the one present in classpath</td>
      </tr>
      <tr>
 -      <td valign="Top">nogenic</td>
 -      <td valign="Top">If this attribute is set to <code>true</code>,
 -      JOnAS's GenIC will not be run on the EJB JAR. Use this if you
 -      prefer to run GenIC at deployment time. If omitted, it defaults
 -      to <code>false</code>.</td>
 -      <td align="Center" valign="Top">No</td>
 +      <td>nogenic</td>
 +      <td>If this attribute is set to <q>true</q>, JOnAS's GenIC will not be run on the EJB jar. Use
 +      this if you prefer to run GenIC at deployment time.</td>
 +      <td>No; defaults to <q>false</q></td>
      </tr>
 -    <tr>
    </tbody>
  </table>
  
diff --cc manual/Tasks/exec.html
index c90558d,88e0fed..1d2eba2
--- a/manual/Tasks/exec.html
+++ b/manual/Tasks/exec.html
@@@ -60,42 -69,53 +60,44 @@@ execute the command shell executable <k
      &lt;arg value="ant.bat"/&gt;
      &lt;arg value="-p"/&gt;
    &lt;/exec&gt;
 -&lt;/target&gt;
 -</pre></blockquote>
 -
 -<p>A common problem is not having the executable on the PATH. In case you get an error
 -message <tt>Cannot run program "...":CreateProcess error=2. The system cannot find
 -the path specified.</tt> have a look at your PATH variable. Just type the command directly on
 -the command line and if Windows finds it, Ant should do it too. (Otherwise ask on the user mailinglist for help.) If Windows can not execute the program add the directory of the program
 -to the PATH (<tt>set PATH=%PATH%;dirOfProgram</tt>) or specify the absolute path in the
 -<tt>executable</tt> attribute in your buildfile.
 -</p>
 +&lt;/target&gt;</pre>
  
 +<p>A common problem is not having the executable on the <code>PATH</code>. In case you get an error
 +message <code class="output">Cannot run program "...":CreateProcess error=2. The system cannot find
 +the path specified.</code> have a look at your <code>PATH</code> variable. Just type the command
 +directly on the command line and if Windows finds it, Ant should do it too. (Otherwise ask on the
 +user mailinglist for help.) If Windows can not execute the program, add the directory of the program
 +to the <code>PATH</code> (<code>set PATH=%PATH%;dirOfProgram</code>) or specify the absolute path in
 +the <var>executable</var> attribute in your buildfile.</p>
  
  <h4>Cygwin Users</h4>
 -<p>The <code>&lt;exec&gt;</code> task will not understand paths such as /bin/sh
 -for the executable parameter.  This is because the Java VM in which Ant is
 -running is a standard Windows executable and is not aware of the Cygwin
 -environment (i.e., doesn't load <code>cygwin1.dll</code>).  The only
 -work-around for this is to compile a JVM under Cygwin (at your own risk).
 -See for instance 
 -<a href="http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html#cygwin">
 -OpenJDK build instructions for cygwin</a>.
 -</p>
 +<p>The <code>&lt;exec&gt;</code> task will not understand paths such as <q>/bin/sh</q> for
 +the <var>executable</var> parameter.  This is because JVM in which Ant is running is a standard
 +Windows executable and is not aware of the Cygwin environment (i.e., doesn't
 +load <samp>cygwin1.dll</samp>).  The only work-around for this is to compile a JVM under Cygwin (at
 +your own risk).  See for
 +instance <a href="https://cdn.rawgit.com/AdoptOpenJDK/openjdk-jdk9/dev/common/doc/building.html#cygwin"
 +target="_top">OpenJDK build instructions for cygwin</a>.</p>
  
  <h4>OpenVMS Users</h4>
 -<p>The command specified using <code>executable</code> and
 -<code>&lt;arg&gt;</code> elements is executed exactly as specified
 -inside a temporary DCL script.  This has some implications:
 +<p>The command specified using <var>executable</var> and <code>&lt;arg&gt;</code> elements is
 +executed exactly as specified inside a temporary DCL script.  This has some implications:</p>
  <ul>
+   <li>the DCL script will be created inside
+   the <a href="../running.html#tmpdir">temporary directory</a>.</li>
 -<li>paths have to be written in VMS style</li>
 -<li>if your <code>executable</code> points to a DCL script remember to
 -prefix it with an <code>@</code>-sign
 -(e.g. <code>executable="@[FOO]BAR.COM"</code>), just as you would in a
 -DCL script</li>
 +  <li>paths have to be written in VMS style</li>
 +  <li>if your <var>executable</var> points to a DCL script remember to prefix it with
 +    an <q>@</q>-sign (e.g. <var>executable</var>=<q>@[FOO]BAR.COM</q>), just as you would in a DCL
 +    script</li>
  </ul>
 -For <code>&lt;exec&gt;</code> to work in an environment with a Java VM
 -older than version 1.4.1-2 it is also <i>required</i> that the logical
 -<code>JAVA$FORK_SUPPORT_CHDIR</code> is set to <code>TRUE</code> in
 -the job table (see the <i>JDK Release Notes</i>).</p>
 -
 -<p>Please note that the Java VM provided by HP doesn't follow OpenVMS'
 -conventions of exit codes.  If you run a Java VM with this task, the
 -task may falsely claim that an error occurred (or silently ignore an
 -error).  Don't use this task to run <code>JAVA.EXE</code>, use a
 -<code>&lt;java&gt;</code> task with the <code>fork</code> attribute
 -set to <code>true</code> instead as this task will follow the VM's
 +<p>For <code>&lt;exec&gt;</code> to work in an environment with a JVM older than version 1.4.1-2 it
 +is also <em>required</em> that the logical <code>JAVA$FORK_SUPPORT_CHDIR</code> is set
 +to <code>TRUE</code> in the job table (see the <em>JDK Release Notes</em>).</p>
 +
 +<p>Please note that JVM provided by HP doesn't follow OpenVMS' conventions of exit codes.  If you
 +run a JVM with this task, the task may falsely claim that an error occurred (or silently ignore an
 +error).  Don't use this task to run <kbd>JAVA.EXE</kbd>, use a <code>&lt;java&gt;</code> task with
 +the <var>fork</var> attribute set to <q>true</q> instead as this task will follow the JVM's
  interpretation of exit codes.</p>
  
  <h4>RedHat S/390 Users</h4>
diff --cc manual/Tasks/fixcrlf.html
index 8ea6fab,a616ae7..30e3cec
--- a/manual/Tasks/fixcrlf.html
+++ b/manual/Tasks/fixcrlf.html
@@@ -24,187 -24,266 +24,192 @@@
  
  <body>
  
 -<h2><a name="fixcrlf">FixCRLF</a></h2>
 +<h2 id="fixcrlf">FixCRLF</h2>
  <h3>Description</h3>
 -  <p>
 -    Adjusts a text file to local conventions.
 -  </p>
 +  <p>Adjusts a text file to local conventions.</p>
  
 -  <p>
 -    The set of files to be adjusted can be refined with the
 -    <i>includes</i>, <i>includesfile</i>, <i>excludes</i>,
 -    <i>excludesfile</i> and <i>defaultexcludes</i>
 -    attributes. Patterns provided through the <i>includes</i> or
 -    <i>includesfile</i> attributes specify files to be
 -    included. Patterns provided through the <i>exclude</i> or
 -    <i>excludesfile</i> attribute specify files to be
 -    excluded. Additionally, default exclusions can be specified with
 -    the <i>defaultexcludes</i> attribute. See the section on <a
 -    href="../dirtasks.html#directorybasedtasks">directory-based
 -    tasks</a>, for details of file inclusion/exclusion patterns
 -    and their usage.
 -  </p>
 +  <p>The set of files to be adjusted can be refined with
 +    the <var>includes</var>, <var>includesfile</var>, <var>excludes</var>, <var>excludesfile</var>
 +    and <var>defaultexcludes</var> attributes. Patterns provided through the <var>includes</var>
 +    or <var>includesfile</var> attributes specify files to be included. Patterns provided through
 +    the <var>exclude</var> or <var>excludesfile</var> attribute specify files to be
 +    excluded. Additionally, default exclusions can be specified with the <var>defaultexcludes</var>
 +    attribute. See the section on <a href="../dirtasks.html#directorybasedtasks">directory-based
 +    tasks</a>, for details of file inclusion/exclusion patterns and their usage.</p>
  
 -  <p>
 -    This task forms an implicit
 -    <a href="../Types/fileset.html">FileSet</a> and
 -    supports most attributes of <code>&lt;fileset&gt;</code>
 -    (<code>dir</code> becomes <code>srcdir</code>) as well as the nested
 -    <code>&lt;include&gt;</code>, <code>&lt;exclude&gt;</code> and
 -    <code>&lt;patternset&gt;</code> elements.
 -  </p>
 +  <p>This task forms an implicit <a href="../Types/fileset.html">FileSet</a> and supports most
 +    attributes of <code>&lt;fileset&gt;</code> (<var>dir</var> becomes <var>srcdir</var>) as well as
 +    the nested <code>&lt;include&gt;</code>, <code>&lt;exclude&gt;</code>
 +    and <code>&lt;patternset&gt;</code> elements.</p>
  
-   <p>The output file is only written if it is a new file, or if it differs from the existing file.
-     This prevents spurious rebuilds based on unchanged files which have been regenerated by this
-     task.</p>
+   <p>
+     The output file is only written if it is a new file, or if it
+     differs from the existing file.  This prevents spurious
+     rebuilds based on unchanged files which have been regenerated
+     by this task. In order to assess whether a file has changed, this
+     task will create a pre-processed version of the source file inside of
+     the <a href="../running.html#tmpdir">temporary directory</a>.
+   </p>
  
 -  <p>
 -    Since <b>Apache Ant 1.7</b>, this task can be used in a
 -    <a href="../Types/filterchain.html">filterchain</a>.
 -  </p>
 +  <p><em>Since Apache Ant 1.7</em>, this task can be used in
 +    a <a href="../Types/filterchain.html">filterchain</a>.</p>
  
  <h3>Parameters</h3>
 -<table border="1" cellpadding="2" cellspacing="0">
 +<table class="attr">
    <tr>
 -    <td valign="center" rowspan="2"><b>Attribute</b></td>
 -    <td valign="center" rowspan="2"><b>Description</b></td>
 -    <td align="center" valign="top" colspan="2"><b>Required</b></td>
 +    <th scope="col" rowspan="2">Attribute</th>
 +    <th scope="col" rowspan="2">Description</th>
 +    <th scope="col" colspan="2">Required</th>
    </tr>
    <tr>
 -    <td valign="center"><b>As Task</b></td>
 -    <td valign="center"><b>As Filter</b></td>
 +    <th scope="col">As Task</th>
 +    <th scope="col">As Filter</th>
    </tr>
    <tr>
 -    <td valign="top">srcDir</td>
 -    <td valign="top">Where to find the files to be fixed up.</td>
 -    <td valign="top" align="center" rowspan="2">One of these</td>
 -    <td bgcolor="#CCCCCC">&nbsp;</td>
 +    <td>srcDir</td>
 +    <td>Where to find the files to be fixed up.</td>
 +    <td rowspan="2" class="center">One of these</td>
 +    <td rowspan="11">N/A</td>
    </tr>
    <tr>
 -    <td valign="top">file</td>
 -    <td valign="top">Name of a single file to fix. <b>Since Ant 1.7</b></td>
 -    <td bgcolor="#CCCCCC">&nbsp;</td>
 +    <td>file</td>
 +    <td class="left">Name of a single file to fix. <em>Since Ant 1.7</em></td>
    </tr>
    <tr>
 -    <td valign="top">destDir</td>
 -    <td valign="top">Where to place the corrected files.  Defaults to
 -      srcDir (replacing the original file).</td>
 -    <td valign="top" align="center">No</td>
 -    <td bgcolor="#CCCCCC">&nbsp;</td>
 +    <td>destDir</td>
 +    <td>Where to place the corrected files.</td>
 +    <td class="center">No; defaults to <var>srcDir</var> (replace the original files)</td>
    </tr>
    <tr>
 -    <td valign="top">includes</td>
 -    <td valign="top">comma- or space-separated list of patterns of files that must be
 -      included. All files are included when omitted.</td>
 -    <td valign="top" align="center">No</td>
 -    <td bgcolor="#CCCCCC">&nbsp;</td>
 +    <td>includes</td>
 +    <td>comma- or space-separated list of patterns of files that must be included.</td>
 +    <td class="center">No; defaults to all (<q>**</q>)</td>
    </tr>
    <tr>
 -    <td valign="top">includesfile</td>
 -    <td valign="top">the name of a file. Each line of this file is
 -      taken to be an include pattern.</td>
 -    <td valign="top" align="center">No</td>
 -    <td bgcolor="#CCCCCC">&nbsp;</td>
 +    <td>includesfile</td>
 +    <td>name of a file. Each line of this file is taken to be an include pattern.</td>
 +    <td class="center">No</td>
    </tr>
    <tr>
 -    <td valign="top">excludes</td>
 -    <td valign="top">comma- or space-separated list of patterns of files that must be
 -      excluded. No files (except default excludes) are excluded when omitted.</td>
 -    <td valign="top" align="center">No</td>
 -    <td bgcolor="#CCCCCC">&nbsp;</td>
 +    <td>excludes</td>
 +    <td>comma- or space-separated list of patterns of files that must be excluded.</td>
 +    <td class="center">No; defaults to default excludes or none if <var>defaultexcludes</var>
 +      is <q>no</q></td>
    </tr>
    <tr>
 -    <td valign="top">excludesfile</td>
 -    <td valign="top">the name of a file. Each line of this file is
 -      taken to be an exclude pattern.</td>
 -    <td valign="top" align="center">No</td>
 -    <td bgcolor="#CCCCCC">&nbsp;</td>
 +    <td>excludesfile</td>
 +    <td>name of a file. Each line of this file is taken to be an exclude pattern.</td>
 +    <td class="center">No</td>
    </tr>
    <tr>
 -    <td valign="top">defaultexcludes</td>
 -    <td valign="top">indicates whether default excludes should be used or not
 -      (&quot;yes&quot;/&quot;no&quot;). Default excludes are used when omitted.
 -    </td>
 -    <td valign="top" align="center">No</td>
 -    <td bgcolor="#CCCCCC">&nbsp;</td>
 +    <td>defaultexcludes</td>
 +    <td>indicates whether default excludes should be used or not (<q>yes|no</q>).</td>
 +    <td class="center">No; defaults to <q>yes</q></td>
    </tr>
    <tr>
 -    <td valign="top">encoding</td>
 -    <td valign="top">The encoding of the files.</td>
 -    <td align="center">No; defaults to default JVM encoding.</td>
 -    <td bgcolor="#CCCCCC">&nbsp;</td>
 +    <td>encoding</td>
 +    <td>The encoding of the files.</td>
 +    <td class="center">No; defaults to default JVM character encoding</td>
    </tr>
    <tr>
 -    <td valign="top">outputencoding</td>
 -    <td valign="top">The encoding to use when writing the files.
 -                     <b>Since Ant 1.7</b></td>
 -    <td align="center">No; defaults to the value of the encoding attribute.</td>
 -    <td bgcolor="#CCCCCC">&nbsp;</td>
 +    <td>outputencoding</td>
 +    <td>The encoding to use when writing the files.  <em>Since Ant 1.7</em></td>
 +    <td class="center">No; defaults to <var>encoding</var> if set or default JVM character encoding
 +      otherwise</td>
    </tr>
    <tr>
 -    <td valign="top">preservelastmodified</td>
 -    <td valign="top">Whether to preserve the last modified
 -                     date of source files. <b>Since Ant 1.6.3</b></td>
 -    <td align="center">No; default is <i>false</i></td>
 -    <td bgcolor="#CCCCCC">&nbsp;</td>
 +    <td>preservelastmodified</td>
 +    <td>Whether to preserve the last modified date of source files. <em>Since Ant 1.6.3</em></td>
 +    <td class="center">No; default is <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">eol</td>
 -    <td valign="top">
 -      Specifies how end-of-line (EOL) characters are to be
 -      handled.  The EOL characters are CR, LF and the pair CRLF.
 -      Valid values for this property are:
 +    <td>eol</td>
 +    <td>Specifies how end-of-line (EOL) characters are to be handled.  The EOL characters are CR, LF
 +      and the pair CRLF.  Valid values for this property are:
        <ul>
 -        <li>asis: leave EOL characters alone</li>
 -        <li>cr: convert all EOLs to a single CR</li>
 -        <li>lf: convert all EOLs to a single LF</li>
 -        <li>crlf: convert all EOLs to the pair CRLF</li>
 -        <li>mac: convert all EOLs to a single CR</li>
 -        <li>unix: convert all EOLs to a single LF</li>
 -        <li>dos: convert all EOLs to the pair CRLF</li>
 +        <li><q>asis</q>: leave EOL characters alone</li>
 +        <li><q>cr</q>: convert all EOLs to a single CR</li>
 +        <li><q>lf</q>: convert all EOLs to a single LF</li>
 +        <li><q>crlf</q>: convert all EOLs to the pair CRLF</li>
 +        <li><q>mac</q>: convert all EOLs to a single CR</li>
 +        <li><q>unix</q>: convert all EOLs to a single LF</li>
 +        <li><q>dos</q>: convert all EOLs to the pair CRLF</li>
        </ul>
 -      Default is based on the platform on which you are running this task.
 -      For Unix platforms (including Mac OS X), the default is &quot;lf&quot;.
 -      For DOS-based systems (including Windows), the default is
 -      &quot;crlf&quot;.
 -      For Mac environments other than OS X, the default is &quot;cr&quot;.
 -      <p>
 -        This is the preferred method for specifying EOL.  The
 -        &quot;<i><b>cr</b></i>&quot; attribute (see below) is
 -        now deprecated.
 -      </p>
 -      <p>
 -        <i>N.B.</i>: One special case is recognized. The three
 -        characters CR-CR-LF are regarded as a single EOL.
 -        Unless this property is specified as &quot;asis&quot;,
 -        this sequence will be converted into the specified EOL
 -        type.
 -      </p>
 +      <p>This is the preferred method for specifying EOL.  The <var>cr</var> attribute (see below)
 +      is now deprecated.</p>
 +      <p><strong>Note</strong>: One special case is recognized. The three characters CR-CR-LF are
 +        regarded as a single EOL.  Unless this property is specified as <q>asis</q>, this sequence
 +        will be converted into the specified EOL type.</p>
      </td>
 -    <td valign="top" align="center" colspan="2">No</td>
 +    <td colspan="2">No; default is platform-specific: <q>lf</q> for Unix platforms (including Mac OS
 +    X/macOS), <q>crlf</q> for DOS-based systems (including Windows), <q>cr</q> for Mac environments
 +    other than OS X</td>
    </tr>
    <tr>
 -    <td valign="top">cr</td>
 -    <td valign="top">
 -      <i><b>Deprecated.</b></i> Specifies how CR characters are
 -      to be handled at end-of-line (EOL).  Valid values for this
 -      property are:
 +    <td>cr</td>
 +    <td><em><u>Deprecated</u></em>. Specifies how CR characters are to be handled at end-of-line
 +      (EOL).  Valid values for this property are:
        <ul>
 -        <li>asis: leave EOL characters alone.</li>
 -        <li>
 -          add: add a CR before any single LF characters. The
 -          intent is to convert all EOLs to the pair CRLF.
 -        </li>
 -        <li>
 -          remove: remove all CRs from the file.  The intent is
 -          to convert all EOLs to a single LF.
 -        </li>
 +        <li><q>asis</q>: leave EOL characters alone.</li>
 +        <li><q>add</q>: add a CR before any single LF characters. The intent is to convert all EOLs
 +          to the pair CRLF.</li>
 +        <li><q>remove</q>: remove all CRs from the file.  The intent is to convert all EOLs to a
 +          single LF.</li>
        </ul>
 -      Default is based on the platform on which you are running
 -      this task.  For Unix platforms, the default is &quot;remove&quot;.
 -      For DOS based systems (including Windows), the default is
 -      &quot;add&quot;.
 -      <p>
 -        <i>N.B.</i>: One special case is recognized. The three
 -        characters CR-CR-LF are regarded as a single EOL.
 -        Unless this property is specified as &quot;asis&quot;,
 -        this sequence will be converted into the specified EOL
 -        type.
 -      </p>
 +      <p><strong>Note</strong>: One special case is recognized. The three characters CR-CR-LF are
 +        regarded as a single EOL.  Unless this property is specified as <q>asis</q>, this sequence
 +        will be converted into the specified EOL type.</p>
      </td>
 -    <td valign="top" align="center" colspan="2">No</td>
 +    <td colspan="2">No; default is platform-specific: <q>remove</q> for Unix platforms, <q>add</q>
 +      for DOS based systems (including Windows)</td>
    </tr>
    <tr>
 -    <td valign="top">javafiles</td>
 -    <td valign="top">
 -      Used only in association with the
 -      &quot;<i><b>tab</b></i>&quot; attribute (see below), this
 -      boolean attribute indicates whether the fileset is a set
 -      of java source files
 -      (&quot;yes&quot;/&quot;no&quot;). Defaults to
 -      &quot;no&quot;.  See notes in section on &quot;tab&quot;.
 -    </td>
 -    <td valign="top" align="center" colspan="2">No</td>
 +    <td>javafiles</td>
 +    <td>Used only in association with the <var>tab</var> attribute (see below), this boolean
 +      attribute indicates whether the fileset is a set of Java source files (<q>yes|no</q>). See
 +      notes in section on <var>tab</var>.</td>
 +    <td colspan="2">No; defaults to <q>no</q></td>
    </tr>
    <tr>
 -    <td valign="top">tab</td>
 -    <td valign="top">Specifies how tab characters are to be handled.  Valid
 -      values for this property are:
 +    <td>tab</td>
 +    <td>Specifies how tab characters are to be handled.  Valid values for this property are:
        <ul>
 -      <li>add: convert sequences of spaces which span a tab stop to tabs</li>
 -      <li>asis: leave tab and space characters alone</li>
 -      <li>remove: convert tabs to spaces</li>
 +        <li><q>add</q>: convert sequences of spaces which span a tab stop to tabs</li>
 +        <li><q>asis</q>: leave tab and space characters alone</li>
 +        <li><q>remove</q>: convert tabs to spaces</li>
        </ul>
 -      Default for this parameter is &quot;asis&quot;.
 -      <p>
 -        <i>N.B.</i>: When the attribute
 -        &quot;<i><b>javafiles</b></i>&quot; (see above) is
 -        &quot;true&quot;, literal TAB characters occurring
 -        within Java string or character constants are never
 -        modified.  This functionality also requires the
 -        recognition of Java-style comments.
 -      </p>
 -      <p>
 -  	<i>N.B.</i>: There is an incompatibility between this
 -  	and the previous version in the handling of white
 -  	space at the end of lines.  This version does
 -  	<i><b>not</b></i> remove trailing whitespace on lines.
 -      </p>
 +      <p><strong>Note</strong>: When the attribute <var>javafiles</var> (see above) is <q>true</q>,
 +        literal TAB characters occurring within Java string or character constants are never
 +        modified.  This functionality also requires the recognition of Java-style comments.</p>
 +      <p><strong>Note</strong>: There is an incompatibility between this and the previous version in
 +        the handling of white space at the end of lines.  This version
 +        does <em><strong>not</strong></em> remove trailing whitespace on lines.</p>
      </td>
 -    <td valign="top" align="center" colspan="2">No</td>
 +    <td colspan="2">No; default is <q>asis</q></td>
    </tr>
    <tr>
 -    <td valign="top">tablength</td>
 -    <td valign="top">TAB character interval. Valid values are between
 -      2 and 80 inclusive.  The default for this parameter is 8.</td>
 -    <td valign="top" align="center" colspan="2">No</td>
 +    <td>tablength</td>
 +    <td>TAB character interval. Valid values are between <q>2</q> and <q>80</q> inclusive.</td>
 +    <td colspan="2">No; default is <q>8</q></td>
    </tr>
    <tr>
 -    <td valign="top">eof</td>
 -    <td valign="top">Specifies how DOS end of file (control-Z) characters are
 -      to be handled.  Valid values for this property are:
 +    <td>eof</td>
 +    <td>Specifies how DOS end of file (control-Z) characters are to be handled.  Valid values for
 +      this property are:
        <ul>
 -      <li>add: ensure that there is an EOF character at the end of the file</li>
 -      <li>asis: leave EOF characters alone</li>
 -      <li>remove: remove any EOF character found at the end</li>
 +        <li><q>add</q>: ensure that there is an EOF character at the end of the file</li>
 +        <li><q>asis</q>: leave EOF characters alone</li>
 +        <li><q>remove</q>: remove any EOF character found at the end</li>
        </ul>
 -      Default is based on the platform on which you are running this task.
 -      For Unix platforms, the default is remove.  For DOS based systems
 -      (including Windows), the default is asis.
 -      </td>
 -    <td valign="top" align="center" colspan="2">No</td>
 +    </td>
 +    <td colspan="2">No; default is platform-specific: <q>remove</q> for Unix platforms, <q>asis</q>
 +      for DOS based systems (including Windows)</td>
    </tr>
    <tr>
 -    <td valign="top">fixlast</td>
 -    <td valign="top">Whether to add a missing EOL to the last line
 -                     of a processed file.<br/>Ignored if EOL is asis.<br/><b>Since Ant 1.6.1</b></td>
 -    <td align="center" colspan="2">No; default is <i>true</i></td>
 +    <td>fixlast</td>
 +    <td>Whether to add a missing EOL to the last line of a processed file.<br/>Ignored
 +      if <var>eof</var> is <q>asis</q>.<br/><em>Since Ant 1.6.1</em></td>
 +    <td colspan="2">No; default is <q>true</q></td>
    </tr>
  </table>
  <h3>Examples</h3>
diff --cc manual/Tasks/ftp.html
index 0da70e4,6ad53af..0e38723
--- a/manual/Tasks/ftp.html
+++ b/manual/Tasks/ftp.html
@@@ -24,237 -24,317 +24,242 @@@
  
  <body>
  
 -<h2><a name="ftp">FTP</a></h2>
 +<h2 id="ftp">FTP</h2>
  <h3>Description</h3>
 -<p>The ftp task implements a basic FTP client that can send, receive,
 -list, delete files, and create directories.  See below for descriptions and examples of how
 -to perform each task.</p>
 -<p><b>Note:</b> This task depends on external libraries not included in the Apache Ant distribution.
 -See <a href="../install.html#commons-net">Library Dependencies</a> for more information.
 -<i>Get the latest version of this library, for the best support in Ant</i>
 -
 -</p>
 -<p>The ftp task attempts to determine what file system is in place on the FTP server.
 -Supported server types are Unix, NT, OS2, VMS, and OS400.  In addition, NT and OS400 servers
 -which have been configured to display the directory in Unix style are also supported correctly.
 -Otherwise, the system will default to Unix standards.
 -<i>remotedir</i> must be specified in the exact syntax required by the ftp
 -server. If the usual Unix conventions are not supported by the server,
 -<i>separator</i> can be used to set the file separator that should be used
 -instead.</p>
 -<p>See the section on <a href="../dirtasks.html#directorybasedtasks">directory based
 -tasks</a>, on how the inclusion/exclusion of files works, and how to
 -write patterns.</p>
 -<p>
 -This task does not currently use the proxy information set by the
 -<a href="setproxy.html"><code>&lt;setproxy&gt;</code></a> task, and cannot go through
 -a firewall via socks. 
 -<p>
 -<b>Warning: </b> there have been problems reported concerning the ftp get with the <code>newer</code> attribute.
 -Problems might be due to format of ls -l differing from what is expected by commons-net,
 -for instance due to specificities of language used by the ftp server in the directory listing.
 -If you encounter such a problem, please send an email including a sample directory listing
 -coming from your ftp server (ls -l on the ftp prompt).
 -</p>
 -<p>
 -If you can connect but not upload or download, try setting the <code>passive</code>
 -attribute to true to use the existing (open) channel, instead of having the server
 -try to set up a new connection.</p>
 +<p>The <code>ftp</code> task implements a basic FTP client that can send, receive, list, delete
 +files, and create directories.  See below for descriptions and examples of how to perform each
 +task.</p>
 +<p><strong>Note</strong>: This task depends on external libraries not included in the Apache Ant
 +distribution.  See <a href="../install.html#commons-net">Library Dependencies</a> for more
 +information. <em>Get the latest version of this library, for the best support in Ant.</em></p>
 +<p>The <code>ftp</code> task attempts to determine what file system is in place on the FTP server.
 +Supported server types are Unix, NT, OS2, VMS, and OS400.  In addition, NT and OS400 servers which
 +have been configured to display the directory in Unix style are also supported correctly.
 +Otherwise, the system will default to Unix standards. <var>remotedir</var> must be specified in the
 +exact syntax required by the FTP server. If the usual Unix conventions are not supported by the
 +server, <var>separator</var> can be used to set the file separator that should be used instead.</p>
 +<p>See the section on <a href="../dirtasks.html#directorybasedtasks">directory based tasks</a>, on
 +how the inclusion/exclusion of files works, and how to write patterns.</p>
 +<p>This task does not currently use the proxy information set by
 +the <a href="setproxy.html"><code>&lt;setproxy&gt;</code></a> task, and cannot go through a firewall
 +via socks.</p>
 +<p><strong>Warning</strong>: there have been problems reported concerning
 +the <code>ftp</code> <q>get</q> with the <var>newer</var> attribute.  Problems might be due to
 +format of <kbd>ls -l</kbd> differing from what is expected by commons-net, for instance due to
 +specifics of language used by the FTP server in the directory listing.  If you encounter such a
 +problem, please send an email including a sample directory listing coming from your FTP server
 +(<kbd>ls -l</kbd> on the FTP prompt).</p>
 +<p>If you can connect but not upload or download, try setting the <var>passive</var> attribute
 +to <q>true</q> to use the existing (open) channel, instead of having the server try to set up a new
 +connection.</p>
  
  <h3>Parameters</h3>
 -<table border="1" cellpadding="2" cellspacing="0">
 +<table class="attr">
    <tr>
 -    <td valign="top" width="15%"><b>Attribute</b></td>
 -    <td valign="top" width="65%"><b>Description</b></td>
 -    <td align="center" valign="top" width="20%"><b>Required</b></td>
 +    <th scope="col">Attribute</th>
 +    <th scope="col">Description</th>
 +    <th scope="col">Required</th>
    </tr>
    <tr>
 -    <td valign="top">server</td>
 -    <td valign="top">the address of the remote ftp server.</td>
 -    <td valign="top" align="center">Yes</td>
 +    <td>server</td>
 +    <td>the address of the remote FTP server.</td>
 +    <td>Yes</td>
    </tr>
    <tr>
 -    <td valign="top">port</td>
 -    <td valign="top">the port number of the remote ftp server.
 -                     Defaults to port 21.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>port</td>
 +    <td>the port number of the remote FTP server.</td>
 +    <td>No; defaults to <q>21</q></td>
    </tr>
    <tr>
 -    <td valign="top">userid</td>
 -    <td valign="top">the login id to use on the ftp server.</td>
 -    <td valign="top" align="center">Yes</td>
 +    <td>userid</td>
 +    <td>the login id to use on the FTP server.</td>
 +    <td>Yes</td>
    </tr>
    <tr>
 -    <td valign="top">password</td>
 -    <td valign="top">the login password to use on the ftp server.</td>
 -    <td valign="top" align="center">Yes</td>
 +    <td>password</td>
 +    <td>the login password to use on the FTP server.</td>
 +    <td>Yes</td>
    </tr>
    <tr>
 -    <td valign="top">account</td>
 -    <td valign="top">the account to use on the ftp server.
 -        <em>since Ant 1.7</em>.
 -    </td>
 -    <td valign="top" align="center">No</td>
 +    <td>account</td>
 +    <td>the account to use on the FTP server.
 +    <em>since Ant 1.7</em>.</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">remotedir</td>
 -    <td valign="top">remote directory on the
 -                     ftp server
 -                     see table below for detailed usage
 -                     </td>
 -    <td valign="top" align="center">No</td>
 +    <td>remotedir</td>
 +    <td>remote directory on the FTP server see table below for detailed usage</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">action</td>
 -    <td valign="top">the ftp action to perform, defaulting to "send".
 -                     Currently supports "put", "get",
 -                     "del", "list", "chmod",
 -                     "mkdir", "rmdir", and "site".</td>
 -    <td valign="top" align="center">No</td>
 +    <td>action</td>
 +    <td>FTP action to perform.  Currently
 +    supports <q>put</q>, <q>get</q>, <q>del</q>, <q>list</q>, <q>chmod</q>, <q>mkdir</q>, <q>rmdir</q>,
 +    and <q>site</q>.</td>
 +    <td>No; defaults to <q>send</q></td>
    </tr>
    <tr>
 -    <td valign="top">binary</td>
 -    <td valign="top">selects binary-mode ("yes") or text-mode
 -                     ("no") transfers.
 -                     Defaults to "yes"</td>
 -    <td valign="top" align="center">No</td>
 +    <td>binary</td>
 +    <td>selects binary-mode (<q>yes</q>) or text-mode (<q>no</q>) transfers.</td>
 +    <td>No; defaults to <q>yes</q></td>
    </tr>
    <tr>
 -    <td valign="top">passive</td>
 -    <td valign="top">selects passive-mode ("yes") transfers, for
 -                     better through-firewall connectivity, at the price
 -                     of performance.
 -                     Defaults to "no"</td>
 -    <td valign="top" align="center">No</td>
 +    <td>passive</td>
 +    <td>selects passive-mode (<q>yes</q>) transfers, for better through-firewall connectivity, at
 +      the price of performance.</td>
 +    <td>No; defaults to <q>no</q></td>
    </tr>
    <tr>
 -    <td valign="top">verbose</td>
 -    <td valign="top">displays information on each file transferred if set 
 -                     to "yes". Defaults to "no".</td>
 -    <td valign="top" align="center">No</td>
 +    <td>verbose</td>
 +    <td>displays information on each file transferred if set to <q>yes</q>.</td>
 +    <td>No; defaults to <q>no</q></td>
    </tr>
    <tr>
 -    <td valign="top">depends</td>
 -    <td valign="top">transfers only new or changed files if set to 
 -                     "yes". Defaults to "no".</td>
 -    <td valign="top" align="center">No</td>
 +    <td>depends</td>
 +    <td>transfers only new or changed files if set to <q>yes</q>.</td>
 +    <td>No; defaults to <q>no</q></td>
    </tr>
    <tr>
 -    <td valign="top">newer</td>
 -    <td valign="top">a synonym for <i>depends</i>.
 -    see timediffauto and timediffmillis</td>
 -    <td valign="top" align="center">No</td>
 +    <td>newer</td>
 +    <td>a synonym for <var>depends</var>.  See <var>timediffauto</var>
 +        and <var>timediffmillis</var></td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">timediffauto</td>
 -    <td valign="top">set to <code>"true"</code>
 -    to make ant calculate the time difference between client and server.<br>
 -    <em>requires write access in the remote directory</em><br>
 -    Since ant 1.6<br/>
 +    <td>timediffauto</td>
 +    <td>set to <q>true</q> to make Ant calculate the time difference between client and
 +    server.<br/><em>requires write access in the remote directory</em><br/><em>Since Ant
-     1.6</em></td>
++    1.6</em><br/>
+     If this is set to <code>true</code> then Ant will create an empty
+     file inside of the <a href="../running.html#tmpdir">temporary
+     directory</a> and transfer it to the remote server - deleting it on
+     both sides once the difference has been determined.
+     </td>
 -    <td valign="top" align="center">No</td>
 -  </tr>
 -  <a name="timestampGranularity"/>
 -  <tr>
 -    <td valign="top">timestampGranularity</td>
 -    <td valign="top">Specify either <code>MINUTE</code>, <code>NONE</code>,
 -     (or you may specify <code>""</code> which is equivalent to not specifying a value,
 -     useful for property-file driven scripts).  Allows override of the typical situation 
 -     in PUT and GET where local filesystem timestamps are <code>HH:mm:ss</code> 
 -     and the typical FTP server's timestamps are <code>HH:mm</code>.  This can throw 
 -     off uptodate calculations.  However, the default values should suffice for most
 -     applications.<br>
 -    Since ant 1.7
 -    </td>
 -    <td valign="top" align="center">No.  Only applies in "puts" and "gets" where the
 -    default values are <code>MINUTE</code> for PUT and <code>NONE</code> for GET.  
 -    (It is not as necessary in GET because we have the <b>preservelastmodified</b> option.)</td>
 -  </tr>
 -  <tr>
 -    <td valign="top">timediffmillis</td>
 -    <td valign="top"><b>Deprecated</b>. Number of milliseconds to add to the time on 
 -    the remote machine to get the time on the local machine.  The <b>timestampGranularity</b> 
 -    attribute (for which the default values should suffice in most situations), and the 
 -    <b>serverTimeZoneConfig</b> option, should make this unnecessary. 
 -    <b>serverTimeZoneConfig</b> does the math for you and also knows about 
 -    Daylight Savings Time.<br>
 -    Since ant 1.6
 -    </td>
 -    <td valign="top" align="center">No</td>
 +    <td>No</td>
 +  </tr>
 +  <tr id="timestampGranularity">
 +    <td>timestampGranularity</td>
 +    <td>Specify either <q>MINUTE</q> or <q>NONE</q> (you may specify <q></q> which is equivalent to
 +      not specifying a value, useful for property-file driven scripts).  Allows override of the
 +      typical situation in <q>put</q> and <q>get</q> where local filesystem timestamps
 +      are <code>HH:mm:ss</code> and the typical FTP server's timestamps are <code>HH:mm</code>.
 +      This can throw off <var>uptodate</var> calculations.  However, the default values should
 +      suffice for most applications.<br/><em>Since Ant 1.7</em></td>
 +    <td>No; only applies for <q>put</q> (default is <q>MINUTE</q>) and <q>get</q> (default
 +      is <q>NONE</q>; not as necessary because we have the <var>preservelastmodified</var>
 +      option)</td>
    </tr>
    <tr>
 -    <td valign="top">separator</td>
 -    <td valign="top">sets the file separator used on the ftp server.
 -                     Defaults to "/".</td>
 -    <td valign="top" align="center">No</td>
 +    <td>timediffmillis</td>
 +    <td><em><u>Deprecated</u></em>. Number of milliseconds to add to the time on the remote machine
 +      to get the time on the local machine.  The <var>timestampGranularity</var> attribute (for
 +      which the default values should suffice in most situations), and
 +      the <var>serverTimeZoneConfig</var> option, should make this
 +      unnecessary.  <var>serverTimeZoneConfig</var> does the math for you and also knows about
 +      Daylight Savings Time.<br/><em>Since Ant 1.6</em></td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">umask</td>
 -    <td valign="top">sets the default file permissions for new files,
 -                     unix only.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>separator</td>
 +    <td>sets the file separator used on the FTP server.</td>
 +    <td>No; defaults to <q>/</q></td>
    </tr>
    <tr>
 -    <td valign="top">chmod</td>
 -    <td valign="top">sets or changes file permissions for new or existing files,
 -      unix only. If used with a put action, chmod will be issued for each file.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>umask</td>
 +    <td>sets the default file permissions for new files, Unix only.</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">listing</td>
 -    <td valign="top">the file to write results of the "list" action.
 -                     Required for the "list" action, ignored otherwise.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>chmod</td>
 +    <td>sets or changes file permissions for new or existing files, Unix only. If used with
 +      a <q>put</q> action, <q>chmod</q> will be issued for each file.</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">ignoreNoncriticalErrors</td>
 -    <td valign="top">flag which permits the task to ignore some non-fatal error
 -      codes sent by some servers during directory creation: wu-ftp in particular.
 -      Default: false</td>
 -    <td valign="top" align="center">No</td>
 +    <td>listing</td>
 +    <td>the file to write results of the <q>list</q> action.</td>
 +    <td>Yes, for the <q>list</q> action; ignored otherwise</td>
    </tr>
    <tr>
 -    <td valign="top">skipFailedTransfers</td>
 -    <td valign="top">flag which enables unsuccessful file put, delete
 -    and get operations to be skipped with a warning and the
 -    remainder of the files still transferred. Default: false</td>
 -    <td valign="top" align="center">No</td>
 -  </tr>  
 +    <td>ignoreNoncriticalErrors</td>
 +    <td>flag which permits the task to ignore some non-fatal error codes sent by some servers during
 +      directory creation: wu-ftp in particular.</td>
 +    <td>No; defaults to <q>false</q></td>
 +  </tr>
    <tr>
 -    <td valign="top">preservelastmodified</td>
 -    <td valign="top">Give the copied files the same last modified
 -      time as the original source files (applies to getting files only).
 -      (<em>Note</em>: Ignored on Java 1.1)</td>
 -    <td valign="top" align="center">No; defaults to false.</td>
 +    <td>skipFailedTransfers</td>
 +    <td>flag which enables unsuccessful file <q>put</q>, <q>delete</q> and <q>get</q> operations to
 +      be skipped with a warning and the remainder of the files still transferred.</td>
 +    <td>No; default to <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">retriesAllowed</td>
 -    <td valign="top">Set the number of retries allowed on an file-transfer operation.
 -    If a number > 0 specified, each file transfer can fail up to that
 -    many times before the operation is failed.  If -1 or "forever" specified, the
 -    operation will keep trying until it succeeds.</td>
 -    <td valign="top" align="center">No; defaults to 0</td>
 +    <td>preservelastmodified</td>
 +    <td>Give the copied files the same last modified time as the original source files (applies to
 +      getting files only).</td>
 +    <td>No; defaults to <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">siteCommand</td>
 -    <td valign="top">Set the server-specific SITE command to execute if
 -    the <code>action</code> attribute has been specified as <code>"site"</code>.
 -    <td valign="top" align="center">No</td>
 +    <td>retriesAllowed</td>
 +    <td>Set the number of retries allowed on an file-transfer operation.  If a positive number is
 +      specified, each file transfer can fail up to that many times before the operation is failed.
 +      If <q>-1</q> or <q>forever</q> specified, the operation will keep trying until it
 +      succeeds.</td>
 +    <td>No; defaults to <q>0</q></td>
    </tr>
    <tr>
 -    <td valign="top">initialSiteCommand</td>
 -    <td valign="top">Set a server-specific SITE command to execute immediately
 -      after login.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>siteCommand</td>
 +    <td>Set the server-specific <code>SITE</code> command to execute if the <var>action</var>
 +      attribute has been specified as <q>site</q>.
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">enableRemoteVerification</td>
 -    <td valign="top">Whether data connection should be verified to
 -    connect to the same host as the control connection.  This is a
 -    security measure that is enabled by default, but it may be useful
 -    to disable it in certain firewall scenarios.
 -      <em>since Ant 1.8.0</em></td>
 -    <td valign="top" align="center">No, default is true</td>
 +    <td>initialSiteCommand</td>
 +    <td>Set a server-specific <code>SITE</code> command to execute immediately after login.</td>
 +    <td>No</td>
    </tr>
 -
 -    <tr>
 -    <td colspan="3">
 -    <p><b>The following attributes require <a href=
 -    "http://commons.apache.org/net/download_net.cgi">
 -    jakarta-commons-net-1.4.0 or greater</a>.</b></p>
 -    <p>
 -    Use these options when the standard options don't work, because
 -    <ul><li>the server is in a different timezone and you need timestamp
 -    dependency checking</li>
 -    <li>the default timestamp formatting doesn't match the server display and
 -    list parsing therefore fails</li></ul>
 -    </p><p>
 -    If none of these is specified, the default mechanism of letting the system
 -    auto-detect the server OS type based on the FTP SYST command and assuming
 -    standard formatting for that OS type will be used.
 -    </p><p>
 -    To aid in property-file-based development where a build script is configured
 -    with property files, for any of these attributes, a value of <code>""</code>
 -    is equivalent to not specifying it.
 -    </p><p>
 -    Please understand that these options are incompatible with the autodetection
 -    scheme.  If any of these options is specified, (other than with a value of
 -    <code>""</code> ) a system type must be chosen and if systemTypeKey is not
 -    specified, UNIX will be assumed. The philosophy behind this is that these
 -    options are for setting non-standard formats, and a build-script author who
 -    knows what system he is dealing with will know what options to need to be
 -    set. Otherwise, these options should be left alone and the default
 -    autodetection scheme can be used and will work in the majority of cases.
 -    </p></td>
 -    </tr>
    <tr>
 -    <td valign="top">systemTypeKey</td>
 -    <td valign="top">Specifies the type of system in use on the server.
 -      Supported values are <code>"UNIX", "VMS", "WINDOWS", "OS/2", "OS/400",
 -      "MVS".</code>  If not specified, (or specified as <code>""</code>) and if
 -      no other xxxConfig attributes are specified, the autodetection mechanism
 -      based on the FTP SYST command will be used.<br>
 -      Since ant 1.7
 -    </td>
 -    <td valign="top" align="center">No, but if any of the following xxxConfig
 -        attributes is specified, UNIX will be assumed, even if <code>""</code>
 -        is specified here.
 -    </td>
 -   </tr>
 -   <tr>
 -    <td valign="top">serverTimeZoneConfig</td>
 -    <td valign="top">Specify as a Java
 -     <a href="http://docs.oracle.com/javase/7/docs/api//java/util/TimeZone.html">
 -     TimeZone</a> identifier, (e.g. <code>GMT</code>, <code>America/Chicago</code> or
 -    <code>Asia/Jakarta</code>) the timezone used by the server for timestamps.  This 
 -      enables timestamp dependency checking even when the server is in a different 
 -      time zone from the client. Time Zones know, also, about daylight savings time, 
 -      and do not require you to calculate milliseconds of difference.  If not specified, 
 -      (or specified as <code>""</code>), the time zone of the client is assumed.<br>
 -      Since ant 1.7
 -    </td>
 -    <td valign="top" align="center">No</td>
 -  </tr>
 -  <tr>
 -    
 -    <td valign="top">defaultDateFormatConfig</td>
 -    <td valign="top">Specify in Java 
 -    <a href="http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html">
 -     SimpleDateFormat</a> notation, (e.g.
 -     <code>yyyy-MM-dd</code>), the date format generally used by the FTP server
 -      to parse dates.  In some cases this will be the only date format used.
 -      In others, (unix for example) this will be used for dates
 -      older than a year old. (See <b>recentDateFormatConfig</b>).  If not specified,
 -      (or specified as <code>""</code>), the default date format for the system
 -      type indicated by the <b>systemTypeKey</b> attribute will be used.<br>
 -      Since ant 1.7
 -    </td>
 -    <td valign="top" align="center">
 -    No.
 +    <td>enableRemoteVerification</td>
 +    <td>Whether data connection should be verified to connect to the same host as the control
 +      connection.  This is a security measure that is enabled by default, but it may be useful to
 +      disable it in certain firewall scenarios.  <em>since Ant 1.8.0</em></td>
 +    <td>No; default is <q>true</q></td>
 +  </tr>
 +  <tr>
 +    <td>dataTimeout</td>
 +    <td>Sets a timeout in milliseconds used when waiting for data on the data connection.
 +      A value of 0 means an infinite timeout.<em>since Ant 1.10.7</em></td>
 +    <td>No</td>
 +  </tr>
 +  <tr>
 +    <td>wakeUpTransferInterval</td>
 +    <td>Only use if proved to be necessary, interval in seconds on which a LIST command is triggered
 +      trigger a data connection (to avoid timeouts by the ftp server on no data connection).
 +      <em>since Ant 1.10.7</em></td>
 +    <td>No</td>
 +  </tr>
 +  <tr>
 +    <td colspan="3" class="left">
 +      <p><strong>The following attributes
 +      require <a href="https://commons.apache.org/net/download_net.cgi"
 +      target="_top">jakarta-commons-net-1.4.0 or greater</a>.</strong></p>
 +      <p>Use these options when the standard options don't work, because</p>
 +      <ul>
 +        <li>the server is in a different timezone and you need timestamp dependency checking</li>
 +        <li>the default timestamp formatting doesn't match the server display and list parsing
 +          therefore fails</li>
 +      </ul>
 +      <p>If none of these is specified, the default mechanism of letting the system auto-detect the
 +      server OS type based on the FTP <code>SYST</code> command and assuming standard formatting
 +      for that OS type will be used.</p>
 +      <p>To aid in property-file-based development where a build script is configured with property
 +      files, for any of these attributes, a value of <q></q> is equivalent to not specifying it.</p>
 +      <p>Please understand that these options are incompatible with the autodetection scheme.  If
 +      any of these options is specified, (other than with a value of <q></q>) a system type must be
 +      chosen and if <var>systemTypeKey</var> is not specified, UNIX will be assumed. The philosophy
 +      behind this is that these options are for setting non-standard formats, and a build-script
 +      author who knows what system he is dealing with will know what options to need to be
 +      set. Otherwise, these options should be left alone and the default autodetection scheme can be
 +      used and will work in the majority of cases.</p>
      </td>
    </tr>
    <tr>
diff --cc manual/Tasks/javadoc.html
index 933b74d,fe9d8ef..452233c
--- a/manual/Tasks/javadoc.html
+++ b/manual/Tasks/javadoc.html
@@@ -94,447 -97,478 +94,450 @@@ with the <var>exclude</var> patterns o
        <code>module</code> or <code>&lt;packageset&gt;</code></td>
    </tr>
    <tr>
 -    <td valign="top">sourcepathref</td>
 -    <td valign="top">Specify where to find source files by <a
 -      href="../using.html#references">reference</a> to a PATH defined elsewhere.</td>
 -    <td align="center" valign="top">all</td>
 +    <td>sourcepathref</td>
 +    <td>Specify where to find source files by <a href="../using.html#references">reference</a> to a
 +      <var>sourcepath</var> defined elsewhere.</td>
 +    <td class="left">all</td>
    </tr>
    <tr>
 -    <td valign="top">sourcefiles</td>
 -    <td valign="top">Comma separated list of source files -- see also
 -    the nested <code>source</code> element.</td>
 -    <td align="center" valign="top">all</td>
 +    <td>sourcefiles</td>
 +    <td>Comma separated list of source files&mdash;see also the nested <code>source</code>
 +      element.</td>
 +    <td class="left">all</td>
    </tr>
    <tr>
 -    <td valign="top">modulenames</td>
 -    <td valign="top">Comma separated list of module names -- see also
 -    the nested <code>module</code> element. <em>since Ant 1.9.14</em></td>
 -    <td align="center" valign="top">all</td>
 +    <td>modulenames</td>
 +    <td>Comma separated list of module names -- see also
 +    the nested <code>module</code> element. <em>since Ant 1.10.6</em></td>
 +    <td>all</td>
    </tr>
    <tr>
 -    <td valign="top">destdir</td>
 -    <td valign="top">Destination directory for output files</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">Yes, unless a doclet has been specified.</td>
 +    <td>destdir</td>
 +    <td>Destination directory for output files</td>
 +    <td>all</td>
 +    <td>Yes, unless a <var>doclet</var> has been specified.</td>
    </tr>
    <tr>
 -    <td valign="top">maxmemory</td>
 -    <td valign="top">Max amount of memory to allocate to the javadoc VM</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>maxmemory</td>
 +    <td>Max amount of memory to allocate to the <kbd>javadoc</kbd> JVM</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">packagenames</td>
 -    <td valign="top">Comma separated list of package files (with terminating
 -      wildcard) -- see also the nested <code>package</code> element.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>packagenames</td>
 +    <td>Comma separated list of package files (with terminating wildcard)&mdash;see also the
 +      nested <code>package</code> element.</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">packageList</td>
 -    <td valign="top">The name of a file containing the packages to process</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>packageList</td>
 +    <td>The name of a file containing the packages to process</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">classpath</td>
 -    <td valign="top">Specify where to find user class files</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>classpath</td>
 +    <td>Specify where to find user class files</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Bootclasspath</td>
 -    <td valign="top">Override location of class files loaded by the bootstrap
 -      class loader</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Bootclasspath</td>
 +    <td>Override location of class files loaded by the bootstrap class loader</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">classpathref</td>
 -    <td valign="top">Specify where to find user class files by <a
 -      href="../using.html#references">reference</a> to a PATH defined elsewhere.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>classpathref</td>
 +    <td>Specify where to find user class files by <a href="../using.html#references">reference</a>
 +      to a <var>classpath</var> defined elsewhere.</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">bootclasspathref</td>
 -    <td valign="top">Override location of class files loaded by the
 -      bootstrap class loader by <a href="../using.html#references">reference</a> to a
 -      PATH defined elsewhere.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>bootclasspathref</td>
 +    <td>Override location of class files loaded by the bootstrap class loader
 +      by <a href="../using.html#references">reference</a> to a <var>bootclasspath</var> defined
 +      elsewhere.</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Extdirs</td>
 -    <td valign="top">Override location of installed extensions</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Extdirs</td>
 +    <td>Override location of installed extensions</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Overview</td>
 -    <td valign="top">Read overview documentation from HTML file</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Overview</td>
 +    <td>Read overview documentation from HTML file</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">access</td>
 -    <td valign="top">Access mode: one of <code>public</code>, <code>protected</code>,
 -                     <code>package</code>, or <code>private</code></td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No (default <code>protected</code>)</td>
 +    <td>access</td>
 +    <td>Access mode: one of <q>public</q>, <q>protected</q>, <q>package</q>, or <q>private</q></td>
 +    <td>all</td>
 +    <td>No; default is <q>protected</q></td>
    </tr>
    <tr>
 -    <td valign="top">Public</td>
 -    <td valign="top">Show only public classes and members</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Public</td>
 +    <td>Show only public classes and members</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Protected</td>
 -    <td valign="top">Show protected/public classes and members (default)</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Protected</td>
 +    <td>Show protected/public classes and members (default)</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Package</td>
 -    <td valign="top">Show package/protected/public classes and members</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Package</td>
 +    <td>Show package/protected/public classes and members</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Private</td>
 -    <td valign="top">Show all classes and members</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Private</td>
 +    <td>Show all classes and members</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Old</td>
 -    <td valign="top">Generate output using JDK 1.1 emulating
 -      doclet.<br>
 -      <b>Note:</b> as of Ant 1.8.0 this attribute doesn't have any
 -      effect since the javadoc of Java 1.4 (required by Ant 1.8.0)
 -      doesn't support the -1.1 switch anymore.</td>
 -    <td align="center" valign="top">1.2</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Old</td>
 +    <td>Generate output using JDK 1.1 emulating doclet.<br/><strong>Note</strong>: <em>Since Ant
 +      1.8.0</em> this attribute has no effect because <kbd>javadoc</kbd> of Java 1.4 and later
 +      does not support the <kbd>-1.1</kbd> switch anymore.</td>
 +    <td>1.2</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Verbose</td>
 -    <td valign="top">Output messages about what Javadoc is doing</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Verbose</td>
 +    <td>Output messages about what <kbd>javadoc</kbd> is doing</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Locale</td>
 -    <td valign="top">Locale to be used, e.g. en_US or en_US_WIN</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Locale</td>
 +    <td>Locale to be used, e.g. <q>en_US</q> or <q>en_US_WIN</q></td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Encoding</td>
 -    <td valign="top">Source file encoding name</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Encoding</td>
 +    <td>Source file encoding name</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Version</td>
 -    <td valign="top">Include @version paragraphs</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Version</td>
 +    <td>Include <code>@version</code> paragraphs</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Use</td>
 -    <td valign="top">Create class and package usage pages</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Use</td>
 +    <td>Create class and package usage pages</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Author</td>
 -    <td valign="top">Include @author paragraphs</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Author</td>
 +    <td>Include <code>@author</code> paragraphs</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Splitindex</td>
 -    <td valign="top">Split index into one file per letter</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Splitindex</td>
 +    <td>Split index into one file per letter</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Windowtitle</td>
 -    <td valign="top">Browser window title for the documentation (text)</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Windowtitle</td>
 +    <td>Browser window title for the documentation (text)</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Doctitle</td>
 -    <td valign="top">Include title for the package index(first) page (html-code)</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Doctitle</td>
 +    <td>Include title for the package index (first) page (HTML code)</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Header</td>
 -    <td valign="top">Include header text for each page (html-code)</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Header</td>
 +    <td>Include header text for each page (HTML code)</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">Footer</td>
 -    <td valign="top">Include footer text for each page (html-code)</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>Footer</td>
 +    <td>Include footer text for each page (HTML code)</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">bottom</td>
 -    <td valign="top">Include bottom text for each page (html-code)</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>bottom</td>
 +    <td>Include bottom text for each page (HTML code)</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">link</td>
 -    <td valign="top">Create links to javadoc output at the given URL
 -    -- see also the nested <code>link</code> element.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>link</td>
 +    <td>Create links to <code>javadoc</code> output at the given URL&mdash;see also the
 +      nested <code>link</code> element.</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">linkoffline</td>
 -    <td valign="top">Link to docs at <code>&lt;url&gt;</code> using package list at
 -    <code>&lt;url2&gt;</code> - separate the URLs by using a space character -- see
 -    also the nested <code>link</code> element.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>linkoffline</td>
 +    <td>Link to docs at <samp><em>url</em></samp> using package list
 +      at <samp><em>alt-url</em></samp> by specifying a
 +      value <q><em>url</em>&nbsp;<em>alt-url</em></q> (space as separator). A shorthand for the
 +      nested <code>link</code> element with <var>offline</var>=<q>true</q>.</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">group</td>
 -    <td valign="top">Group specified packages together in overview
 -    page.  The format is as described <a
 -    href="#groupattribute">below</a> -- see also the nested
 -    <code>group</code> element.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>group</td>
 +    <td>Group specified packages together in overview page.  The format is as
 +      described <a href="#groupattribute">below</a>&mdash;see also the nested <code>group</code>
 +      element.</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">nodeprecated</td>
 -    <td valign="top">Do not include @deprecated information</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>nodeprecated</td>
 +    <td>Do not include <code>@deprecated</code> information</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">nodeprecatedlist</td>
 -    <td valign="top">Do not generate deprecated list</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>nodeprecatedlist</td>
 +    <td>Do not generate deprecated list</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">notree</td>
 -    <td valign="top">Do not generate class hierarchy</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>notree</td>
 +    <td>Do not generate class hierarchy</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">noindex</td>
 -    <td valign="top">Do not generate index</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>noindex</td>
 +    <td>Do not generate index</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">nohelp</td>
 -    <td valign="top">Do not generate help link</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>nohelp</td>
 +    <td>Do not generate help link</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">nonavbar</td>
 -    <td valign="top">Do not generate navigation bar</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>nonavbar</td>
 +    <td>Do not generate navigation bar</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">serialwarn</td>
 -    <td valign="top">Generate warning about @serial tag</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>serialwarn</td>
 +    <td>Generate warning about <code>@serial</code> tag</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">helpfile</td>
 -    <td valign="top">Specifies the HTML help file to use</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>helpfile</td>
 +    <td>Specifies the HTML help file to use</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">stylesheetfile</td>
 -    <td valign="top">Specifies the CSS stylesheet to use</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>stylesheetfile</td>
 +    <td>Specifies the CSS stylesheet to use</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">charset</td>
 -    <td valign="top">Charset for cross-platform viewing of generated
 -      documentation</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>charset</td>
 +    <td>Charset for cross-platform viewing of generated documentation</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">docencoding</td>
 -    <td valign="top">Output file encoding name</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>docencoding</td>
 +    <td>Output file encoding name</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">doclet</td>
 -    <td valign="top">Specifies the class file that starts the doclet
 -    used in generating the documentation -- see also the nested
 -    <code>doclet</code> element.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>doclet</td>
 +    <td>Specifies the class file that starts the doclet used in generating the
 +      documentation&mdash;see also the nested <code>doclet</code> element.</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">docletpath</td>
 -    <td valign="top">Specifies the path to the doclet class file that is specified with the -doclet option.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>docletpath</td>
 +    <td>Specifies the path to the doclet class file that is specified with the <kbd>-doclet</kbd>
 +      option.</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">docletpathref</td>
 -    <td valign="top">Specifies the path to the doclet class file that
 -      is specified with the -doclet option by <a
 -      href="../using.html#references">reference</a> to a PATH defined elsewhere.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>docletpathref</td>
 +    <td>Specifies the path to the doclet class file that is specified with the <kbd>-doclet</kbd>
 +      option by <a href="../using.html#references">reference</a> to a path defined elsewhere.</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">additionalparam</td>
 -    <td valign="top">Lets you add additional parameters to the javadoc
 -    command line. Useful for doclets. Parameters containing spaces
 -    need to be quoted using &amp;quot; -- see also the nested
 -    <code>arg</code> element.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>additionalparam</td>
 +    <td>Lets you add additional parameters to the <kbd>javadoc</kbd> command line. Useful for
 +      doclets. Parameters containing spaces need to be quoted using &amp;quot;&mdash;see also the
 +      nested <code>arg</code> element.</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">failonerror</td>
 -    <td valign="top">Stop the buildprocess if the command exits with a
 -      returncode other than 0.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>failonerror</td>
 +    <td>Stop the build process if the command exits with a return code other than <q>0</q>.</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">failonwarning</td>
 -    <td valign="top">Stop the buildprocess if a warning is emitted -
 -    i.e. if javadoc's output contains the word "warning".  <em>since
 -    Ant 1.9.4</em></td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>failonwarning</td>
 +    <td>Stop the build process if a warning is emitted&mdash;i.e. if <kbd>javadoc</kbd>'s output
 +      contains the word <q>warning</q>.  <em>since Ant 1.9.4</em></td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">excludepackagenames</td>
 -    <td valign="top">comma separated list of packages you don't want
 -      docs for -- see also the nested <code>excludepackage</code> element.</td>
 -    <td align="center" valign="top">all</td>
 -    <td valign="top" align="center">No</td>
 +    <td>excludepackagenames</td>
 +    <td>comma separated list of packages you don't want docs for&mdash;see also the
 +      nested <code>excludepackage</code> element.</td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">defaultexcludes</td>
 -    <td valign="top">indicates whether default excludes should be used
 -      (<code>yes</code> | <code>no</code>); default excludes are used when omitted.</td>
 -    <td align="center" valign="top">all</td>
 -    <td valign="top" align="center">No</td>
 +    <td>defaultexcludes</td>
 +    <td>indicates whether default excludes should be used (<q>yes|no</q>).</td>
 +    <td>all</td>
 +    <td>No; defaults to <q>yes</q></td>
    </tr>
    <tr>
 -    <td valign="top">useexternalfile</td>
 -    <td valign="top">indicates whether the sourcefile name specified
 -      in srcfiles or as nested source elements should be written to a
 -      temporary file to make the command line shorter. Also applies to
 -      the package names specified via the packagenames attribute or
 -      nested package elements.  <em>Since Ant 1.7.0</em>, also applies
 -      to all the other command line options.
 -      (<code>yes</code> | <code>no</code>). Default is no.<br/>
 +    <td>useexternalfile</td>
 +    <td>indicates whether the source file names specified in <var>srcfiles</var> or as
 +      nested <code>source</code> elements should be written to a temporary file to make the command
 +      line shorter. Also applies to the package names specified via the <var>packagenames</var>
 +      attribute or nested <code>package</code> elements.  <em>Since Ant 1.7.0</em>, also applies to
-       all the other command line options.  (<q>yes|no</q>).</td>
++      all the other command line options.  (<q>yes|no</q>).<br/>
+       If enabled, the file will be written to
+       the <a href="../running.html#tmpdir">temporary
 -      directory</a>.</p>
 -    </td>
 -    <td align="center" valign="top">all</td>
 -    <td valign="top" align="center">No</td>
 -  </tr>
 -  <tr>
 -    <td valign="top">source</td>
 -    <td valign="top">Necessary to enable javadoc to handle assertions
 -    present in J2SE v 1.4 source code. Set this to &quot;1.4&quot; to
 -    documents code that compiles using <code>&quot;javac -source
 -    1.4&quot;</code>.<br>
 -    A default value for this attribute can be provided using the magic
 -    <a
 -    href="../javacprops.html#source"><code>ant.build.javac.source</code></a>
 -    property.</td>
 -    <td align="center" valign="top">1.4+</td>
 -    <td align="center" valign="top">No</td>
 -  </tr>
 -  <tr>
 -    <td valign="top">linksource</td>
 -    <td valign="top">Generate hyperlinks to source files.
 -      <em>since Ant 1.6</em>.
 -      (<code>yes</code> | <code>no</code>). Default is no.</td>
 -    <td align="center" valign="top">1.4+</td>
 -    <td align="center" valign="top">No</td>
 -  </tr>
 -  <tr>
 -    <td valign="top">breakiterator</td>
 -    <td valign="top">Use the new breakiterator algorithm.
 -      <em>since Ant 1.6</em>.
 -      (<code>yes</code> | <code>no</code>). Default is no.</td>
 -    <td align="center" valign="top">1.4+</td>
 -    <td align="center" valign="top">No</td>
 -  </tr>
 -  <tr>
 -    <td valign="top">noqualifier</td>
 -    <td valign="top">Enables the <code>-noqualifier</code> argument -
 -      must be <code>all</code> or a colon separated list of packages.
 -      <em>since Ant 1.6</em>.</td>
 -    <td align="center" valign="top">1.4+</td>
 -    <td align="center" valign="top">No</td>
 -  </tr>
 -  <tr>
 -    <td valign="top">includenosourcepackages</td>
 -    <td valign="top">If set to true, packages that don't contain Java
 -      source but a package.html will get documented as well.
 -      <em>since Ant 1.6.3</em>.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No (default is <code>false</code>)</td>
 -  </tr>
 -  <tr>
 -    <td valign="top">executable</td>
 -    <td valign="top">Specify a particular <code>javadoc</code> executable
 -      to use in place of the default binary (found in the same JDK as Ant is running in).
 -      <em>since Ant 1.6.3</em>.</td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 -  </tr>
 -  <tr>
 -    <td valign="top">docfilessubdirs</td>
 -    <td valign="top">Enables deep-copying of <code>doc-files</code>
 -      subdirectories.  Defaults to false. <em>since Ant 1.8.0</em>.</td>
 -    <td align="center" valign="top">1.4</td>
 -    <td align="center" valign="top">No</td>
 -  </tr>
 -  <tr>
 -    <td valign="top">excludedocfilessubdir</td>
 -    <td valign="top">Colon-separated list of <code>doc-files</code>'
 -      subdirectories to exclude if <code>docfilessubdirs</code> is
 -      true. <em>since Ant 1.8.0</em>.</td>
 -    <td align="center" valign="top">1.4</td>
 -    <td align="center" valign="top">No</td>
 -  </tr>
 -  <tr>
 -    <td valign="top">postProcessGeneratedJavadocs</td>
 -    <td valign="top">Whether to post-process the generated javadocs in
 -      order to mitigate CVE-2013-1571.  Defaults to true.  <em>Since Ant
 -      1.9.2</em><br>
 -      There is a frame injection attack possible in javadocs generated by Oracle
 -      JDKs prior to Java7 Update 25 (<a href="http://www.oracle.com/technetwork/java/javase/7u25-relnotes-1955741.html#jpi-upt" target="_blank">details</a>).  
 -      When this flag is set to true, Ant will check whether the docs are vulnerable 
 -      and will try to fix them.
 -    </td>
 -    <td align="center" valign="top">1.4</td>
 -    <td align="center" valign="top">No</td>
++      directory</a>.</td>
 +    <td>all</td>
 +    <td>No; default is <q>no</q></td>
 +  </tr>
 +  <tr>
 +    <td>source</td>
 +    <td>Enable <kbd>javadoc</kbd> to handle Java language features.  Set this to <q>1.4</q> to
 +      document code that compiles using <kbd>javac -source 1.4</kbd>, etc.</td>
 +    <td>1.4+</td>
 +    <td>No; default can be provided using the magic
 +    <a href="../javacprops.html#source"><code>ant.build.javac.source</code></a> property.</td>
 +  </tr>
 +  <tr>
 +    <td>linksource</td>
 +    <td>Generate hyperlinks to source files.  <em>since Ant 1.6</em>.  (<q>yes|no</q>).</td>
 +    <td>1.4+</td>
 +    <td>No; default is <q>no</q></td>
 +  </tr>
 +  <tr>
 +    <td>breakiterator</td>
 +    <td>Use the new break iterator algorithm.  <em>since Ant 1.6</em>.  (<q>yes|no</q>).</td>
 +    <td>1.4+</td>
 +    <td>No; default is <q>no</q></td>
 +  </tr>
 +  <tr>
 +    <td>noqualifier</td>
 +    <td>Enables the <kbd>-noqualifier</kbd> argument&mdash;must be <q>all</q> or a colon separated
 +      list of packages.  <em>since Ant 1.6</em>.</td>
 +    <td>1.4+</td>
 +    <td>No</td>
 +  </tr>
 +  <tr>
 +    <td>includenosourcepackages</td>
 +    <td>If set to <q>true</q>, packages that don't contain Java source but
 +      a <samp>package.html</samp> will get documented as well.  <em>since Ant 1.6.3</em>.</td>
 +    <td>all</td>
 +    <td>No; default is <q>false</q></td>
 +  </tr>
 +  <tr>
 +    <td>executable</td>
 +    <td>Specify a particular <kbd>javadoc</kbd> executable to use in place of the default binary
 +      (found in the same JDK as Ant is running in).  <em>since Ant 1.6.3</em>.</td>
 +    <td>all</td>
 +    <td>No</td>
 +  </tr>
 +  <tr>
 +    <td>docfilessubdirs</td>
 +    <td>Enables deep-copying of <samp>doc-files</samp> subdirectories. <em>since Ant
 +      1.8.0</em>.</td>
 +    <td>1.4</td>
 +    <td>No; defaults to <q>false</q></td>
 +  </tr>
 +  <tr>
 +    <td>excludedocfilessubdir</td>
 +    <td>Colon-separated list of <samp>doc-files</samp> subdirectories to exclude
 +      if <var>docfilessubdirs</var> is true. <em>since Ant 1.8.0</em>.</td>
 +    <td>1.4</td>
 +    <td>No</td>
 +  </tr>
 +  <tr>
 +    <td>postProcessGeneratedJavadocs</td>
 +    <td>Whether to post-process the generated javadocs in order to mitigate
 +      CVE-2013-1571.  <em>Since Ant 1.9.2</em><br/> There is a frame injection attack possible in
 +      javadocs generated by Oracle JDKs prior to Java 7 update 25
 +      (<a href="https://www.oracle.com/technetwork/java/javase/7u25-relnotes-1955741.html#jpi-upt"
 +      target="_top">details</a>).  When this flag is set to <q>true</q>, Ant will check whether the
 +      docs are vulnerable and will try to fix them.</td>
 +    <td>1.4</td>
 +    <td>No; defaults to <q>true</q></td>
    </tr>
    <tr>
 -    <td valign="top">modulesourcepath</td>
 -    <td valign="top">Specify where to find module source files
 -      <em>since Ant 1.9.14</em></td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>modulesourcepath</td>
 +    <td>Specify where to find module source files
 +      <em>since Ant 1.10.6</em></td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">modulesourcepathref</td>
 -    <td valign="top">Specify where to find module source files by <a
 +    <td>modulesourcepathref</td>
 +    <td>Specify where to find module source files by <a
        href="../using.html#references">reference</a> to a PATH defined elsewhere.
 -      <em>since Ant 1.9.14</em></td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +      <em>since Ant 1.10.6</em></td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">modulepath</td>
 -    <td valign="top">Specify where to find module files
 -      <em>since Ant 1.9.14</em></td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +    <td>modulepath</td>
 +    <td>Specify where to find module files
 +      <em>since Ant 1.10.6</em></td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">modulepathref</td>
 -    <td valign="top">Specify where to find module files by <a
 +    <td>modulepathref</td>
 +    <td>Specify where to find module files by <a
        href="../using.html#references">reference</a> to a PATH defined elsewhere.
 -      <em>since Ant 1.9.14</em></td>
 -    <td align="center" valign="top">all</td>
 -    <td align="center" valign="top">No</td>
 +      <em>since Ant 1.10.6</em></td>
 +    <td>all</td>
 +    <td>No</td>
    </tr>
  </table>
  
diff --cc manual/Tasks/replaceregexp.html
index f088601,7a091de..5077fbc
--- a/manual/Tasks/replaceregexp.html
+++ b/manual/Tasks/replaceregexp.html
@@@ -23,73 -23,78 +23,77 @@@
  </head>
  <body>
  
 -<h2><a name="replaceregexp">ReplaceRegExp</a></h2>
 +<h2 id="replaceregexp">ReplaceRegExp</h2>
  <h3>Description</h3>
 -<p>ReplaceRegExp is a directory based task for replacing the
 -occurrence of a given regular expression with a substitution pattern
 -in a selected file or set of files.</p>
 +<p><code>ReplaceRegExp</code> is a directory based task for replacing the occurrence of a given
 +regular expression with a substitution pattern in a selected file or set of files.</p>
  
- <p>The output file is only written if it differs from the existing file.  This prevents spurious
- rebuilds based on unchanged files which have been regenerated by this task.</p>
+ <p>The output file is only written if it differs from the existing
+ file.  This prevents spurious rebuilds based on unchanged files which
+ have been regenerated by this task. In order to assess whether a file
+ has changed, this task will create a pre-processed version of the
+ source file inside of the <a href="../running.html#tmpdir">temporary
+ directory</a>.</p>
  
 -<p>Similar to <a href="../Types/mapper.html#regexp-mapper">regexp
 -type mappers</a> this task needs a supporting regular expression
 -library and an implementation of
 -<code>org.apache.tools.ant.util.regexp.Regexp</code>.
 -See details in the documentation of the <a href="../Types/regexp.html#implementation">Regexp Type</a>. </p>
 +<p>Similar to <a href="../Types/mapper.html#regexp-mapper">regexp type mappers</a> this task needs a
 +supporting regular expression library and an implementation
 +of <code class="code">org.apache.tools.ant.util.regexp.Regexp</code>.  See details in the
 +documentation of the <a href="../Types/regexp.html#implementation">Regexp Type</a>.</p>
  
  <h3>Parameters</h3>
 -<table border="1" cellpadding="2" cellspacing="0">
 +<table class="attr">
    <tr>
 -    <td valign="top"><b>Attribute</b></td>
 -    <td valign="top"><b>Description</b></td>
 -    <td align="center" valign="top"><b>Required</b></td>
 +    <th scope="col">Attribute</th>
 +    <th scope="col">Description</th>
 +    <th scope="col">Required</th>
    </tr>
    <tr>
 -    <td valign="top">file</td>
 -    <td valign="top">file for which the regular expression should be replaced.</td>
 -    <td align="center">Yes if no nested <code>&lt;fileset&gt;</code> is used</td>
 +    <td>file</td>
 +    <td>file for which the regular expression should be replaced.</td>
 +    <td>Yes, unless nested <code>&lt;fileset&gt;</code> is used</td>
    </tr>
    <tr>
 -    <td valign="top">match</td>
 -    <td valign="top">The regular expression pattern to match in the file(s)</td>
 -    <td align="center">Yes, if no nested <code>&lt;regexp&gt;</code> is used</td>
 +    <td>match</td>
 +    <td>The regular expression pattern to match in the file(s)</td>
 +    <td>Yes, unless nested <code>&lt;regexp&gt;</code> is used</td>
    </tr>
    <tr>
 -    <td valign="top">replace</td>
 -    <td valign="top">The substitution pattern to place in the file(s) in place
 -                     of the regular expression.</td>
 -    <td align="center">Yes, if no nested <code>&lt;substitution&gt;</code> is used</td>
 +    <td>replace</td>
 +    <td>The substitution pattern to place in the file(s) in place of the regular expression.</td>
 +    <td>Yes, unless nested <code>&lt;substitution&gt;</code> is used</td>
    </tr>
    <tr>
 -    <td valign="top">flags</td>
 -    <td valign="top">The flags to use when matching the regular expression.  For more
 -                     information, consult the Perl5 syntax<br>
 -                     g : Global replacement.  Replace all occurrences found<br>
 -                     i : Case Insensitive.  Do not consider case in the match<br>
 -                     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.<br>
 -                     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.<br>
 +    <td>flags</td>
 +    <td>The flags to use when matching the regular expression.  For more information, consult the
 +      Perl 5 syntax<br/>
 +      <q>g</q> : Global replacement.  Replace all occurrences found<br/>
 +      <q>i</q> : Case Insensitive.  Do not consider case in the match<br/>
 +      <q>m</q> : Multiline.  Treat the string as multiple lines of input, using <q>^</q>
 +      and <q>$</q> as the start or end of any line, respectively, rather than start or end of
 +      string.<br/>
 +      <q>s</q> : Singleline.  Treat the string as a single line of input, using <q>.</q> to match
 +      any character, including a newline, which normally, it would not match.
      </td>
 -    <td valign="top" align="center">No</td>
 +    <td>No</td>
    </tr>
    <tr>
 -    <td valign="top">byline</td>
 -    <td valign="top">Process the file(s) one line at a time, executing the replacement
 -                     on one line at a time (<i>true/false</i>).  This is useful if you
 -                     want to only replace the first occurrence of a regular expression on
 -                     each line, which is not easy to do when processing the file as a whole.
 -                     Defaults to <i>false</i>.</td>
 -    <td valign="top" align="center">No</td>
 +    <td>byline</td>
 +    <td>Process the file(s) one line at a time, executing the replacement on one line at a time
 +      (<q>true|false</q>).  This is useful if you want to only replace the first occurrence of a
 +      regular expression on each line, which is not easy to do when processing the file as a
 +      whole.</td>
 +    <td>No; defaults to <q>false</q></td>
    </tr>
    <tr>
 -    <td valign="top">encoding</td>
 -    <td valign="top">The encoding of the file. <em>since Apache Ant 1.6</em></td>
 -    <td align="center">No - defaults to default JVM encoding</td>
 +    <td>encoding</td>
 +    <td>The encoding of the file. <em>since Apache Ant 1.6</em></td>
 +    <td>No; defaults to default JVM character encoding</td>
    </tr>
    <tr>
 -    <td valign="top">preserveLastModified</td>
 -    <td valign="top">Keep the file timestamp(s) even if the file(s)
 -      is(are) modified.  <em>since Ant 1.8.0.</em></td>
 -    <td valign="top" align="center">No, defaults to false</td>
 +    <td>preserveLastModified</td>
 +    <td>Keep the file timestamp(s) even if the file(s) is(are) modified.  <em>since Ant
 +      1.8.0</em>.</td>
 +    <td>No; defaults to <q>false</q></td>
    </tr>
  </table>
  <h3>Examples</h3>
diff --cc manual/Types/selectors.html
index 98b5033,f622e72..6007c3e
--- a/manual/Types/selectors.html
+++ b/manual/Types/selectors.html
@@@ -596,111 -699,125 +596,115 @@@
          &lt;present targetdir="template"/&gt;
          &lt;type type="file"/&gt;
      &lt;/and&gt;
 -&lt;/fileset&gt;
 -</pre></blockquote>
 -
 -
 -    <h4><a name="modified">Modified Selector</a></h4>
 -    <p>The <code>&lt;modified&gt;</code> selector computes a value for a file, compares that
 -    to the value stored in a cache and select the file, if these two values
 -    differ.</p>
 -    <p>Because this selector is highly configurable the order in which the selection is done
 -    is: <ol>
 -        <li> get the absolute path for the file </li>
 -        <li> get the cached value from the configured cache (absolute path as key) </li>
 -        <li> get the new value from the configured algorithm </li>
 -        <li> compare these two values with the configured comparator </li>
 -        <li> update the cache if needed and requested </li>
 -        <li> do the selection according to the comparison result </li>
 -        </ol>
 -    <p>The comparison, computing of the hashvalue and the store is done by implementation
 -    of special interfaces. Therefore they may provide additional parameters.</p>
 -
 -    <p>The <code>&lt;modified&gt;</code> selector can be used as a
 -      ResourceSelector (see the
 -      <a href="resources.html#restrict">&lt;restrict&gt;</a>
 -      ResourceCollection).
 -    In that case it maps simple file resources to files and does its job. If the
 -    resource is from another type, the <code>&lt;modified&gt;</code> selector tries
 -    to (<b>attention!</b>) copy the content into a local file for computing the
 -    hashvalue.</p>
 +&lt;/fileset&gt;</pre>
 +
 +    <h4 id="modified">Modified Selector</h4>
 +    <p>The <code>&lt;modified&gt;</code> selector computes a value for a file, compares that to the
 +    value stored in a cache and select the file, if these two values differ.</p>
 +    <p>Because this selector is highly configurable the order in which the selection is done is:</p>
 +    <ol>
 +      <li>get the absolute path for the file</li>
 +      <li>get the cached value from the configured cache (absolute path as key)</li>
 +      <li>get the new value from the configured algorithm</li>
 +      <li>compare these two values with the configured comparator</li>
 +      <li>update the cache if needed and requested</li>
 +      <li>do the selection according to the comparison result</li>
 +    </ol>
 +    <p>The comparison, computing of the hashvalue and the store is done by implementation of special
 +    interfaces. Therefore they may provide additional parameters.</p>
 +
 +    <p>The <code>&lt;modified&gt;</code> selector can be used as a ResourceSelector (see
 +    the <a href="resources.html#restrict">&lt;restrict&gt;</a> ResourceCollection).  In that case it
 +    maps simple file resources to files and does its job. If the resource is from another type,
 +    the <code>&lt;modified&gt;</code> selector tries to (<strong>attention!</strong>) copy the
 +    content into a local file for computing the hashvalue.</p>
  
+     <p>If the source resource is not a filesystem resource the
+     modified selector will download it to
+     the <a href="../running.html#tmpdir">temporary directory</a>.</p>
+ 
 -    <table border="1" cellpadding="2" cellspacing="0">
 +    <table class="attr">
        <tr>
 -        <td valign="top"><b>Attribute</b></td>
 -        <td valign="top"><b>Description</b></td>
 -        <td align="center" valign="top"><b>Required</b></td>
 +        <th scope="col">Attribute</th>
 +        <th scope="col">Description</th>
 +        <th scope="col">Required</th>
        </tr>
        <tr>
 -        <td valign="top"> algorithm </td>
 -        <td valign="top"> The type of algorithm should be used.
 -            Acceptable values are (further information see later):
 -            <ul>
 -                <li> hashvalue - HashvalueAlgorithm </li>
 -                <li> digest - DigestAlgorithm </li>
 -                <li> checksum - ChecksumAlgorithm </li>
 -                <li> lastmodified - LastModifiedAlgorithm </li>
 -            </ul>
 +        <td>algorithm</td>
 +        <td>The type of algorithm should be used.  Acceptable values are (further information
 +          see later):
 +          <ul>
 +            <li><q>hashvalue</q>&mdash;HashvalueAlgorithm</li>
 +            <li><q>digest</q>&mdash;DigestAlgorithm</li>
 +            <li><q>checksum</q>&mdash;ChecksumAlgorithm</li>
 +            <li><q>lastmodified</q>&mdash;LastModifiedAlgorithm</li>
 +          </ul>
          </td>
 -        <td valign="top" align="center"> No, defaults to <i>digest</i> </td>
 +        <td>No; defaults to <q>digest</q></td>
        </tr>
        <tr>
 -        <td valign="top"> cache </td>
 -        <td valign="top"> The type of cache should be used.
 -            Acceptable values are (further information see later):
 -            <ul>
 -                <li> propertyfile - PropertyfileCache </li>
 -            </ul>
 +        <td>cache</td>
 +        <td>The type of cache should be used.  Acceptable values are (further information see
 +          later):
 +          <ul>
 +            <li><q>propertyfile</q>&mdash;PropertyfileCache</li>
 +          </ul>
          </td>
 -        <td valign="top" align="center"> No, defaults to <i>propertyfile</i> </td>
 -      </tr>
 -      <tr>
 -        <td valign="top"> comparator </td>
 -        <td valign="top"> The type of comparator should be used.
 -            Acceptable values are (further information see later):
 -            <ul>
 -                <li> equal - EqualComparator </li>
 -                <li> rule - java.text.RuleBasedCollator
 -                  <!-- NOTE -->
 -                  <i>(see <a href="#ModSelNote">note</a> for restrictions)</i>
 -                </li>
 -            </ul>
 +        <td>No; defaults to <q>propertyfile</q></td>
 +      </tr>
 +      <tr>
 +        <td>comparator</td>
 +        <td>The type of comparator should be used.  Acceptable values are:
 +          <ul>
 +            <li><q>equal</q>&mdash;EqualComparator</li>
 +            <li><q>rule</q>&mdash;java.text.RuleBasedCollator
 +              <!-- NOTE -->
 +              <em>(see <a href="#ModSelNote">note</a> for restrictions)</em></li>
 +          </ul>
          </td>
 -        <td valign="top" align="center"> No, defaults to <i>equal</i> </td>
 +        <td>No; defaults to <q>equal</q></td>
        </tr>
        <tr>
 -        <td valign="top"> algorithmclass </td>
 -        <td valign="top"> Classname of custom algorithm implementation. Lower
 -          priority than <i>algorithm</i>. </td>
 -        <td valign="top" align="center"> No </td>
 +        <td>algorithmclass</td>
 +        <td>Classname of custom algorithm implementation. Lower priority
 +          than <var>algorithm</var>.</td>
 +        <td>No</td>
        </tr>
        <tr>
 -        <td valign="top"> cacheclass </td>
 -        <td valign="top"> Classname of custom cache implementation. Lower
 -          priority than <i>cache</i>. </td>
 -        <td valign="top" align="center"> No </td>
 +        <td>cacheclass</td>
 +        <td>Classname of custom cache implementation. Lower priority than <var>cache</var>.</td>
 +        <td>No</td>
        </tr>
        <tr>
 -        <td valign="top"> comparatorclass </td>
 -        <td valign="top"> Classname of custom comparator implementation. Lower
 -          priority than <i>comparator</i>. </td>
 -        <td valign="top" align="center"> No </td>
 +        <td>comparatorclass</td>
 +        <td>Classname of custom comparator implementation. Lower priority
 +          than <var>comparator</var>.</td>
 +        <td>No</td>
        </tr>
        <tr>
 -        <td valign="top"> update </td>
 -        <td valign="top"> Should the cache be updated when values differ? (boolean) </td>
 -        <td valign="top" align="center"> No, defaults to <i>true</i> </td>
 +        <td>update</td>
 +        <td>Should the cache be updated when values differ? (boolean)</td>
 +        <td>No; defaults to <q>true</q></td>
        </tr>
        <tr>
 -        <td valign="top"> seldirs </td>
 -        <td valign="top"> Should directories be selected? (boolean) </td>
 -        <td valign="top" align="center"> No, defaults to <i>true</i> </td>
 +        <td>seldirs</td>
 +        <td>Should directories be selected? (boolean)</td>
 +        <td>No; defaults to <q>true</q></td>
        </tr>
        <tr>
 -        <td valign="top"> selres </td>
 -        <td valign="top"> Should Resources without an InputStream, and
 -           therefore without checking, be selected?  (boolean) </td>
 -        <td valign="top" align="center"> No, defaults to <i>true</i>. Only relevant
 -           when used as ResourceSelector. </td>
 +        <td>selres</td>
 +        <td>Should Resources without an InputStream, and therefore without checking, be selected?
 +          (boolean)</td>
 +        <td>No; defaults to <q>true</q>. Only relevant when used as ResourceSelector.</td>
        </tr>
        <tr>
 -        <td valign="top"> delayupdate </td>
 -        <td valign="top"> If set to <i>true</i>, the storage of the cache will be delayed until the
 -             next finished BuildEvent; task finished, target finished or build finished,
 -             whichever comes first.  This is provided for increased performance.  If set
 -             to <i>false</i>, the storage of the cache will happen with each change.  This
 -             attribute depends upon the <i>update</i> attribute. (boolean)</td>
 -        <td valign="top" align="center"> No, defaults to <i>true</i> </td>
 +        <td>delayupdate</td>
 +        <td>If set to <q>true</q>, the storage of the cache will be delayed until the next finished
 +          BuildEvent; task finished, target finished or build finished, whichever comes first.  This
 +          is provided for increased performance.  If set to <q>false</q>, the storage of the cache
 +          will happen with each change.  This attribute depends upon the <var>update</var>
 +          attribute. (boolean)</td>
 +        <td>No; defaults to <q>true</q></td>
        </tr>
      </table>
  
diff --cc manual/running.html
index c1b031f,b3815a7..ab48f95
--- a/manual/running.html
+++ b/manual/running.html
@@@ -453,58 -488,89 +453,104 @@@ And I filtered out the <code>getPropert
  <tr>
    <td><code>ant.tstamp.now</code></td>
    <td>number, seconds since the epoch (midnight 1970-01-01)</td>
 -  <td>The value to use as current time and date for &lt;tstamp&gt;</td>
 +  <td rowspan="2">The value to use as current time and date
 +  for <code>&lt;tstamp&gt;</code></td>
 +</tr>
 +<tr>
 +  <td><code>ant.tstamp.now.iso</code></td>
 +  <td>ISO-8601 timestamp string like <code>1972-04-17T08:07:00Z</code></td>
  </tr>
+ <tr>
+   <td><code>java.io.tmpdir</code></td>
+   <td>Some tasks need to create temporary files and will write them to
+   the directory specified by this property. This property is set by
+   the Java VM but can be overridden when Ant is started.<br/>
+   See also <a href="#tmpdir">Temporary Directories</a>.</td>
+ </table>
+ <tr>
+   <td><code>ant.tmpdir</code></td>
 -  <td><em>Since Ant 1.9.15</em><br/>
++  <td><em>Since Ant 1.10.8</em><br/>
+   Some tasks need to create temporary files and will write them to
+   the directory specified by this property. This property takes
+   precedence over <code>java.io.tmpdir</code> if it has been
+   set. Unlike <code>java.io.tmpdir</code> this property can be set
+   from within the build file.<br/>
+   See also <a href="#tmpdir">Temporary Directories</a>.</td>
  </table>
  
  <p>
 -If new properties get added (it happens), expect them to appear under the
 -"ant." and "org.apache.tools.ant" prefixes, unless the developers have a
 -very good reason to use another prefix. Accordingly, please avoid using
 -properties that begin with these prefixes. This protects you from future
 -Ant releases breaking your build file.
 +If new properties get added (it happens), expect them to appear under
 +the <code>ant.</code> and <code>org.apache.tools.ant.</code> prefixes,
 +unless the developers have a very good reason to use another
 +prefix. Accordingly, please avoid using properties that begin with
 +these prefixes. This protects you from future Ant releases breaking
 +your build file.
  </p>
  <h3>return code</h3>
 -<p>the ant start up scripts (in their Windows and Unix version) return
 -the return code of the java program. So a successful build returns 0,
 -failed builds return other values.
 +<p>
 +Ant start up scripts (in their Windows and Unix version) return the
 +return code of the <code>java</code> program. So a successful build
 +returns <q>0</q>, failed builds return other values.
  </p>
  
 -<h2><a name="tmpdir">Temporary Directories</a></h2>
++<h2 id="tmpdir">Temporary Directories</h2>
+ 
+ Some Ant tasks and types need to create temporary files. By default
+ they use the default temporary directory of the Java VM they are
+ running in - which can be set by setting the system
+ property <code>java.io.tmpdir</code>. The default value of it depends
+ on the platform and the JVM implementation.</p>
+ 
+ <p>Setting a system property when invoking Ant is not straight forward
+   as the corresponding command line arguments must be sent to the Java
+   executable rather than Ant's main class. When using
+   the <code>ant(.cmd)</code> wrapper scripts you can do so with the
+   help of the <code>ANT_OPTS</code> environment variable.</p>
+ 
 -<p>Starting with Ant 1.9.15 we've introduced a new Ant
++<p>Starting with Ant 1.10.8 we've introduced a new Ant
+   property <code>ant.tmpdir</code> that takes precedence
+   over <code>java.io.tmpdir</code> when set. As this is a normal Ant
+   property it can be set via the command line or even from within a
+   build file.</p>
+ 
+ <p>Tasks and types using the temporary directory will state the fact
+   inside of their respective manual page. In addition every execution
+   of an external command on OpenVMS will create a temporary file
+   holding a DCL script that invokes the actual command.</p>
+ 
+ <p>Tasks not provided with the Ant distribution will ignore
+   the <code>ant.tmpdir</code> property and
+   use <code>java.io.tmpdir</code> unless they have been adapted to the
 -  changed API of Ant 1.9.15.</p>
 -
 -<h2><a name="cygwin">Cygwin Users</a></h2>
 -<p>The Unix launch script that come with Ant works correctly with Cygwin. You
 -should not have any problems launching Ant from the Cygwin shell. It is
 -important to note, however, that once Ant is running it is part of the JDK
 -which operates as a native Windows application. The JDK is not a Cygwin
 -executable, and it therefore has no knowledge of Cygwin paths, etc. In
 -particular when using the <code>&lt;exec&gt;</code> task, executable names such
 -as &quot;/bin/sh&quot; will not work, even though these work from the Cygwin
 -shell from which Ant was launched. You can use an executable name such as
 -&quot;sh&quot; and rely on that command being available in the Windows path.
 -</p>
++  changed API of Ant 1.10.8.</p>
+ 
 -<h2><a name="os2">OS/2 Users</a></h2>
 -<p>The OS/2 launch script was developed to perform complex tasks. It has two parts:
 -<code>ant.cmd</code> which calls Ant and <code>antenv.cmd</code> which sets the environment for Ant.
 -Most often you will just call <code>ant.cmd</code> using the same command line options as described
 -above. The behaviour can be modified by a number of ways explained below.</p>
+ 
 -<p>Script <code>ant.cmd</code> first verifies whether the Ant environment is set correctly. The
 -requirements are:</p>
 +<h2 id="cygwin">Cygwin Users</h2>
 +<p>
 +Unix launch script that come with Ant works correctly with Cygwin. You
 +should not have any problems launching Ant from the Cygwin shell. It
 +is important to note, however, that once Ant is running it is part of
 +the JDK which operates as a native Windows application. The JDK is not
 +a Cygwin executable, and it therefore has no knowledge of Cygwin
 +paths, etc. In particular when using the <code>&lt;exec&gt;</code>
 +task, executable names such as <q>/bin/sh</q> will not work, even
 +though these work from the Cygwin shell from which Ant was
 +launched. You can use an executable name such as <q>sh</q> and rely on
 +that command being available in the Windows path.
- </p>
 +
 +<h2 id="os2">OS/2 Users</h2>
 +<p>
 +The OS/2 launch script was developed to perform complex tasks. It has
 +two parts: <kbd>ant.cmd</kbd> which calls Ant
 +and <kbd>antenv.cmd</kbd> which sets the environment for Ant.  Most
 +often you will just call <kbd>ant.cmd</kbd> using the same command
 +line options as described above. The behaviour can be modified by a
 +number of ways explained below.
 +</p>
 +
 +<p>
 +Script <kbd>ant.cmd</kbd> first verifies whether the Ant environment
 +is set correctly. The requirements are:
 +</p>
  <ol>
  <li>Environment variable <code>JAVA_HOME</code> is set.</li>
  <li>Environment variable <code>ANT_HOME</code> is set.</li>
diff --cc src/main/org/apache/tools/ant/MagicNames.java
index 6e7fc70,d189654..29bbaee
--- a/src/main/org/apache/tools/ant/MagicNames.java
+++ b/src/main/org/apache/tools/ant/MagicNames.java
@@@ -310,17 -304,12 +310,25 @@@ public final class MagicNames 
      public static final String TSTAMP_NOW = "ant.tstamp.now";
  
      /**
 +     * Magic property that can be set to contain a value for tstamp's
 +     * "now" in order to make builds that use the task create
 +     * reproducible results.
 +     *
 +     * <p>The value is expected to be in ISO time format
 +     * (<i>1972-04-17T08:07</i>)</p>
 +     *
 +     * Value: {@value}
 +     * @since Ant 1.10.2
 +     */
 +    public static final String TSTAMP_NOW_ISO = "ant.tstamp.now.iso";
 +
++    /**
+      * Magic property that can be set to override the java.io.tmpdir
+      * system property as the location for Ant's default temporary
+      * directory.
+      * Value: {@value}
 -     * @since Ant 1.9.15
++     * @since Ant 1.10.8
+      */
+     public static final String TMPDIR = "ant.tmpdir";
  }
  
diff --cc src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
index 4052340,290fe66..cff7ed8
--- a/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
+++ b/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
@@@ -351,10 -349,10 +351,10 @@@ public class FixCRLF extends MatchingTa
          if (fcv == null) {
              FilterChain fc = new FilterChain();
              fc.add(filter);
 -            fcv = new Vector<FilterChain>(1);
 +            fcv = new Vector<>(1);
              fcv.add(fc);
          }
-         File tmpFile = FILE_UTILS.createTempFile("fixcrlf", "", null, true, true);
+         File tmpFile = FILE_UTILS.createTempFile(getProject(), "fixcrlf", "", null, true, true);
          try {
              FILE_UTILS.copyFile(srcFile, tmpFile, null, fcv, true, false,
                  encoding, outputEncoding == null ? encoding : outputEncoding,
diff --cc src/main/org/apache/tools/ant/taskdefs/Javadoc.java
index bca0e0b,ce79c27..d768088
--- a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
@@@ -2047,9 -2062,10 +2047,9 @@@ public class Javadoc extends Task 
      private void writeExternalArgs(final Commandline toExecute) {
          // If using an external file, write the command line options to it
          File optionsTmpFile = null;
 -        BufferedWriter optionsListWriter = null;
          try {
              optionsTmpFile = FILE_UTILS.createTempFile(
-                 "javadocOptions", "", null, true, true);
+                 getProject(), "javadocOptions", "", null, true, true);
              final String[] listOpt = toExecute.getArguments();
              toExecute.clearArgs();
              toExecute.createArgument().setValue(
diff --cc src/main/org/apache/tools/ant/taskdefs/Jikes.java
index 7453933,7c1d62d..f428a4d
--- a/src/main/org/apache/tools/ant/taskdefs/Jikes.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Jikes.java
@@@ -78,12 -78,18 +78,12 @@@ public class Jikes 
          File tmpFile = null;
  
          try {
 -            String myos = System.getProperty("os.name");
 -
              // Windows has a 32k limit on total arg size, so
              // create a temporary file to store all the arguments
 -
 -            if (myos.toLowerCase(Locale.ENGLISH).contains("windows")
 -                && args.length > MAX_FILES_ON_COMMAND_LINE) {
 -                BufferedWriter out = null;
 -                try {
 -                    tmpFile = FileUtils.getFileUtils().createTempFile(project, "jikes",
 -                            "tmp", null, false, true);
 -                    out = new BufferedWriter(new FileWriter(tmpFile));
 +            if (Os.isFamily(Os.FAMILY_WINDOWS) && args.length > MAX_FILES_ON_COMMAND_LINE) {
-                 tmpFile = FileUtils.getFileUtils().createTempFile("jikes",
++                tmpFile = FileUtils.getFileUtils().createTempFile(project, "jikes",
 +                        "tmp", null, false, true);
 +                try (BufferedWriter out = new BufferedWriter(new FileWriter(tmpFile))) {
                      for (String arg : args) {
                          out.write(arg);
                          out.newLine();
diff --cc src/main/org/apache/tools/ant/taskdefs/Replace.java
index 05d4767,128933f..66cdef4
--- a/src/main/org/apache/tools/ant/taskdefs/Replace.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Replace.java
@@@ -649,22 -665,29 +649,22 @@@ public class Replace extends MatchingTa
          logFilterChain(src.getPath());
  
          try {
-             File temp = FILE_UTILS.createTempFile("rep", ".tmp",
+             File temp = FILE_UTILS.createTempFile(getProject(), "rep", ".tmp",
                      src.getParentFile(), false, true);
              try {
 -                FileInput in = new FileInput(src);
 -                try {
 -                    FileOutput out = new FileOutput(temp);
 -                    try {
 -                        out.setInputBuffer(buildFilterChain(in.getOutputBuffer()));
 -
 -                        while (in.readChunk()) {
 -                            if (processFilterChain()) {
 -                                out.process();
 -                            }
 +                try (FileInput in = new FileInput(src);
 +                     FileOutput out = new FileOutput(temp)) {
 +                    out.setInputBuffer(buildFilterChain(in.getOutputBuffer()));
 +
 +                    while (in.readChunk()) {
 +                        if (processFilterChain()) {
 +                            out.process();
                          }
 +                    }
  
 -                        flushFilterChain();
 +                    flushFilterChain();
  
 -                        out.flush();
 -                    } finally {
 -                        out.close();
 -                    }
 -                } finally {
 -                    in.close();
 +                    out.flush();
                  }
                  boolean changes = (replaceCount != repCountStart);
                  if (changes) {
diff --cc src/main/org/apache/tools/ant/taskdefs/Zip.java
index b545cb8,f9e7b11..9efae6d
--- a/src/main/org/apache/tools/ant/taskdefs/Zip.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Zip.java
@@@ -800,13 -819,19 +800,13 @@@ public class Zip extends MatchingTask 
      /** rename the zip file. */
      private File renameFile() {
          final File renamedFile = FILE_UTILS.createTempFile(
-             "zip", ".tmp", zipFile.getParentFile(), true, false);
+             getProject(), "zip", ".tmp", zipFile.getParentFile(), true, false);
          try {
              FILE_UTILS.rename(zipFile, renamedFile);
 -        } catch (final SecurityException e) {
 -            throw new BuildException(
 -                "Not allowed to rename old file ("
 -                + zipFile.getAbsolutePath()
 -                + ") to temporary file");
 -        } catch (final IOException e) {
 +        } catch (final SecurityException | IOException e) {
              throw new BuildException(
 -                "Unable to rename old file ("
 -                + zipFile.getAbsolutePath()
 -                + ") to temporary file");
 +                "Unable to rename old file (%s) to temporary file",
 +                zipFile.getAbsolutePath());
          }
          return renamedFile;
      }
diff --cc src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
index ec2d9d8,c028304..7b37a58
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
+++ b/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
@@@ -543,27 -553,24 +543,27 @@@ public abstract class DefaultCompilerAd
               */
              if (Commandline.toString(args).length() > COMMAND_LINE_LIMIT
                  && firstFileName >= 0) {
 -                BufferedWriter out = null;
                  try {
                      tmpFile = FILE_UTILS.createTempFile(
-                         "files", "", getJavac().getTempdir(), true, true);
+                         getProject(), "files", "", getJavac().getTempdir(), true, true);
 -                    out = new BufferedWriter(new FileWriter(tmpFile));
 -                    for (int i = firstFileName; i < args.length; i++) {
 -                        if (quoteFiles && args[i].contains(" ")) {
 -                            args[i] = args[i].replace(File.separatorChar, '/');
 -                            out.write("\"" + args[i] + "\"");
 -                        } else {
 -                            out.write(args[i]);
 +                    try (BufferedWriter out =
 +                        new BufferedWriter(new FileWriter(tmpFile))) {
 +                        for (int i = firstFileName; i < args.length; i++) {
 +                            if (quoteFiles && args[i].contains(" ")) {
 +                                args[i] =
 +                                    args[i].replace(File.separatorChar, '/');
 +                                out.write("\"" + args[i] + "\"");
 +                            } else {
 +                                out.write(args[i]);
 +                            }
 +                            out.newLine();
                          }
 -                        out.newLine();
 +                        out.flush();
 +                        commandArray = new String[firstFileName + 1];
 +                        System.arraycopy(args, 0, commandArray, 0,
 +                            firstFileName);
 +                        commandArray[firstFileName] = "@" + tmpFile;
                      }
 -                    out.flush();
 -                    commandArray = new String[firstFileName + 1];
 -                    System.arraycopy(args, 0, commandArray, 0, firstFileName);
 -                    commandArray[firstFileName] = "@" + tmpFile;
                  } catch (final IOException e) {
                      throw new BuildException("Error creating temporary file",
                                               e, location);
diff --cc src/main/org/apache/tools/ant/taskdefs/launcher/VmsCommandLauncher.java
index 6d93067,97f27c6..be5c44d
--- a/src/main/org/apache/tools/ant/taskdefs/launcher/VmsCommandLauncher.java
+++ b/src/main/org/apache/tools/ant/taskdefs/launcher/VmsCommandLauncher.java
@@@ -48,9 -52,8 +48,9 @@@ public class VmsCommandLauncher extend
      @Override
      public Process exec(Project project, String[] cmd, String[] env)
          throws IOException {
-         File cmdFile = createCommandFile(cmd, env);
+         File cmdFile = createCommandFile(project, cmd, env);
 -        Process p = super.exec(project, new String[] {cmdFile.getPath()}, env);
 +        Process p =
 +            super.exec(project, new String[] {cmdFile.getPath()}, env);
          deleteAfter(cmdFile, p);
          return p;
      }
@@@ -76,9 -79,8 +76,9 @@@
      @Override
      public Process exec(Project project, String[] cmd, String[] env,
                          File workingDir) throws IOException {
-         File cmdFile = createCommandFile(cmd, env);
+         File cmdFile = createCommandFile(project, cmd, env);
 -        Process p = super.exec(project, new String[] {cmdFile.getPath()}, env, workingDir);
 +        Process p = super.exec(project, new String[] {cmdFile.getPath()}, env,
 +            workingDir);
          deleteAfter(cmdFile, p);
          return p;
      }
@@@ -91,10 -93,12 +91,10 @@@
       * @return the command File.
       * @throws IOException if errors are encountered creating the file.
       */
-     private File createCommandFile(String[] cmd, String[] env)
+     private File createCommandFile(final Project project, String[] cmd, String[] env)
          throws IOException {
-         File script = FILE_UTILS.createTempFile("ANT", ".COM", null, true, true);
+         File script = FILE_UTILS.createTempFile(project, "ANT", ".COM", null, true, true);
 -        BufferedWriter out = null;
 -        try {
 -            out = new BufferedWriter(new FileWriter(script));
 +        try (BufferedWriter out = new BufferedWriter(new FileWriter(script))) {
  
              // add the environment as logicals to the DCL script
              if (env != null) {
diff --cc src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
index bddbdb4,270b5d4..7be3b28
--- a/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
@@@ -171,18 -177,23 +171,18 @@@ public class Cab extends MatchingTask 
       * @return the list file created.
       * @throws IOException if there is an error.
       */
 -    protected File createListFile(Vector files)
 +    protected File createListFile(Vector<String> files)
          throws IOException {
-         File listFile = FILE_UTILS.createTempFile("ant", "", null, true, true);
+         File listFile = FILE_UTILS.createTempFile(getProject(), "ant", "", null, true, true);
  
 -        BufferedWriter writer = null;
 -        try {
 -            writer = new BufferedWriter(new FileWriter(listFile));
 -
 -            final int size = files.size();
 -            for (int i = 0; i < size; i++) {
 -                writer.write('\"' + files.elementAt(i).toString() + '\"');
 +        try (BufferedWriter writer =
 +            new BufferedWriter(new FileWriter(listFile))) {
 +            for (String f : files) {
 +                String s = String.format("\"%s\"", f);
 +                writer.write(s);
                  writer.newLine();
              }
 -        } finally {
 -            FileUtils.close(writer);
          }
 -
          return listFile;
      }
  
diff --cc src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
index a0ce572,0bdc6e1..6fd7780
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
@@@ -1427,8 -1452,10 +1427,8 @@@ public class JUnitTask extends Task 
       * @return created file
       */
      private File createTempPropertiesFile(final String prefix) {
-         return FILE_UTILS.createTempFile(prefix, ".properties",
 -        final File propsFile =
 -            FILE_UTILS.createTempFile(getProject(), prefix, ".properties",
 -                tmpDir != null ? tmpDir : getProject().getBaseDir(), true, true);
 -        return propsFile;
++        return FILE_UTILS.createTempFile(getProject(), prefix, ".properties",
 +            tmpDir != null ? tmpDir : getProject().getBaseDir(), true, true);
      }
  
  
diff --cc src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java
index 7d559dc,306099c..93fe23b
--- a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java
+++ b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java
@@@ -441,29 -444,30 +441,29 @@@ public class ModifiedSelector extends B
              String filename = fileResource.getName();
              File basedir = fileResource.getBaseDir();
              return isSelected(basedir, filename, file);
 -        } else {
 -            try {
 -                // How to handle non-file-Resources? I copy temporarily the
 -                // resource to a file and use the file-implementation.
 -                FileUtils fu = FileUtils.getFileUtils();
 -                File tmpFile = fu.createTempFile(getProject(), "modified-", ".tmp", null, true, false);
 -                Resource tmpResource = new FileResource(tmpFile);
 -                ResourceUtils.copyResource(resource, tmpResource);
 -                boolean isSelected = isSelected(tmpFile.getParentFile(),
 -                                                tmpFile.getName(),
 -                                                resource.toLongString());
 -                tmpFile.delete();
 -                return isSelected;
 -            } catch (UnsupportedOperationException uoe) {
 -                log("The resource '"
 -                  + resource.getName()
 -                  + "' does not provide an InputStream, so it is not checked. "
 -                  + "According to 'selres' attribute value it is "
 -                  + ((selectResourcesWithoutInputStream) ? "" : " not")
 -                  + "selected.", Project.MSG_INFO);
 -                return selectResourcesWithoutInputStream;
 -            } catch (Exception e) {
 -                throw new BuildException(e);
 -            }
 +        }
 +        try {
 +            // How to handle non-file-Resources? I copy temporarily the
 +            // resource to a file and use the file-implementation.
 +            FileUtils fu = FileUtils.getFileUtils();
-             File tmpFile = fu.createTempFile("modified-", ".tmp", null, true, false);
++            File tmpFile = fu.createTempFile(getProject(), "modified-", ".tmp", null, true, false);
 +            Resource tmpResource = new FileResource(tmpFile);
 +            ResourceUtils.copyResource(resource, tmpResource);
 +            boolean isSelected = isSelected(tmpFile.getParentFile(),
 +                                            tmpFile.getName(),
 +                                            resource.toLongString());
 +            tmpFile.delete();
 +            return isSelected;
 +        } catch (UnsupportedOperationException uoe) {
 +            log("The resource '"
 +              + resource.getName()
 +              + "' does not provide an InputStream, so it is not checked. "
 +              + "According to 'selres' attribute value it is "
 +              + ((selectResourcesWithoutInputStream) ? "" : " not")
 +              + "selected.", Project.MSG_INFO);
 +            return selectResourcesWithoutInputStream;
 +        } catch (Exception e) {
 +            throw new BuildException(e);
          }
      }
  
diff --cc src/main/org/apache/tools/ant/util/FileUtils.java
index ad90bcb,0c932e9..565d69b
--- a/src/main/org/apache/tools/ant/util/FileUtils.java
+++ b/src/main/org/apache/tools/ant/util/FileUtils.java
@@@ -47,9 -41,9 +47,10 @@@ import java.util.Stack
  import java.util.StringTokenizer;
  import java.util.Vector;
  import java.util.jar.JarFile;
 +import java.util.stream.Collectors;
  
  import org.apache.tools.ant.BuildException;
+ import org.apache.tools.ant.MagicNames;
  import org.apache.tools.ant.PathTokenizer;
  import org.apache.tools.ant.Project;
  import org.apache.tools.ant.launch.Locator;
@@@ -934,13 -919,51 +929,52 @@@ public class FileUtils 
       *
       * @return a File reference to the new temporary file.
       * @since Ant 1.7.1
 -     * @deprecated since Ant 1.9.15 use createTempFile(Project, String, String, File,
++     * @deprecated since Ant 1.10.8 use createTempFile(Project, String, String, File,
+      * boolean, boolean) instead.
       */
++    @Deprecated
      public File createTempFile(String prefix, String suffix, File parentDir,
              boolean deleteOnExit, boolean createFile) {
+         return createTempFile(null, prefix, suffix, parentDir, deleteOnExit, createFile);
+     }
+ 
+     private static final String NULL_PLACEHOLDER = "null";
+ 
+     /**
+      * Create a temporary file in a given directory.
+      *
+      * <p>The file denoted by the returned abstract pathname did not
+      * exist before this method was invoked, any subsequent invocation
+      * of this method will yield a different file name.</p>
+      *
+      * @param project reference to the current Ant project.
+      * @param prefix file name prefix.
+      * @param suffix file extension; include the '.'.
+      * @param parentDir Directory to create the temporary file in;
+      *        if not specified and {@code project} is not null then the value
+      *        of the property {@code ant.tmpdir} is used if set;
+      *        otherwise {@code java.io.tmpdir} is used.
+      * @param deleteOnExit whether to set the tempfile for deletion on
+      *        normal VM exit.
+      * @param createFile true if the file must actually be created. If false
+      * chances exist that a file with the same name is created in the time
+      * between invoking this method and the moment the file is actually created.
+      * If possible set to true.
+      *
+      * @return a File reference to the new temporary file.
+      * @since Ant 1.9.15
+      */
+     public File createTempFile(final Project project, String prefix, String suffix,
+             final File parentDir, final boolean deleteOnExit, final boolean createFile) {
 -        File result = null;
 +        File result;
-         String parent = (parentDir == null)
-                 ? System.getProperty("java.io.tmpdir")
-                 : parentDir.getPath();
+         final String parent;
+         if (parentDir != null) {
+             parent = parentDir.getPath();
+         } else if (project != null && project.getProperty(MagicNames.TMPDIR) != null) {
+             parent = project.getProperty(MagicNames.TMPDIR);
+         } else {
+             parent = System.getProperty("java.io.tmpdir");
+         }
          if (prefix == null) {
              prefix = NULL_PLACEHOLDER;
          }
diff --cc src/main/org/apache/tools/ant/util/JavaEnvUtils.java
index fe5a024,060bb04..899c714
--- a/src/main/org/apache/tools/ant/util/JavaEnvUtils.java
+++ b/src/main/org/apache/tools/ant/util/JavaEnvUtils.java
@@@ -542,12 -577,16 +542,12 @@@ public final class JavaEnvUtils 
       */
      public static File createVmsJavaOptionFile(String[] cmds)
              throws IOException {
-         File script = FILE_UTILS.createTempFile("ANT", ".JAVA_OPTS", null, false, true);
+         File script = FILE_UTILS.createTempFile(null, "ANT", ".JAVA_OPTS", null, false, true);
 -        BufferedWriter out = null;
 -        try {
 -            out = new BufferedWriter(new FileWriter(script));
 -            for (int i = 0; i < cmds.length; i++) {
 -                out.write(cmds[i]);
 +        try (BufferedWriter out = new BufferedWriter(new FileWriter(script))) {
 +            for (String cmd : cmds) {
 +                out.write(cmd);
                  out.newLine();
              }
 -        } finally {
 -            FileUtils.close(out);
          }
          return script;
      }
diff --cc src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java
index 5f68b80,9877e71..fc58456
--- a/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java
+++ b/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java
@@@ -21,31 -21,18 +21,32 @@@ package org.apache.tools.ant.util
  import java.io.File;
  import java.io.FileOutputStream;
  import java.io.IOException;
 +import java.nio.file.Files;
 +import java.nio.file.Path;
 +import java.nio.file.Paths;
 +import java.util.Locale;
 +import java.util.Optional;
  
  import org.apache.tools.ant.BuildException;
 +import org.apache.tools.ant.MagicTestNames;
+ import org.apache.tools.ant.Project;
  import org.apache.tools.ant.taskdefs.condition.Os;
 -import org.junit.After;
  import org.junit.Before;
 +import org.junit.Rule;
  import org.junit.Test;
 -
 +import org.junit.rules.ExpectedException;
 +import org.junit.rules.TemporaryFolder;
 +
 +import static org.apache.tools.ant.util.FileUtils.getFileUtils;
 +import static org.apache.tools.ant.util.FileUtils.isCaseSensitiveFileSystem;
 +import static org.apache.tools.ant.util.FileUtils.isContextRelativePath;
 +import static org.hamcrest.Matchers.endsWith;
 +import static org.hamcrest.Matchers.startsWith;
  import static org.junit.Assert.assertEquals;
  import static org.junit.Assert.assertFalse;
 +import static org.junit.Assert.assertNotEquals;
 +import static org.junit.Assert.assertThat;
  import static org.junit.Assert.assertTrue;
 -import static org.junit.Assert.fail;
  import static org.junit.Assume.assumeFalse;
  import static org.junit.Assume.assumeTrue;
  
@@@ -354,47 -342,89 +355,86 @@@ public class FileUtilsTest 
       * Test createTempFile
       */
      @Test
 -    public void testCreateTempFile() {
 +    public void testCreateTempFile() throws IOException {
-         // null parent dir
-         File tmp1 = getFileUtils().createTempFile("pre", ".suf", null, false, true);
-         String tmploc = System.getProperty("java.io.tmpdir");
+         final String tmploc = System.getProperty("java.io.tmpdir");
+         final Project projectWithoutTempDir = new Project();
+         final Project projectWithTempDir = new Project();
 -        final File projectTmpDir = new File(tmploc, "subdir");
 -        projectTmpDir.mkdir();
 -        removeThis = projectTmpDir;
++        final File projectTmpDir = folder.newFolder("subdir");
+         projectWithTempDir.setProperty("ant.tmpdir", projectTmpDir.getAbsolutePath());
+ 
+         // null parent dir, null project
 -        File tmp1 = FILE_UTILS.createTempFile(null, "pre", ".suf", null, false, true);
++        File tmp1 = getFileUtils().createTempFile(null, "pre", ".suf", null, false, true);
          String name = tmp1.getName();
 -        assertTrue("starts with pre", name.startsWith("pre"));
 -        assertTrue("ends with .suf", name.endsWith(".suf"));
 +        assertThat("starts with pre", name, startsWith("pre"));
 +        assertThat("ends with .suf", name, endsWith(".suf"));
          assertTrue("File was created", tmp1.exists());
 -        assertEquals((new File(tmploc, tmp1.getName())).getAbsolutePath(), tmp1
 -                .getAbsolutePath());
 +        assertEquals((new File(tmploc, tmp1.getName())).getAbsolutePath(),
 +                tmp1.getAbsolutePath());
          tmp1.delete();
  
+         // null parent dir, project without magic property
 -        tmp1 = FILE_UTILS.createTempFile(projectWithoutTempDir, "pre", ".suf", null, false, true);
++        tmp1 = getFileUtils().createTempFile(projectWithoutTempDir, "pre", ".suf", null, false, true);
+         name = tmp1.getName();
+         assertTrue("starts with pre", name.startsWith("pre"));
+         assertTrue("ends with .suf", name.endsWith(".suf"));
+         assertTrue("File was created", tmp1.exists());
+         assertEquals((new File(tmploc, tmp1.getName())).getAbsolutePath(), tmp1
+                 .getAbsolutePath());
+         tmp1.delete();
+ 
+         // null parent dir, project with magic property
 -        tmp1 = FILE_UTILS.createTempFile(projectWithTempDir, "pre", ".suf", null, false, true);
++        tmp1 = getFileUtils().createTempFile(projectWithTempDir, "pre", ".suf", null, false, true);
+         name = tmp1.getName();
+         assertTrue("starts with pre", name.startsWith("pre"));
+         assertTrue("ends with .suf", name.endsWith(".suf"));
+         assertTrue("File was created", tmp1.exists());
+         assertEquals((new File(projectTmpDir, tmp1.getName())).getAbsolutePath(), tmp1
+                 .getAbsolutePath());
+         tmp1.delete();
+ 
 -        File dir2 = new File(tmploc + "/ant-test");
 -        dir2.mkdir();
 +        File dir2 = folder.newFolder("ant-test");
  
-         File tmp2 = getFileUtils().createTempFile("pre", ".suf", dir2, true, true);
 -        File tmp2 = FILE_UTILS.createTempFile(null, "pre", ".suf", dir2, true, true);
++        File tmp2 = getFileUtils().createTempFile(null, "pre", ".suf", dir2, true, true);
          String name2 = tmp2.getName();
 -        assertTrue("starts with pre", name2.startsWith("pre"));
 -        assertTrue("ends with .suf", name2.endsWith(".suf"));
 +        assertThat("starts with pre", name2, startsWith("pre"));
 +        assertThat("ends with .suf", name2, endsWith(".suf"));
          assertTrue("File was created", tmp2.exists());
 -        assertEquals((new File(dir2, tmp2.getName())).getAbsolutePath(), tmp2
 -                .getAbsolutePath());
 +        assertEquals((new File(dir2, tmp2.getName())).getAbsolutePath(),
 +                tmp2.getAbsolutePath());
          tmp2.delete();
  
 -        tmp2 = FILE_UTILS.createTempFile(projectWithoutTempDir, "pre", ".suf", dir2, true, true);
++        tmp2 = getFileUtils().createTempFile(projectWithoutTempDir, "pre", ".suf", dir2, true, true);
+         name2 = tmp2.getName();
+         assertTrue("starts with pre", name2.startsWith("pre"));
+         assertTrue("ends with .suf", name2.endsWith(".suf"));
+         assertTrue("File was created", tmp2.exists());
+         assertEquals((new File(dir2, tmp2.getName())).getAbsolutePath(), tmp2
+                 .getAbsolutePath());
+         tmp2.delete();
+ 
 -        tmp2 = FILE_UTILS.createTempFile(projectWithTempDir, "pre", ".suf", dir2, true, true);
++        tmp2 = getFileUtils().createTempFile(projectWithTempDir, "pre", ".suf", dir2, true, true);
+         name2 = tmp2.getName();
+         assertTrue("starts with pre", name2.startsWith("pre"));
+         assertTrue("ends with .suf", name2.endsWith(".suf"));
+         assertTrue("File was created", tmp2.exists());
+         assertEquals((new File(dir2, tmp2.getName())).getAbsolutePath(), tmp2
+                 .getAbsolutePath());
+         tmp2.delete();
+         dir2.delete();
+ 
          File parent = new File((new File("/tmp")).getAbsolutePath());
 -        tmp1 = FILE_UTILS.createTempFile("pre", ".suf", parent, false);
 -        assertTrue("new file", !tmp1.exists());
 +        tmp1 = getFileUtils().createTempFile("pre", ".suf", parent, false);
 +        assertFalse("new file", tmp1.exists());
  
          name = tmp1.getName();
 -        assertTrue("starts with pre", name.startsWith("pre"));
 -        assertTrue("ends with .suf", name.endsWith(".suf"));
 +        assertThat("starts with pre", name, startsWith("pre"));
 +        assertThat("ends with .suf", name, endsWith(".suf"));
          assertEquals("is inside parent dir", parent.getAbsolutePath(), tmp1
                  .getParent());
  
 -        tmp2 = FILE_UTILS.createTempFile("pre", ".suf", parent, false);
 +        tmp2 = getFileUtils().createTempFile("pre", ".suf", parent, false);
-         assertNotEquals("files are different", tmp1.getAbsolutePath(), tmp2.getAbsolutePath());
- 
-         // null parent dir
-         File tmp3 = getFileUtils().createTempFile("pre", ".suf", null, false);
-         tmploc = System.getProperty("java.io.tmpdir");
-         assertEquals((new File(tmploc, tmp3.getName())).getAbsolutePath(),
-                 tmp3.getAbsolutePath());
+         assertTrue("files are different", !tmp1.getAbsolutePath().equals(
+                 tmp2.getAbsolutePath()));
      }
  
      /**


[ant] 02/03: make junitlauncher use ant.tmpdir as well

Posted by bo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bodewig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ant.git

commit 041b058c7bf10a94d56db3ca9dba38cf90ab9943
Author: Stefan Bodewig <bo...@apache.org>
AuthorDate: Tue May 5 15:01:39 2020 +0200

    make junitlauncher use ant.tmpdir as well
---
 manual/Tasks/junitlauncher.html                                |  4 ++++
 .../optional/junitlauncher/AbstractJUnitResultFormatter.java   | 10 ++++++----
 .../optional/junitlauncher/confined/JUnitLauncherTask.java     |  4 ++--
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/manual/Tasks/junitlauncher.html b/manual/Tasks/junitlauncher.html
index 25d9fcc..ec14e03 100644
--- a/manual/Tasks/junitlauncher.html
+++ b/manual/Tasks/junitlauncher.html
@@ -43,6 +43,10 @@
     case is nor does it execute the tests itself.
 </p>
 <p>
+    This task captures testoutput and configuration data inside of
+    the <a href="../running.html#tmpdir">temporary directory</a>.
+</p>
+<p>
     <strong>Note</strong>: This task depends on external libraries not included in the Apache Ant
     distribution. See <a href="../install.html#librarydependencies">Library Dependencies</a> for
     more information.
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/AbstractJUnitResultFormatter.java b/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/AbstractJUnitResultFormatter.java
index dc9847d..22a11e0 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/AbstractJUnitResultFormatter.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/AbstractJUnitResultFormatter.java
@@ -53,7 +53,7 @@ abstract class AbstractJUnitResultFormatter implements TestResultFormatter {
     @Override
     public void sysOutAvailable(final byte[] data) {
         if (this.sysOutStore == null) {
-            this.sysOutStore = new SysOutErrContentStore(true);
+            this.sysOutStore = new SysOutErrContentStore(context, true);
         }
         try {
             this.sysOutStore.store(data);
@@ -65,7 +65,7 @@ abstract class AbstractJUnitResultFormatter implements TestResultFormatter {
     @Override
     public void sysErrAvailable(final byte[] data) {
         if (this.sysErrStore == null) {
-            this.sysErrStore = new SysOutErrContentStore(false);
+            this.sysErrStore = new SysOutErrContentStore(context, false);
         }
         try {
             this.sysErrStore.store(data);
@@ -212,13 +212,15 @@ abstract class AbstractJUnitResultFormatter implements TestResultFormatter {
             }
         };
 
+        private final TestExecutionContext context;
         private final String tmpFileSuffix;
         private ByteBuffer inMemoryStore = ByteBuffer.allocate(DEFAULT_CAPACITY_IN_BYTES);
         private boolean usingFileStore = false;
         private Path filePath;
         private FileOutputStream fileOutputStream;
 
-        private SysOutErrContentStore(final boolean isSysOut) {
+        private SysOutErrContentStore(final TestExecutionContext context, final boolean isSysOut) {
+            this.context = context;
             this.tmpFileSuffix = isSysOut ? ".sysout" : ".syserr";
         }
 
@@ -261,7 +263,7 @@ abstract class AbstractJUnitResultFormatter implements TestResultFormatter {
 
         private FileOutputStream createFileStore() throws IOException {
             this.filePath = FileUtils.getFileUtils()
-                .createTempFile(null, this.tmpFileSuffix, null, true, true)
+                .createTempFile(context.getProject().orElse(null), null, this.tmpFileSuffix, null, true, true)
                 .toPath();
             return new FileOutputStream(this.filePath.toFile());
         }
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/confined/JUnitLauncherTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/confined/JUnitLauncherTask.java
index 0d16ed0..fa28844 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/confined/JUnitLauncherTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/confined/JUnitLauncherTask.java
@@ -226,7 +226,7 @@ public class JUnitLauncherTask extends Task {
 
     private java.nio.file.Path dumpProjectProperties() throws IOException {
         final java.nio.file.Path propsPath = FileUtils.getFileUtils()
-            .createTempFile(null, "properties", null, true, true)
+            .createTempFile(getProject(), null, "properties", null, true, true)
             .toPath();
         final Hashtable<String, Object> props = this.getProject().getProperties();
         final Properties projProperties = new Properties();
@@ -367,7 +367,7 @@ public class JUnitLauncherTask extends Task {
 
     private java.nio.file.Path newLaunchDefinitionXml() {
         return FileUtils.getFileUtils()
-            .createTempFile(null, ".xml", null, true, true)
+            .createTempFile(getProject(), null, ".xml", null, true, true)
             .toPath();
     }