(the web is no longer frame-friendly…)master
@@ -30,25 +30,24 @@ by | |||
<hr/> | |||
<p>You can download the plugin | |||
at: <a href="http://sourceforge.net/projects/jext/files/OldFiles/antwork_plugin.zip/download">http://sourceforge.net/projects/jext/files/OldFiles/antwork_plugin.zip/download</a></p> | |||
at: <a href="http://sourceforge.net/projects/jext/files/OldFiles/antwork_plugin.zip/download" | |||
target="_top">http://sourceforge.net/projects/jext/files/OldFiles/antwork_plugin.zip/download</a></p> | |||
<h2>Installation instructions from the Readme.txt</h2> | |||
<p>You have to enable the Jext Console to see the Apache Ant output (menu: | |||
Edit→Options…–General Panel), because Ant messages are | |||
redirected to the Jext console.</p> | |||
Edit→Options…–General Panel), because Ant messages are redirected to the Jext | |||
console.</p> | |||
<p>You can configure the Ant call in the Jext menu: Edit→Options…– | |||
Plugin Options–Antwork Plugin Panel; here you can set Ant home | |||
directory and the path to your build file.</p> | |||
<p>You can configure the Ant call in the Jext menu: Edit→Options…– Plugin | |||
Options–Antwork Plugin Panel; here you can set Ant home directory and the path to your build | |||
file.</p> | |||
<p>You can start AntWork in the menu: Plugins→Ant→Work Now! In the | |||
appearing dialog box you can enter the target which you want to | |||
compile.</p> | |||
<p>You can start AntWork in the menu: Plugins→Ant→Work Now! In the appearing dialog box | |||
you can enter the target which you want to compile.</p> | |||
<p>If a <code>javac</code> error occurs in the Ant run, an error list opens within | |||
Jext. With a double click on the error message you jump to the error | |||
in the specified Java source file.</p> | |||
<p>If a <code>javac</code> error occurs in the Ant run, an error list opens within Jext. With a | |||
double click on the error message you jump to the error in the specified Java source file.</p> | |||
</body> | |||
</html> |
@@ -36,8 +36,8 @@ Deployment Descriptor, builds the jar file including the support files and verif | |||
produced jar is valid or not.</p> | |||
<p>Benoit Moussaud maintains a | |||
separate <a href="https://web.archive.org/web/20141122083215/http://www.moussaud.org/ejbjar.html">FAQ</a> | |||
for this task at his homepage.</p> | |||
separate <a href="https://web.archive.org/web/20141122083215/http://www.moussaud.org/ejbjar.html" | |||
target="_top">FAQ</a> for this task at his homepage.</p> | |||
<h3>Borland element</h3> | |||
<table class="attr"> | |||
@@ -31,7 +31,8 @@ the <a href="../Tasks/jar.html">jar</a> or <a href="../Tasks/zip.html">zip</a> t | |||
will work on Windows using the external <code>cabarc</code> 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/">https://www.freshports.org/archivers/libcabinet/</a>.</p> | |||
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 | |||
@@ -28,12 +28,12 @@ | |||
<h3>Description</h3> | |||
<p>Generates an XML-formatted report file of the change logs recorded in | |||
a <a href="https://www.nongnu.org/cvs/" target="_top">CVS</a> repository.</p> | |||
<p><strong>Important</strong>: This task needs <code>cvs</code> on the path. If it isn't, you will get | |||
an error (such as error <code>2</code> on Windows). If <code><cvs></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, 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><strong>Important</strong>: This task needs <code>cvs</code> on the path. If it isn't, you will | |||
get an error (such as <code>error=2</code> on Windows). If <code><cvs></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, 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> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
<tr> | |||
@@ -31,19 +31,19 @@ | |||
<p>Note that many popular message digest functions—including MD5 and SHA-1—have been | |||
broken recently. If you are going to use the task to create checksums used in an environment where | |||
security is important, please take some time to investigate the algorithms offered by your JCE | |||
provider. Note also that some JCE providers like the one | |||
by <a href="https://www.bouncycastle.org/">The Legion of the Bouncy Castle</a>, | |||
the <a href="https://www.gnu.org/software/gnu-crypto/">GNU project</a> | |||
or <a href="https://jce.iaik.tugraz.at/sic/Products">the Technical University Graz</a> offer more | |||
digest algorithms than those built-in into your JDK.</p> | |||
provider. Note also that some JCE providers like the one by <a href="https://www.bouncycastle.org/" | |||
target="_top">The Legion of the Bouncy Castle</a>, | |||
the <a href="https://www.gnu.org/software/gnu-crypto/" target="_top">GNU project</a> | |||
or <a href="https://jce.iaik.tugraz.at/sic/Products" target="_top">the Technical University Graz</a> | |||
offer more digest algorithms than those built-in into your JDK.</p> | |||
<p>Warning: the case of the extension is that of the algorithm used. If you ask | |||
for <samp>SHA1</samp>, you get a <samp>.SHA1</samp> extension; if you ask for <samp>sha1</samp>, you | |||
get a file ending in <samp>.sha1</samp>. The Java Crypto Engines are case-insensitive in matching | |||
algorithms, so choose a name to match your desired output extension, or set the <var>fileext</var> | |||
attribute. The names of common hashing algorithms can be located on the <a target="_blank" | |||
href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest">Cryptography | |||
Architecture Standard Algorithm Name Documentation</a></p> | |||
attribute. The names of common hashing algorithms can be located on | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest" | |||
target="_top">Cryptography Architecture Standard Algorithm Name Documentation</a></p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -66,10 +66,10 @@ Architecture Standard Algorithm Name Documentation</a></p> | |||
</tr> | |||
<tr> | |||
<td>algorithm</td> | |||
<td>Specifies the algorithm to be used to compute the checksum. Please check the | |||
<a target="_blank" | |||
href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest">documentation</a> | |||
for available algorithm names, like <q>SHA-1</q> or <q>SHA-512</q>. | |||
<td>Specifies the algorithm to be used to compute the checksum. Please check | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest" | |||
target="_top">documentation</a> for available algorithm names, like <q>SHA-1</q> | |||
or <q>SHA-512</q>. | |||
</td> | |||
<td>No; defaults to <q>MD5</q></td> | |||
</tr> | |||
@@ -101,12 +101,12 @@ Architecture Standard Algorithm Name Documentation</a></p> | |||
<tr> | |||
<td>pattern</td> | |||
<td>Specifies the pattern to use as a pattern suitable | |||
for <a href="https://docs.oracle.com/javase/8/docs/api/java/text/MessageFormat.html">MessageFormat</a> | |||
where <code>{0}</code> is replaced with the checksum and <code>{1}</code> with the file | |||
name. <em>Since Ant 1.7.0</em><br/><em>Since Ant 1.8.2</em> <code>{2}</code> is replaced by the | |||
path of the file relative to the checksum file being written, <code>{3}</code> with tha path of | |||
the file relative to the project's <var>basedir</var> and <code>{4}</code> with the absolute | |||
path of the file.</td> | |||
for <a href="https://docs.oracle.com/javase/8/docs/api/java/text/MessageFormat.html" | |||
target="_top">MessageFormat</a> where <code>{0}</code> is replaced with the checksum | |||
and <code>{1}</code> with the file name. <em>Since Ant 1.7.0</em><br/><em>Since Ant | |||
1.8.2</em> <code>{2}</code> is replaced by the path of the file relative to the checksum file | |||
being written, <code>{3}</code> with the path of the file relative to the | |||
project's <var>basedir</var> and <code>{4}</code> with the absolute path of the file.</td> | |||
<td>No; default is <q>{0}</q></td> | |||
</tr> | |||
<tr> | |||
@@ -81,8 +81,8 @@ | |||
<tr> | |||
<td>encoding</td> | |||
<td>Specifies the encoding for the input files. Please | |||
see <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html">Supported | |||
Encodings</a> for a list of possible values.</td> | |||
see <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html" | |||
target="_top">Supported Encodings</a> for a list of possible values.</td> | |||
<td>No; defaults to default JVM character encoding</td> | |||
</tr> | |||
<tr> | |||
@@ -28,7 +28,7 @@ | |||
<p>Conditions are nested elements of the <a href="condition.html"><code><condition></code></a> | |||
and <a href="waitfor.html"><code><waitfor></code></a> tasks. There are core conditions and | |||
custom conditions. Custom conditions are described | |||
in <a href="../Types/custom-programming.html#customconditions"> Custom Conditions</a>. Core | |||
in <a href="../Types/custom-programming.html#customconditions">Custom Conditions</a>. Core | |||
Conditions are described below.</p> | |||
<h3 id="coreconditions">Core Conditions</h3> | |||
@@ -440,8 +440,8 @@ include tasks, datatypes, scriptdefs, macrodefs and presetdefs.</p> | |||
<p>Evaluate a condition based on a script in any <a href="https://jakarta.apache.org/bsf" | |||
target="_top">Apache BSF</a> | |||
or <a href="https://jcp.org/aboutJava/communityprocess/maintenance/jsr223/223ChangeLog.html">JSR | |||
223</a> supported language.</p> | |||
or <a href="https://jcp.org/aboutJava/communityprocess/maintenance/jsr223/223ChangeLog.html" | |||
target="_top">JSR 223</a> supported language.</p> | |||
<p>See the <a href="../Tasks/script.html">Script</a> task for an explanation of scripts and | |||
dependencies.</p> | |||
@@ -29,7 +29,7 @@ | |||
<p>Handles packages/modules retrieved from a <a href="https://www.nongnu.org/cvs/" | |||
target="_top">CVS</a> repository.</p> | |||
<p><strong>Important:</strong> This task needs <code>cvs</code> binary on the path. If it isn't, you | |||
will get an error (such as error <code>2</code> on Windows). If <code><cvs></code> doesn't | |||
will get an error (such as <code>error=2</code> on Windows). If <code><cvs></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, this is not completely true for certain other CVS clients—like CVSNT for | |||
@@ -38,8 +38,8 @@ example—and some operation may fail when using such an incompatible client | |||
<p><strong>CVSNT Note</strong>: CVSNT prefers users to store the passwords inside the registry. If | |||
the <a href="cvspass.html">cvspass task</a> and the <var>passfile</var> attribute don't seem to work | |||
for you, the most likely reason is that CVSNT ignores your <samp>.cvspass</samp> file completely. | |||
See <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=21657#c5">bugzilla report 21657</a> | |||
for recommended workarounds.</p> | |||
See <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=21657#c5" target="_top">bugzilla | |||
report 21657</a> for recommended workarounds.</p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -32,8 +32,8 @@ a <code>cvs login</code> command.</p> | |||
<p><strong>CVSNT Note</strong>: CVSNT prefers users to store the passwords inside the registry. If | |||
the task doesn't seem to work for you, the most likely reason is that CVSNT ignores | |||
your <samp>.cvspass</samp> file | |||
completely. See <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=21657#c5">bugzilla | |||
report 21657</a> for recommended workarounds.</p> | |||
completely. See <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=21657#c5" | |||
target="_top">bugzilla report 21657</a> for recommended workarounds.</p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -26,7 +26,7 @@ | |||
<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 <code>cvs</code> on the path. If it isn't, you will | |||
get an error (such as error <code>2</code> on Windows). If <code><cvs></code> doesn't work, | |||
get an error (such as <code>error=2</code> on Windows). If <code><cvs></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, this is not completely true for certain other CVS clients—like CVSNT for | |||
@@ -84,12 +84,12 @@ normal behavior</p> | |||
<h3>Notes</h3> | |||
<p>By default the pattern <samp>**/.svn</samp> and <samp>**/.svn/**</samp> are set as default | |||
excludes. Since version 1.3, Subversion supports the <a target="_blank" | |||
href="https://subversion.apache.org/docs/release-notes/1.3.html#_svn-hack">"_svn | |||
hack"</a>. That means, that the svn-libraries evaluate environment variables and | |||
use <samp>.svn</samp> or <samp>_svn</samp> directory regarding to that value. We had chosen not to | |||
evaluate environment variables to get a more reliable build. Instead you have to change the settings | |||
by yourself by changing the exclude patterns:</p> | |||
excludes. Since version 1.3, Subversion supports | |||
the <a href="https://subversion.apache.org/docs/release-notes/1.3.html#_svn-hack" | |||
target="_top">"_svn hack"</a>. That means, that the svn-libraries evaluate environment | |||
variables and use <samp>.svn</samp> or <samp>_svn</samp> directory regarding to that value. We had | |||
chosen not to evaluate environment variables to get a more reliable build. Instead you have to | |||
change the settings by yourself by changing the exclude patterns:</p> | |||
<pre> | |||
<defaultexcludes remove="**/.svn"/> | |||
<defaultexcludes remove="**/.svn/**"/> | |||
@@ -124,7 +124,7 @@ nested <code><fileset></code>.</p> | |||
<tr> | |||
<td>defaultexcludes</td> | |||
<td><em><u>Deprecated</u></em>. Use resource collections. Whether to | |||
use <a href="../dirtasks.html#defaultexcludes"> default excludes.</a></td> | |||
use <a href="../dirtasks.html#defaultexcludes">default excludes.</a></td> | |||
<td>No; default <q>true</q></td> | |||
</tr> | |||
<tr> | |||
@@ -40,7 +40,8 @@ class references encoded into the class files by the compiler. This is generally | |||
the Java source files.</p> | |||
<p>To learn more about how this information is obtained from the class files, please refer | |||
to <a href="https://docs.oracle.com/javase/specs/">the Java Virtual Machine Specification</a></p> | |||
to <a href="https://docs.oracle.com/javase/specs/" target="_top">the Java Virtual Machine | |||
Specification</a></p> | |||
<p>Since a class' dependencies only change when the class itself changes, the | |||
<code>depend</code> task is able to cache dependency information. Only those class files which have | |||
@@ -122,10 +122,10 @@ attribute to a value other than its default, <q>add</q>.</strong></p> | |||
<tr> | |||
<td>filesetmanifest</td> | |||
<td>behavior when a manifest file is found in a <code>zipfileset</code> | |||
or <code>zipgroupfileset</code> file. Valid values are <q>skip</q>, <q>merge</q>, | |||
and <q>mergewithoutmain</q>. <q>merge</q> will merge all of the manifests together, and merge | |||
this into any other specified manifests. <q>mergewithoutmain</q> merges everything but the Main | |||
section of the manifests.</td> | |||
or <code>zipgroupfileset</code> file. Valid values are <q>skip</q>, <q>merge</q>, | |||
and <q>mergewithoutmain</q>. <q>merge</q> will merge all of the manifests together, and merge | |||
this into any other specified manifests. <q>mergewithoutmain</q> merges everything but the | |||
Main section of the manifests.</td> | |||
<td>No; defaults to <q>skip</q></td> | |||
</tr> | |||
<tr> | |||
@@ -142,10 +142,11 @@ attribute to a value other than its default, <q>add</q>.</strong></p> | |||
<tr> | |||
<td>index</td> | |||
<td>whether to create | |||
an <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#JAR_Index">index | |||
list</a> to speed up classloading. This is a JDK 1.3+ specific feature. Unless you specify | |||
additional jars with nested <a href="jar.html#indexjars"><code>indexjars</code></a> elements, | |||
only the contents of this jar will be included in the index.</td> | |||
an <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#JAR_Index" | |||
target="_top">index list</a> to speed up classloading. This is a JDK 1.3+ specific feature. | |||
Unless you specify additional jars with | |||
nested <a href="jar.html#indexjars"><code>indexjars</code></a> elements, only the contents of | |||
this jar will be included in the index.</td> | |||
<td>No; defaults to <q>false</q></td> | |||
</tr> | |||
<tr> | |||
@@ -153,9 +154,10 @@ attribute to a value other than its default, <q>add</q>.</strong></p> | |||
<td>whether to include <samp>META-INF</samp> and its children in the index. Doesn't have any | |||
effect if <var>index</var> is false.<br/>Oracle's jar implementation used to skip | |||
the <samp>META-INF</samp> directory and Ant followed that example. The behavior has been | |||
changed with <a href="https://bugs.openjdk.java.net/browse/JDK-4408526">Java 5</a>. In order | |||
to avoid problems with Ant generated jars on Java 1.4 or earlier, Ant will not | |||
include <samp>META-INF</samp> unless explicitly asked to.<br/><em>Since Ant 1.8.0</em>.</td> | |||
changed with <a href="https://bugs.openjdk.java.net/browse/JDK-4408526" target="_top">Java | |||
5</a>. In order to avoid problems with Ant generated jars on Java 1.4 or earlier, Ant will | |||
not include <samp>META-INF</samp> unless explicitly asked to.<br/><em>Since Ant | |||
1.8.0</em>.</td> | |||
<td>No; defaults to <q>false</q></td> | |||
</tr> | |||
<tr> | |||
@@ -59,7 +59,7 @@ file is available, and the <var>level</var> option is ignored</p> | |||
<td>append</td> | |||
<td>Append to an existing file | |||
(or <a href="https://docs.oracle.com/javase/8/docs/api//java/io/FileWriter.html#FileWriter-java.lang.String-boolean-" | |||
target="_blank"> open a new file / overwrite an existing file</a>)? | |||
target="_top"> open a new file / overwrite an existing file</a>)? | |||
</td> | |||
<td>No; ignored unless <var>output</var> indicates a filesystem destination, default | |||
is <q>false</q></td> | |||
@@ -96,8 +96,8 @@ three lines; the first line is a blank | |||
</echo></pre> | |||
<p>The newline immediately following the <code><echo></code> tag will be part of the | |||
output. Newlines in character data within the content of an element are not discarded by XML | |||
parsers.<br/>See <a href="https://www.w3.org/TR/xml/#sec-line-ends">W3C Recommendation 26 November | |||
2008 / End of Line handling</a> for more details.</p> | |||
parsers.<br/>See <a href="https://www.w3.org/TR/xml/#sec-line-ends" target="_top">W3C Recommendation | |||
26 November 2008 / End of Line handling</a> for more details.</p> | |||
<pre><echo message="Deleting drive C:" level="debug"/></pre> | |||
<p>A message which only appears in <code>-debug</code> mode.</p> | |||
@@ -56,13 +56,15 @@ Server.</p> | |||
<p>The tasks support:</p> | |||
<ul> | |||
<li><a href="http://www.borland.com">Borland</a>Application Server 4.5</li> | |||
<li><a href="https://web.archive.org/web/20020202082841/http://www.iplanet.com:80/products/iplanet_application/home_ias.html">iPlanet</a>Application Server 6.0</li> | |||
<li><a href="http://www.borland.com" target="_top">Borland</a>Application Server 4.5</li> | |||
<li><a href="https://web.archive.org/web/20020202082841/http://www.iplanet.com:80/products/iplanet_application/home_ias.html" | |||
target="_top">iPlanet</a> Application Server 6.0</li> | |||
<li><a href="https://www.jboss.org/" target="_top">JBoss 2.1</a> and above EJB servers</li> | |||
<li><a href="https://web.archive.org/web/20080516210506/http://www.ironflare.com/">Orion Application Server</a> 2.0 (<em>since Ant 1.10.2</em>)</li> | |||
<li><a href="https://web.archive.org/web/20080516210506/http://www.ironflare.com/" | |||
target="_top">Orion Application Server</a> 2.0 (<em>since Ant 1.10.2</em>)</li> | |||
<li><a href="http://www.bea.com" target="_top">WebLogic</a> 4.5.1 through to 7.0 EJB servers</li> | |||
<li><a href="https://jonas.ow2.org/" target="_top">JOnAS</a> 2.4.x and 2.5 Open Source EJB server</li> | |||
<li><a href="https://www.ibm.com/websphere">IBM WebSphere</a> 4.0</li> | |||
<li><a href="https://www.ibm.com/websphere" target="_top">IBM WebSphere</a> 4.0</li> | |||
</ul> | |||
<p>Vendors such as BEA and IBM now provide custom Ant tasks to work with their particular | |||
products. More importantly, EJB 3.0 renders this whole process obsolete. Accordingly, development | |||
@@ -74,16 +76,20 @@ applications and definitely not new EJB 2.x servers.</p> | |||
<h2 id="ejbtasks">EJB Tasks</h2> | |||
<table> | |||
<tr><th>Task</th><th colspan="2">Application Servers</th></tr> | |||
<tr><td><a href="BorlandGenerateClient.html">blgenclient</a></td><td colspan="2">Borland Application Server 4.5 and 5.x</td></tr> | |||
<tr><td><a href="#iplanet-ejbc">iplanet-ejbc</a></td><td colspan="2">iPlanet Application Server 6.0</td></tr> | |||
<tr><td><a href="BorlandGenerateClient.html">blgenclient</a></td><td colspan="2">Borland | |||
Application Server 4.5 and 5.x</td></tr> | |||
<tr><td><a href="#iplanet-ejbc">iplanet-ejbc</a></td><td colspan="2">iPlanet Application Server | |||
6.0</td></tr> | |||
<tr><td rowspan="8"><a href="#ejbjar">ejbjar</a></td><th colspan="2">Nested Elements</th></tr> | |||
<tr><td><a href="BorlandEJBTasks.html">borland</a></td><td>Borland Application Server 4.5 and 5.x</td></tr> | |||
<tr><td><a href="BorlandEJBTasks.html">borland</a></td><td>Borland Application Server 4.5 and | |||
5.x</td></tr> | |||
<tr><td><a href="#ejbjar_iplanet">iPlanet</a></td><td>iPlanet Application Server 6.0</td></tr> | |||
<tr><td><a href="#ejbjar_jboss">jboss</a></td><td>JBoss</td></tr> | |||
<tr><td><a href="#ejbjar_jonas">jonas</a></td><td>JOnAS 2.4.x and 2.5</td></tr> | |||
<tr><td><a href="#ejbjar_weblogic">weblogic</a></td><td>WebLogic 5.1 to 7.0</td></tr> | |||
<tr><td><a href="#ejbjar_websphere">websphere</a></td><td>IBM WebSphere 4.0</td></tr> | |||
<tr><td><a href="#ejbjar_orion">orion</a></td><td>IronFlare (Oracle) Orion Application Server 2.0.6</td></tr> | |||
<tr><td><a href="#ejbjar_orion">orion</a></td><td>IronFlare (Oracle) Orion Application Server | |||
2.0.6</td></tr> | |||
</table> | |||
<hr/> | |||
@@ -504,7 +510,8 @@ specific deployment tools. These currently include:</p> | |||
<li>WebLogic 5.1/6.0 session/entity beans using the <code>weblogic.ejbc</code> tool</li> | |||
<li>IBM WebSphere 4.0</li> | |||
<li>TOPLink for WebLogic 2.5.1-enabled entity beans</li> | |||
<li><a href="https://jonas.ow2.org/">JOnAS</a> 2.4.x and 2.5 Open Source EJB server</li> | |||
<li><a href="https://jonas.ow2.org/" target="_top">JOnAS</a> 2.4.x and 2.5 Open Source EJB | |||
server</li> | |||
<li>IronFlare Orion Application Server 2.0</li> | |||
</ul> | |||
@@ -528,11 +535,10 @@ its target jar file and determine if it is out of date with respect to the class | |||
deployment descriptors that make up the bean. If any of these files are newer than the jar file the | |||
jar will be rebuilt otherwise a message is logged that the jar file is up to date.</p> | |||
<p>The task uses | |||
the <a href="https://commons.apache.org/bcel/">BCEL</a> <a href="../install.html#librarydependencies">library</a> | |||
to extract all dependent classes. This means that, in addition to the classes that are mentioned in | |||
the deployment descriptor, any classes that these depend on are also automatically included in the | |||
jar file.</p> | |||
<p>The task uses the <a href="https://commons.apache.org/bcel/" | |||
target="_top">BCEL</a> <a href="../install.html#librarydependencies">library</a> to extract all | |||
dependent classes. This means that, in addition to the classes that are mentioned in the deployment | |||
descriptor, any classes that these depend on are also automatically included in the jar file.</p> | |||
<h3 id="naming">Naming convention</h3> | |||
@@ -596,10 +602,10 @@ classes or as parameters to the bean's methods.</p> | |||
super classes and super interfaces of the bean classes. For this technique to work the bean classes | |||
had to be loaded into Ant's JVM. This was not always possible due to class dependencies.</p> | |||
<p><em>Since Ant 1.5</em> the task uses the <a href="https://commons.apache.org/bcel/">BCEL</a> | |||
library to analyze the bean's class files directly, rather than loading them into the JVM. This also | |||
allows <code>ejbjar</code> to add all of the required support classes for a bean and not just super | |||
classes.</p> | |||
<p><em>Since Ant 1.5</em> the task uses the <a href="https://commons.apache.org/bcel/" | |||
target="_top">BCEL</a> library to analyze the bean's class files directly, rather than loading them | |||
into the JVM. This also allows <code>ejbjar</code> to add all of the required support classes for a | |||
bean and not just super classes.</p> | |||
<p><em>Since Ant 1.5</em>, a <var>dependency</var> attribute allows the buildfile to control what | |||
additional classes are added to the generated jar. It takes three possible values</p> | |||
@@ -611,9 +617,9 @@ additional classes are added to the generated jar. It takes three possible value | |||
<li><q>full</q>—In this mode all classes used by the bean's classes and interfaces are added | |||
to the jar</li> | |||
</ul> | |||
<p>The <q>super</q> and <q>full</q> values require | |||
the <a href="https://commons.apache.org/bcel/">BCEL</a> library to be available. If it is | |||
not, <code>ejbjar</code> will drop back to the behaviour corresponding to the value <q>none</q>.</p> | |||
<p>The <q>super</q> and <q>full</q> values require the <a href="https://commons.apache.org/bcel/" | |||
target="_top">BCEL</a> library to be available. If it is not, <code>ejbjar</code> will drop back to | |||
the behaviour corresponding to the value <q>none</q>.</p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -46,11 +46,11 @@ should be more reliable, as would be something like</p> | |||
<h4>Windows Users</h4> | |||
<p>The <code><exec></code> task delegates to <code>Runtime.exec</code> which in turn | |||
apparently | |||
calls <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx"> <code>::CreateProcess</code></a>. It | |||
is the latter Win32 function that defines the exact semantics of the call. In particular, if you do | |||
not put a file extension on the executable, only <samp>.EXE</samp> files are looked for, | |||
not <samp>.COM</samp>, <samp>.CMD</samp> or other file types listed in the environment | |||
variable <code>PATHEXT</code>. That is only used by the shell.</p> | |||
calls <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx" | |||
target="_top"><code>::CreateProcess</code></a>. It is the latter Win32 function that defines the | |||
exact semantics of the call. In particular, if you do not put a file extension on the executable, | |||
only <samp>.EXE</samp> files are looked for, not <samp>.COM</samp>, <samp>.CMD</samp> or other file | |||
types listed in the environment variable <code>PATHEXT</code>. That is only used by the shell.</p> | |||
<p>Note that <samp>.bat</samp> files cannot in general by executed directly. One normally needs to | |||
execute the command shell executable <code>cmd</code> using the <code>/c</code> switch.</p> | |||
<pre> | |||
@@ -75,8 +75,8 @@ the <var>executable</var> attribute in your buildfile.</p> | |||
executable 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">OpenJDK | |||
build instructions for cygwin</a>.</p> | |||
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><arg></code> elements is | |||
@@ -98,9 +98,9 @@ the <var>fork</var> attribute set to <q>true</q> instead as this task will follo | |||
interpretation of exit codes.</p> | |||
<h4>RedHat S/390 Users</h4> | |||
<p>It has been <a href="https://www.mail-archive.com/linux-390@vm.marist.edu/msg22223.html">reported | |||
on linux-390</a> that shell scripts invoked via the Ant Exec task must have their interpreter | |||
specified, i.e., the scripts must start with something like:</p> | |||
<p>It has been <a href="https://www.mail-archive.com/linux-390@vm.marist.edu/msg22223.html" | |||
target="_top">reported on linux-390</a> that shell scripts invoked via the Ant Exec task must have | |||
their interpreter specified, i.e., the scripts must start with something like:</p> | |||
<pre>#!/bin/bash</pre> | |||
<p>or the task will fail as follows:</p> | |||
@@ -323,10 +323,10 @@ property and have it assigned to the result code (barring immutability, of cours | |||
then <code><exec></code> halts the build unless <var>failifexecutionfails</var> is set | |||
to <q>false</q>. You can use that to run a program if it exists, but otherwise do nothing.</p> | |||
<p>What do those error codes mean? Well, they are OS dependent. On Windows boxes you have to look | |||
at <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx"> the | |||
documentation</a>; <code>error=2</code> means 'no such program', which usually means it is not on | |||
the path. Any time you see such an error from any Ant task, it is usually not an Ant bug, but some | |||
configuration problem on your machine.</p> | |||
at <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx" | |||
target="_top">the documentation</a>; <code>error=2</code> means 'no such program', which usually | |||
means it is not on the path. Any time you see such an error from any Ant task, it is usually not an | |||
Ant bug, but some configuration problem on your machine.</p> | |||
<h3>Examples</h3> | |||
<pre> | |||
@@ -223,8 +223,8 @@ connection.</p> | |||
<tr> | |||
<td colspan="3" class="left"> | |||
<p><strong>The following attributes | |||
require <a href="https://commons.apache.org/net/download_net.cgi">jakarta-commons-net-1.4.0 or | |||
greater</a>.</strong></p> | |||
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> | |||
@@ -259,44 +259,45 @@ connection.</p> | |||
<tr> | |||
<td>serverTimeZoneConfig</td> | |||
<td>Specify as a | |||
Java <a href="https://docs.oracle.com/javase/8/docs/api/java/util/TimeZone.html">TimeZone</a> | |||
identifier, (e.g. <q>GMT</q>, <q>America/Chicago</q> or <q>Asia/Jakarta</q>) 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 <q></q>), the time zone of the client is assumed.<br/><em>Since Ant 1.7</em></td> | |||
Java <a href="https://docs.oracle.com/javase/8/docs/api/java/util/TimeZone.html" | |||
target="_top">TimeZone</a> identifier, (e.g. <q>GMT</q>, <q>America/Chicago</q> | |||
or <q>Asia/Jakarta</q>) 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 <q></q>), the time | |||
zone of the client is assumed.<br/><em>Since Ant 1.7</em></td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>defaultDateFormatConfig</td> | |||
<td>Specify in | |||
Java <a href="https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat</a> | |||
notation, (e.g. <q>yyyy-MM-dd</q>), 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, (<q>unix</q> for | |||
example) this will be used for dates older than a year | |||
old. (See <var>recentDateFormatConfig</var>). When specified as <q></q>, default value will | |||
be used.<br/><em>Since Ant 1.7</em></td> | |||
Java <a href="https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html" | |||
target="_top">SimpleDateFormat</a> notation, (e.g. <q>yyyy-MM-dd</q>), 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, (<q>unix</q> for example) this will be used for dates older than a | |||
year old. (See <var>recentDateFormatConfig</var>). When specified as <q></q>, default value | |||
will be used.<br/><em>Since Ant 1.7</em></td> | |||
<td>No; defaults to default date format for the system type indicated | |||
by <var>systemTypeKey</var></td> | |||
</tr> | |||
<tr> | |||
<td>recentDateFormatConfig</td> | |||
<td>Specify in | |||
Java <a href="https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat</a> | |||
notation, (e.g. <q>MMM dd hh:mm</q>) the date format used by the FTP server to parse dates | |||
less than a year old. If not specified (or specified as <q></q>), and if the system type | |||
indicated by the <var>systemTypeKey</var> uses a recent date format, its standard format will | |||
be used.<br/><em>Since Ant 1.7</em></td> | |||
Java <a href="https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html" | |||
target="_top">SimpleDateFormat</a> notation, (e.g. <q>MMM dd hh:mm</q>) the date format used | |||
by the FTP server to parse dates less than a year old. If not specified (or specified | |||
as <q></q>), and if the system type indicated by the <var>systemTypeKey</var> uses a recent | |||
date format, its standard format will be used.<br/><em>Since Ant 1.7</em></td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>serverLanguageCodeConfig</td> | |||
<td>a <a href="http://www.mathguide.de/info/tools/languagecode.html">two-letter ISO-639 language | |||
code</a> used to specify the language used by the server to format month names. This only | |||
needs to be specified when the server uses non-numeric abbreviations for months in its date | |||
listings in a language other than English. This appears to be becoming rarer and rarer, as | |||
commonly distributed FTP servers seem increasingly to use English or all-numeric formats. | |||
Languages supported are: | |||
<td>a <a href="http://www.mathguide.de/info/tools/languagecode.html" target="_top">two-letter | |||
ISO-639 language code</a> used to specify the language used by the server to format month | |||
names. This only needs to be specified when the server uses non-numeric abbreviations for | |||
months in its date listings in a language other than English. This appears to be becoming | |||
rarer and rarer, as commonly distributed FTP servers seem increasingly to use English or | |||
all-numeric formats. Languages supported are: | |||
<ul> | |||
<li><q>en</q>—English</li> | |||
<li><q>fr</q>—French</li> | |||
@@ -34,9 +34,9 @@ | |||
Ant to use a ProjectHelper other than Ant's default, this task may or may not work.</p> | |||
<p>In the common use case where only Ant's default project helper is used, it basically works like | |||
the <a href="https://ant.apache.org/faq.html#xml-entity-include">Entity Includes as explained in | |||
the Ant FAQ</a>, as if the imported file was contained in the importing file, minus the | |||
top <code><project></code> tag.</p> | |||
the <a href="https://ant.apache.org/faq.html#xml-entity-include" target="_top">Entity Includes | |||
as explained in the Ant FAQ</a>, as if the imported file was contained in the importing file, | |||
minus the top <code><project></code> tag.</p> | |||
<p>The <code>import</code> task may only be used as a top-level task. This means that it may not | |||
be used in a target.</p> | |||
@@ -32,8 +32,8 @@ | |||
<p>On execution it will read another Ant file into the same project rewriting the included | |||
target <var>name</var>s and <var>depends</var> lists. This is different | |||
from <a href="https://ant.apache.org/faq.html#xml-entity-include">Entity Includes as explained | |||
in the Ant FAQ</a> insofar as the target names get prefixed by the included | |||
from <a href="https://ant.apache.org/faq.html#xml-entity-include" target="_top">Entity Includes | |||
as explained in the Ant FAQ</a> insofar as the target names get prefixed by the included | |||
project's <var>name</var> or <var>as</var> attribute and do not appear as if the file was | |||
contained in the including file.</p> | |||
@@ -71,15 +71,14 @@ a <code>zipfileset</code> in a <code>Zip</code> task. The one difference is that | |||
the <var>manifest</var> attribute is not specified, the <code>Jar</code> task will include an empty | |||
one for you.)</p> | |||
<p>Manifests are processed by the <code>Jar</code> task according to the <a target="_blank" | |||
href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html">Jar file | |||
specification.</a> Note in particular that this may result in manifest lines greater than 72 bytes | |||
being wrapped and continued on the next line.</p> | |||
<p>Manifests are processed by the <code>Jar</code> task according to | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html" target="_top">Jar | |||
file specification.</a> Note in particular that this may result in manifest lines greater than 72 | |||
bytes being wrapped and continued on the next line.</p> | |||
<p>The <code>Jar</code> task checks whether you specified package information according to | |||
the <a target="_blank" | |||
href="https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp90779"> | |||
versioning specification</a>.</p> | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp90779" | |||
target="_top">versioning specification</a>.</p> | |||
<p><strong>Please note that the ZIP format allows multiple files of the same fully-qualified name to | |||
exist within a single archive. This has been documented as causing various problems for unsuspecting | |||
@@ -89,7 +88,7 @@ other than its default, <q>add</q>.</strong></p> | |||
<p>To cryptographically sign your JAR file, use the <a href="signjar.html">SignJar task</a> on the | |||
JAR that you create from this task.</p> | |||
<p>For creating a simple version of a <a target="_blank" href="http://openjdk.java.net/jeps/238">JEP | |||
<p>For creating a simple version of a <a href="http://openjdk.java.net/jeps/238" target="_top">JEP | |||
238 multi-release jar</a>, you don't need any special tools. Just set the | |||
required <code>manifest</code> entry and place the files where required, as you could see in | |||
the <a href="#jep238-example">JEP 238 example</a>. If you want to tune this kind of jar, | |||
@@ -202,10 +201,10 @@ e.g. decreasing the size by deleting 'same' classes from the versions-branches, | |||
<tr> | |||
<td>index</td> | |||
<td>whether to create | |||
an <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#JAR_Index">index | |||
list</a> to speed up classloading. This is a JDK 1.3+ specific feature. Unless you specify | |||
additional jars with nested <a href="#indexjars"><code>indexjars</code></a> elements, only the | |||
contents of this jar will be included in the index.</td> | |||
an <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#JAR_Index" | |||
target="_top">index list</a> to speed up classloading. This is a JDK 1.3+ specific feature. | |||
Unless you specify additional jars with nested <a href="#indexjars"><code>indexjars</code></a> | |||
elements, only the contents of this jar will be included in the index.</td> | |||
<td>No; defaults to <q>false</q></td> | |||
</tr> | |||
<tr> | |||
@@ -213,8 +212,8 @@ e.g. decreasing the size by deleting 'same' classes from the versions-branches, | |||
<td>whether to include <samp>META-INF</samp> and its children in the index. Doesn't have any | |||
effect if <var>index</var> is <q>false</q>.<br/>Sun's jar implementation used to skip | |||
the <samp>META-INF</samp> directory and Ant followed that example. The behavior has been | |||
changed with <a href="https://bugs.openjdk.java.net/browse/JDK-4408526">Java 5</a>. In order | |||
to avoid problems with Ant generated jars on Java 1.4 or earlier Ant will not | |||
changed with <a href="https://bugs.openjdk.java.net/browse/JDK-4408526" target="_top">Java | |||
5</a>. In order to avoid problems with Ant generated jars on Java 1.4 or earlier Ant will not | |||
include <samp>META-INF</samp> unless explicitly asked to. <em>Since Ant 1.8.0</em></td> | |||
<td>No; defaults to <q>false</q></td> | |||
</tr> | |||
@@ -355,10 +354,11 @@ to <q>true</q>.</p> | |||
<p><em>Since Ant 1.7.0</em></p> | |||
<p>The nested <code>service</code> element specifies a service. Services are described in | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#Service_Provider">service | |||
provider overview</a>. The approach is to have providers JARs include files named by the service | |||
provided, for example, <samp>META-INF/services/javax.script.ScriptEngineFactory</samp> which can | |||
include implementation class names, one per line (usually just one per JAR).</p> | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#Service_Provider" | |||
target="_top">service provider overview</a>. The approach is to have providers JARs include files | |||
named by the service provided, for | |||
example, <samp>META-INF/services/javax.script.ScriptEngineFactory</samp> which can include | |||
implementation class names, one per line (usually just one per JAR).</p> | |||
<p>The name of the service is set by the <var>type</var> attribute. The classname implementing the | |||
service is the the <var>provider</var> attribute, or if one wants to specify a number of classes | |||
@@ -464,7 +464,7 @@ embeds all the classes from all the jars in <samp>lib/main</samp>.</p> | |||
<include name="build"/> | |||
<manifest> | |||
<!-- If this is an Applet or Web Start application, include | |||
the proper attributes from <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jweb/index.html">https://docs.oracle.com/javase/8/docs/technotes/guides/jweb/index.html</a> --> | |||
the proper attributes from <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jweb/index.html" target="_top">https://docs.oracle.com/javase/8/docs/technotes/guides/jweb/index.html</a> --> | |||
<attribute name="Permissions" value="sandbox"/> | |||
<attribute name="Codebase" value="example.com"/> | |||
<!-- Who is building this jar? --> | |||
@@ -521,7 +521,7 @@ JDK 6 scripting interface:</p> | |||
<h4 id="jep238-example">JEP 238 example: a Multi-Release JAR Files</h4> | |||
<p>Here we want to create a <em>Multi-Release JAR File</em> according the | |||
specification <a target="_blank" href="http://openjdk.java.net/jeps/238">JEP 238</a>. It defines on | |||
specification <a href="http://openjdk.java.net/jeps/238" target="_top">JEP 238</a>. It defines on | |||
top of a JAR the possibility to place additional or overwriting classes in a jar, which are | |||
available according to the Java version you run.<br/> Basically it says, that you have to set the | |||
manifest entry <code>Multi-Release: true</code> and place all additional or overwriting classes | |||
@@ -31,10 +31,10 @@ If the extension is present then a property is set.</p> | |||
<p>Note that this task works with extensions as defined by the "Optional Package" specification. | |||
For more information about optional packages, see the document <em>Optional Package Versioning</em> | |||
in the documentation bundle for your Java Standard Edition package, in file | |||
<samp>guide/extensions/versioning.html</samp> or the online <a target="_blank" | |||
href="https://docs.oracle.com/javase/8/docs/technotes/guides/extensions/versioning.html"> Extension | |||
and ExtensionSet documentation</a> for further details.</p> | |||
in the documentation bundle for your Java Standard Edition package, in | |||
file <samp>guide/extensions/versioning.html</samp> or the | |||
online <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/extensions/versioning.html" | |||
target="_top">Extension and ExtensionSet documentation</a> for further details.</p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -121,3 +121,4 @@ extension in.</p> | |||
</body> | |||
</html> | |||
@@ -31,10 +31,10 @@ specified jars.</p> | |||
<p>Note that this task works with extensions as defined by the "Optional Package" specification. | |||
For more information about optional packages, see the document <em>Optional Package Versioning</em> | |||
in the documentation bundle for your Java Standard Edition package, in file | |||
<samp>guide/extensions/versioning.html</samp> or the online <a target="_blank" | |||
href="https://docs.oracle.com/javase/8/docs/technotes/guides/extensions/versioning.html"> Extension | |||
and ExtensionSet documentation</a> for further details.</p> | |||
in the documentation bundle for your Java Standard Edition package, in | |||
file <samp>guide/extensions/versioning.html</samp> or the | |||
online <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/extensions/versioning.html" | |||
target="_top">Extension and ExtensionSet documentation</a> for further details.</p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -32,10 +32,10 @@ specifications in the manifests of the jars.</p> | |||
<p>Note that this task works with extensions as defined by the "Optional Package" specification. | |||
For more information about optional packages, see the document <em>Optional Package Versioning</em> | |||
in the documentation bundle for your Java Standard Edition package, in file | |||
<code>guide/extensions/versioning.html</code> or the online <a target="_blank" | |||
href="https://docs.oracle.com/javase/8/docs/technotes/guides/extensions/versioning.html">Extension | |||
and ExtensionSet documentation</a> for further details.</p> | |||
in the documentation bundle for your Java Standard Edition package, in | |||
file <code>guide/extensions/versioning.html</code> or the | |||
online <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/extensions/versioning.html" | |||
target="_top">Extension and ExtensionSet documentation</a> for further details.</p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -34,10 +34,10 @@ thrown.</p> | |||
<p>Note that this task works with extensions as defined by the "Optional Package" specification. | |||
For more information about optional packages, see the document <em>Optional Package Versioning</em> | |||
in the documentation bundle for your Java Standard Edition package, in file | |||
<code>guide/extensions/versioning.html</code> or the online <a target="_blank" | |||
href="https://docs.oracle.com/javase/8/docs/technotes/guides/extensions/versioning.html"> Extension | |||
and ExtensionSet documentation</a> for further details.</p> | |||
in the documentation bundle for your Java Standard Edition package, in | |||
file <code>guide/extensions/versioning.html</code> or the | |||
online <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/extensions/versioning.html" | |||
target="_top">Extension and ExtensionSet documentation</a> for further details.</p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -311,8 +311,8 @@ project, <em>not</em> the directory in which the Java task is run. If you need t | |||
relative to the directory the task will be run in, you need to explicitly create the full path to | |||
the JAR file.</p> | |||
<p>When using the <var>jar</var> attribute, all classpath settings are ignored according | |||
to <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html">Oracle's | |||
specification</a>. | |||
to <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html" | |||
target="_top">Oracle's specification</a>. | |||
<h3>Examples</h3> | |||
<pre> | |||
@@ -69,7 +69,7 @@ for either the <code>build.compiler</code> property or the <var>compiler</var> a | |||
(the <a href="https://web.archive.org/web/20050212025507/http://www.dms.at/kopi/index.html" | |||
target="_top">kopi</a> compiler).</li> | |||
<li><q>gcj</q> (the <code>gcj</code> compiler | |||
from <a href="https://gcc.gnu.org/gcc-7/changes.html#java">GCC</a>).</li> | |||
from <a href="https://gcc.gnu.org/gcc-7/changes.html#java" target="_top">GCC</a>).</li> | |||
<li><q>sj</q> (Symantec Java compiler) – <q>symantec</q> can be used as an alias.</li> | |||
<li><q>extJavac</q> (run either modern or classic in a JVM of its own).</li> | |||
</ul> | |||
@@ -309,8 +309,9 @@ file will not get compiled even if a native header file generated for it would b | |||
magic <a href="../javacprops.html#target"><code>ant.build.javac.target</code></a> property is | |||
set<br/><strong>Note that the default value depends on JDK that is running Ant and | |||
on <var>source</var> | |||
(see <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html#BHCJDCID">Cross-Compilation | |||
Options</a>). We highly recommend to always specify this attribute.</strong></td> | |||
(see <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html#BHCJDCID" | |||
target="_top">Cross-Compilation Options</a>). We highly recommend to always specify this | |||
attribute.</strong></td> | |||
</tr> | |||
<tr> | |||
<td>compiler</td> | |||
@@ -345,9 +346,10 @@ file will not get compiled even if a native header file generated for it would b | |||
compiler for doing unnecessary work. However, for some edge cases, involving generics, | |||
the <code>javac</code> compiler needs to compile the dependent classes to get the generics | |||
information. One example is documented in the bug | |||
report: <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=40776">Bug 40776 - a | |||
problem compiling a Java 5 project with generics</a>. Setting the attribute to <q>false</q> | |||
will cause the compiler to recompile dependent classes. <em>Since Ant 1.7.1</em>.</td> | |||
report: <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=40776" target="_top">Bug | |||
40776 - a problem compiling a Java 5 project with generics</a>. Setting the attribute | |||
to <q>false</q> will cause the compiler to recompile dependent classes. <em>Since Ant | |||
1.7.1</em>.</td> | |||
<td>No; default is <q>true</q></td> | |||
</tr> | |||
<tr> | |||
@@ -578,8 +580,8 @@ certain packages below a common root, use the <var>include</var>/<var>exclude</v | |||
or <code><include></code>/<code><exclude></code> nested elements to filter for these | |||
packages. Do not include part of your package structure in the <var>srcdir</var> attribute (or | |||
nested <code><src></code> elements), or Ant will recompile your source files every time you | |||
run your compile target. See the <a href="https://ant.apache.org/faq.html#always-recompiles">Ant | |||
FAQ</a> for additional information.</p> | |||
run your compile target. See the <a href="https://ant.apache.org/faq.html#always-recompiles" | |||
target="_top">Ant FAQ</a> for additional information.</p> | |||
<p>If you wish to compile only files explicitly specified and disable <code>javac</code>'s default | |||
searching mechanism then you can unset the <var>sourcepath</var> attribute:</p> | |||
@@ -734,9 +736,9 @@ references to strings that can by used in an OS independent fashion | |||
</javac></pre> | |||
<h3>OpenJDK notes</h3> | |||
<p>The <a href="http://openjdk.java.net/">openjdk</a> project has provided | |||
the <code>javac</code> <a href="http://openjdk.java.net/groups/compiler/">compiler</a> as an open | |||
source project. The output of this project is a <code>javac.jar</code> which contains | |||
<p>The <a href="http://openjdk.java.net/" target="_top">OpenJDK</a> project has provided | |||
the <code>javac</code> <a href="http://openjdk.java.net/groups/compiler/" target="_top">compiler</a> | |||
as an open source project. The output of this project is a <code>javac.jar</code> which contains | |||
the <code>javac</code> compiler. This compiler may be used with the <code><javac></code> task | |||
with the use of a <code>-Xbootclasspath/p</code> Java argument. The argument needs to be given to | |||
the runtime system of the <code>javac</code> executable, so it needs to be prepended with | |||
@@ -57,7 +57,7 @@ attribute it is up to you to ensure that this command supports the attributes yo | |||
<p><strong>Note</strong>: When generating the JavaDocs for classes which contains annotations you | |||
maybe get a <code>java.lang.ClassCastException: com.sun.tools.javadoc.ClassDocImpl</code>. This is | |||
due <a href="https://bugs.openjdk.java.net/browse/JDK-6442982" target="_blank">bug-6442982</a>. The | |||
due <a href="https://bugs.openjdk.java.net/browse/JDK-6442982" target="_top">bug-6442982</a>. The | |||
cause is that JavaDoc cannot find the implementations of used annotations. The workaround is | |||
providing the jars with these implementations (like JAXBs <code>@XmlType</code>, ...) | |||
to <code><javadoc></code> using <var>classpath</var>, <var>classpathref</var> attributes or | |||
@@ -493,8 +493,8 @@ with the <var>exclude</var> patterns of the <code>packageset</code> (and vice ve | |||
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="_blank">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> | |||
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> | |||
@@ -678,12 +678,12 @@ task.</p> | |||
<h4>doclet</h4> | |||
<p>The doclet nested element is used to specify | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/doclet/overview.html">doclet</a> | |||
that <code>javadoc</code> will use to process the input source files. A number of the | |||
standard <code>javadoc</code> arguments are actually arguments of the standard doclet. If these are | |||
specified in the <code>javadoc</code> task's attributes, they will be passed to the doclet specified | |||
in the <code><doclet></code> nested element. Such attributes should only be specified, | |||
therefore, if they can be interpreted by the doclet in use.</p> | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/doclet/overview.html" | |||
target="_top">doclet</a> that <code>javadoc</code> will use to process the input source files. A | |||
number of the standard <code>javadoc</code> arguments are actually arguments of the standard | |||
doclet. If these are specified in the <code>javadoc</code> task's attributes, they will be passed to | |||
the doclet specified in the <code><doclet></code> nested element. Such attributes should only | |||
be specified, therefore, if they can be interpreted by the doclet in use.</p> | |||
<p>If the doclet requires additional parameters, these can be specified | |||
with <code><param></code> elements within the <code><doclet></code> element. These | |||
@@ -742,8 +742,8 @@ those tags.</p> | |||
<td>If this attribute is specified, this element will behave as an | |||
implicit <a href="../Types/fileset.html">fileset</a>. The files included by this fileset | |||
should contain each tag definition on a separate line, as described in | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html#javadoctags">Javadoc | |||
reference guide</a>: | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html#javadoctags" | |||
target="_top">Javadoc reference guide</a>: | |||
<pre>ejb.bean:t:XDoclet EJB Tag | |||
todo:a:To Do</pre> | |||
<strong>Note</strong>: The Javadoc reference quide has double quotes around the description | |||
@@ -757,9 +757,10 @@ todo:a:To Do</pre> | |||
<h4 id="tagletelement">taglet</h4> | |||
<p>The taglet nested element is used to specify | |||
custom <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/taglet/overview.html">taglets</a> | |||
custom <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/taglet/overview.html" | |||
target="_top">taglets</a> | |||
beyond <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html#javadoctags" | |||
target="_blank">the default taglets</a>.</p> | |||
target="_top">the default taglets</a>.</p> | |||
<h5>Parameters</h5> | |||
<table class="attr"> | |||
@@ -771,7 +772,8 @@ target="_blank">the default taglets</a>.</p> | |||
<tr> | |||
<td>name</td> | |||
<td>The name of the taglet class | |||
(e.g. <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/taglet/ToDoTaglet.java"><code>com.sun.tools.doclets.ToDoTaglet</code></a>)</td> | |||
(e.g. <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/taglet/ToDoTaglet.java" | |||
target="_top"><code>com.sun.tools.doclets.ToDoTaglet</code></a>)</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
@@ -29,10 +29,10 @@ | |||
<p>Generates JNI headers from a Java class.</p> | |||
<p>When this task executes, it will generate the C header and source files that are needed to | |||
implement native methods. JNI operates differently depending on | |||
whether <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javah.html">JDK | |||
1.2+</a> | |||
or <a href="https://web.archive.org/web/20021018232717/http://java.sun.com/products/jdk/1.1/docs/tooldocs/win32/javah.html">pre-1.2 | |||
JDK</a> systems are used.</p> | |||
whether <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javah.html" | |||
target="_top">JDK 1.2+</a> | |||
or <a href="https://web.archive.org/web/20021018232717/http://java.sun.com/products/jdk/1.1/docs/tooldocs/win32/javah.html" | |||
target="_top">pre-1.2 JDK</a> systems are used.</p> | |||
<p>If you are building with Java 8 or above consider | |||
using <a href="javac.html"><code>javac</code></a>'s <var>nativeheaderdir</var> attribute instead | |||
@@ -47,7 +47,8 @@ attribute:</p> | |||
<ul> | |||
<li><q>default</q>—the default compiler for the platform.</li> | |||
<li><q>sun</q>—the standard compiler of the JDK.</li> | |||
<li><q>kaffeh</q>—the native standard compiler of <a href="http://www.kaffe.org" target="_top">Kaffe</a>.</li> | |||
<li><q>kaffeh</q>—the native standard compiler of <a href="http://www.kaffe.org" | |||
target="_top">Kaffe</a>.</li> | |||
<li><q>gcjh</q>—the native standard compiler | |||
of <a href="https://gcc.gnu.org/gcc-7/changes.html#java" target="_top">gcj and | |||
gij</a>. <em>Since Apache Ant 1.8.2</em></li> | |||
@@ -27,7 +27,8 @@ | |||
<h3>Description</h3> | |||
<p>Invokes the <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> parser.</p> | |||
<p>Invokes the <a href="http://www.clarkware.com/software/JDepend.html" target="_top">JDepend</a> | |||
parser.</p> | |||
<p>This parser "traverses a set of Java source file directories and generates design quality | |||
metrics for each Java package". It allows to "automatically measure the quality of a | |||
@@ -26,9 +26,9 @@ | |||
<p><em>Since Apache Ant 1.6</em></p> | |||
<h3>Description</h3> | |||
<p>Invokes the <a href="https://javacc.org/">JJDoc</a> preprocessor for the JavaCC compiler | |||
compiler. It takes a JavaCC parser specification and produces documentation for the BNF grammar. It | |||
can operate in three modes, determined by command line options. | |||
<p>Invokes the <a href="https://javacc.org/" target="_top">JJDoc</a> preprocessor for the JavaCC | |||
compiler compiler. It takes a JavaCC parser specification and produces documentation for the BNF | |||
grammar. It can operate in three modes, determined by command line options. | |||
<p>To use the <code>jjdoc</code> task, set the <var>target</var> attribute to the name of the JavaCC | |||
grammar file to process. You also need to specify the directory containing the JavaCC installation | |||
using the <var>javacchome</var> attribute, so that Ant can find the JavaCC classes. Optionally, you | |||
@@ -25,9 +25,9 @@ | |||
<h2 id="jjtree">JJTree</h2> | |||
<h3>Description</h3> | |||
<p>Invokes the <a href="https://javacc.org/">JJTree</a> preprocessor for the JavaCC compiler | |||
compiler. It inserts parse tree building actions at various places in the JavaCC source that it | |||
generates. The output of JJTree is run through JavaCC to create the parser.</p> | |||
<p>Invokes the <a href="https://javacc.org/" target="_top">JJTree</a> preprocessor for the JavaCC | |||
compiler compiler. It inserts parse tree building actions at various places in the JavaCC source | |||
that it generates. The output of JJTree is run through JavaCC to create the parser.</p> | |||
<p>To use the <code>jjtree</code> task, set the <var>target</var> attribute to the name of the | |||
JJTree grammar file to process. You also need to specify the directory containing the JavaCC | |||
installation using the <var>javacchome</var> attribute, so that Ant can find the JavaCC | |||
@@ -31,9 +31,10 @@ the task shipping with Tomcat instead.</em> This task is only tested against To | |||
known problems with Tomcat 5.x that won't get fixed in Ant, please use Tomcat's <code>jspc</code> | |||
task instead.<br/> Instead of relying on container-specific JSP compilers we suggest deploying the | |||
raw files (<samp>*.jsp</samp>) and use the container build-in functions: after deploying run a test | |||
suite (e.g. with <a href="https://attic.apache.org/projects/jakarta-cactus.html">Cactus</a> | |||
or <a href="http://httpunit.sourceforge.net/">HttpUnit</a>) against the deployed web application. So | |||
you'll get the test result <em>and</em> the compiled JSPs.</p> | |||
suite (e.g. with <a href="https://attic.apache.org/projects/jakarta-cactus.html" | |||
target="_top">Cactus</a> or <a href="http://httpunit.sourceforge.net/" target="_top">HttpUnit</a>) | |||
against the deployed web application. So you'll get the test result <em>and</em> the compiled | |||
JSPs.</p> | |||
<h3>Description</h3> | |||
<p>Apache Ant task to run the JSP compiler and turn JSP pages into Java source files.</p> | |||
@@ -47,8 +48,8 @@ dependencies, or <code><jsp:include></code> references.</p> | |||
<p>By default the task uses the Jasper JSP compiler. This means the task | |||
needs <samp>jasper.jar</samp> and <samp>jasper-runtime.jar</samp>, which come with builds of Tomcat | |||
4/Catalina from the <a href="https://tomcat.apache.org/">Apache Tomcat project</a>, and any other | |||
jar files which may be needed in future versions (it changes).</p> | |||
4/Catalina from the <a href="https://tomcat.apache.org/" target="_top">Apache Tomcat project</a>, | |||
and any other jar files which may be needed in future versions (it changes).</p> | |||
<p>We recommend (in March 2003) Tomcat version 4.1.x for the most robust version of Jasper.</p> | |||
@@ -25,9 +25,10 @@ | |||
<h3>Description</h3> | |||
<p>This task runs tests from the JUnit testing framework. The latest version of the framework can be | |||
found at <a href="https://junit.org">https://junit.org</a>. This task has been tested with JUnit | |||
3.0 up to JUnit 3.8.2; it won't work with versions prior to JUnit 3.0. It also works with JUnit 4.x, | |||
including "pure" JUnit 4 tests using only annotations and no <code>JUnit4TestAdapter</code>.</p> | |||
found at <a href="https://junit.org" target="_top">https://junit.org</a>. This task has been tested | |||
with JUnit 3.0 up to JUnit 3.8.2; it won't work with versions prior to JUnit 3.0. It also works with | |||
JUnit 4.x, including "pure" JUnit 4 tests using only annotations and | |||
no <code>JUnit4TestAdapter</code>.</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.</p> | |||
@@ -34,10 +34,10 @@ information.</p> | |||
<h3>Requirements</h3> | |||
<p>The task needs Apache <a href="https://xml.apache.org/xalan-j/">Xalan 2.4.1+ or Xalan XSLTC</a> | |||
(JDK 1.4 contains a version of Xalan 2.x, while JDK 1.5 ships with a version of XSLTC). JDK 1.4.2-01 | |||
and later ships with a bundled Xalan 2.4.1+, meaning that JDKs prior to version 1.4.2-01 won't work | |||
out of the box. The table below summarize the compatibility status.</p> | |||
<p>The task needs Apache <a href="https://xml.apache.org/xalan-j/" target="_top">Xalan 2.4.1+ or | |||
Xalan XSLTC</a> (JDK 1.4 contains a version of Xalan 2.x, while JDK 1.5 ships with a version of | |||
XSLTC). JDK 1.4.2-01 and later ships with a bundled Xalan 2.4.1+, meaning that JDKs prior to version | |||
1.4.2-01 won't work out of the box. The table below summarize the compatibility status.</p> | |||
<table> | |||
<tr><th>Xalan</th><th>Sun JDK Bundle</th><th>Status<th></tr> | |||
<tr><td>2.4.1+</td><td>JDK 1.4.2-01+</td><td>OK</td></tr> | |||
@@ -68,7 +68,7 @@ is not set.</p> | |||
</tr> | |||
</table> | |||
<p>The LoadFile task supports nested <a href="../Types/filterchain.html"> FilterChain</a>s.</p> | |||
<p>The LoadFile task supports nested <a href="../Types/filterchain.html">FilterChain</a>s.</p> | |||
<h3>Examples</h3> | |||
<pre> | |||
@@ -67,7 +67,7 @@ the property is not set.</p> | |||
<td>No; default is <q>false</q></td> | |||
</tr> | |||
</table> | |||
<p>The LoadResource task supports nested <a href="../Types/filterchain.html"> FilterChain</a>s.</p> | |||
<p>The LoadResource task supports nested <a href="../Types/filterchain.html">FilterChain</a>s.</p> | |||
<h3>Examples</h3> | |||
<pre> | |||
@@ -107,9 +107,8 @@ | |||
<tr> | |||
<td>doubleexpanding</td> | |||
<td>Controls whether or not property references in the attribute are expanded twice or just | |||
once. See | |||
the <a href="https://ant.apache.org/faq.html#macrodef-property-expansion">FAQ</a> for | |||
details. <em>Since Ant 1.8.3</em></td> | |||
once. See the <a href="https://ant.apache.org/faq.html#macrodef-property-expansion" | |||
target="_top">FAQ</a> for details. <em>Since Ant 1.8.3</em></td> | |||
<td>No; default is <q>true</q></td> | |||
</tr> | |||
</table> | |||
@@ -205,7 +204,8 @@ | |||
<p>The following fragment defines a task called <code><call-cc></code> which take the | |||
attributes <var>target</var>, <var>link</var> and <var>target.dir</var> and the nested | |||
element <code>cc-elements</code>. The body of the task uses the <code><cc></code> task | |||
from the <a href="http://ant-contrib.sourceforge.net/">ant-contrib</a> project.</p> | |||
from the <a href="http://ant-contrib.sourceforge.net/" target="_top">ant-contrib</a> | |||
project.</p> | |||
<pre class="code"> | |||
<macrodef name="call-cc"> | |||
<attribute name="target"/> | |||
@@ -84,8 +84,8 @@ more information.</p> | |||
<tr> | |||
<td>messagefileinputencoding</td> | |||
<td>Specifies the encoding of the input file. Please | |||
see <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html">Supported | |||
Encodings</a> for a list of possible values. <em>Since Ant 1.9.4</em> | |||
see <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html" | |||
target="_top">Supported Encodings</a> for a list of possible values. <em>Since Ant 1.9.4</em> | |||
</td> | |||
<td>No; defaults to default JVM character encoding</td> | |||
</tr> | |||
@@ -237,8 +237,8 @@ can contain email addresses of the form:</p> | |||
<td>inputencoding</td> | |||
<td> | |||
Specifies the encoding of the input file. Please | |||
see <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html">Supported | |||
Encodings</a> for a list of possible values. <em>Since Ant 1.9.4</em> | |||
see <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html" | |||
target="_top">Supported Encodings</a> for a list of possible values. <em>Since Ant 1.9.4</em> | |||
</td> | |||
<td>No; defaults to default JVM character encoding</td> | |||
</tr> | |||
@@ -32,8 +32,8 @@ | |||
file.</p> | |||
<p>Manifests are processed according to | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html">Jar file | |||
specification</a>. Specifically, a manifest element consists of a set of attributes and | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html" target="_top">Jar | |||
file specification</a>. Specifically, a manifest element consists of a set of attributes and | |||
sections. These sections in turn may contain attributes. Note in particular that this may result in | |||
manifest lines greater than 72 bytes being wrapped and continued on the next line.</p> | |||
@@ -151,8 +151,8 @@ sections.</p> | |||
attribute will take the value of the Ant property <code>${user.name}</code>. The same is true for | |||
the <code>${version}</code> and <code>${TODAY}</code> properties. This example produces | |||
a <samp>MANIFEST.MF</samp> that | |||
contains <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp90779">package | |||
version identification</a> for the package <samp>common</samp>.</p> | |||
contains <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp90779" | |||
target="_top">package version identification</a> for the package <samp>common</samp>.</p> | |||
<p>The manifest produced by the above would look like this:</p> | |||
@@ -31,9 +31,10 @@ | |||
<h3>Description</h3> | |||
<p>Sends SMTP mail with MIME | |||
attachments. <a href="https://www.oracle.com/technetwork/java/index-138643.html">JavaMail</a> | |||
and <a href="https://www.oracle.com/technetwork/java/javase/jaf-135115.html">Java Activation | |||
Framework</a> are required for this task.</p> | |||
attachments. <a href="https://www.oracle.com/technetwork/java/index-138643.html" | |||
target="_top">JavaMail</a> | |||
and <a href="https://www.oracle.com/technetwork/java/javase/jaf-135115.html" target="_top">Java | |||
Activation Framework</a> are required for this task.</p> | |||
<p>Multiple files can be attached using <a href="../Types/fileset.html">FileSets.</a></p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -99,7 +99,7 @@ complete without waiting for other nested tasks to complete in other threads.</p | |||
is not set, the remaining tasks in other threads will continue to run until all threads have | |||
completed. In this situation, the <code>parallel</code> task will also fail.</p> | |||
<p>The <code>parallel</code> task may be combined with the <a href="sequential.html"> sequential</a> | |||
<p>The <code>parallel</code> task may be combined with the <a href="sequential.html">sequential</a> | |||
task to define sequences of tasks to be executed on each thread within the parallel block</p> | |||
<p>The <var>threadCount</var> attribute can be used to place a maximum number of available threads | |||
@@ -118,7 +118,7 @@ any <var>from</var> values are prefixes of other <var>from</var> values.</p> | |||
<p>If the <var>refid</var> attribute is not specified, then one or more | |||
nested <a href="../Types/resources.html#collection">resource collections</a> must be supplied.</p> | |||
<h4>mapper</h4> | |||
<p>A single nested <a href="../Types/mapper.html"> <code><mapper></code></a> element can be | |||
<p>A single nested <a href="../Types/mapper.html"><code><mapper></code></a> element can be | |||
specified to perform any of various filename transformations (<em>since Ant 1.6.2</em>).</p> | |||
<h3>Examples</h3> | |||
@@ -58,8 +58,8 @@ from a property file.</p> | |||
<p>A list of predefined properties can be | |||
found <a href="../properties.html#built-in-props">here</a>.</p> | |||
<p><em>Since Apache Ant 1.8.0</em>, it is possible to load properties defined in XML according | |||
to <a href="http://java.sun.com/dtd/properties.dtd">Sun DTD</a>, when running on Java 5+. For this | |||
the name of the file, resource or url has to end with <samp>.xml</samp>.</p> | |||
to <a href="http://java.sun.com/dtd/properties.dtd" target="_top">Sun DTD</a>, when running on Java | |||
5+. For this the name of the file, resource or url has to end with <samp>.xml</samp>.</p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -166,8 +166,8 @@ local definition is available (the table priority order being PROCESS, JOB, GROU | |||
<p><em>Since Ant 1.8.2</em>, if Ant detects it is running on a Java 5 or newer, Ant will | |||
use <code>System.getenv()</code> rather than its own OS dependent native implementation. For some | |||
OSes this causes minor differences when compared to older versions of Ant. For a full list | |||
see <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=49366">Bugzilla Issue 49366</a>. In | |||
particular:</p> | |||
see <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=49366" target="_top">Bugzilla Issue | |||
49366</a>. In particular:</p> | |||
<ul> | |||
<li>On Windows, Ant will now return additional "environment variables" that correspond to the | |||
drive specific current working directories when Ant is run from the command line. The keys of | |||
@@ -244,7 +244,8 @@ on a classpath. Here are some interesting facts about this feature</p> | |||
<li>If the file is not there, nothing is printed except at <code>-verbose</code> log level. This | |||
lets you have optional configuration files for every project, that team members can customize. | |||
<li>The rules for this format | |||
match <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html#load-java.io.InputStream-">java.util.Properties</a>.</li> | |||
match <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html#load-java.io.InputStream-" | |||
target="_top">java.util.Properties</a>.</li> | |||
<li>Trailing spaces are not stripped. It may have been what you wanted.</li> | |||
<li>Want unusual characters? Escape them <code>\u0456</code> or <code>\"</code> style.</li> | |||
<li>Ant Properties are expanded in the file</li> | |||
@@ -265,8 +266,8 @@ deploy.url=http://${deploy.server}:${deploy.port}/</pre> | |||
variables. So it starts a command in a new process which prints the environment variables, analyzes | |||
the output and creates the properties.<br/> There are commands for the following operating systems | |||
implemented | |||
in <a href="https://git-wip-us.apache.org/repos/asf?p=ant.git;a=blob;f=src/main/org/apache/tools/ant/taskdefs/Execute.java;hb=refs/heads/master">Execute.java</a> | |||
(method <code>getProcEnvCommand()</code>): | |||
in <a href="https://git-wip-us.apache.org/repos/asf?p=ant.git;a=blob;f=src/main/org/apache/tools/ant/taskdefs/Execute.java;hb=refs/heads/master" | |||
target="_top">Execute.java</a> (method <code>getProcEnvCommand()</code>): | |||
</p> | |||
<table> | |||
<tr> | |||
@@ -54,7 +54,7 @@ an <var>updateonly</var> argument introduced.</p> | |||
<h2 id="introduction">Introduction</h2> | |||
<p>The <code>pvcs</code> task allows the user of Ant to extract the latest edition of the source | |||
code from a PVCS repository. PVCS is a version control system developed | |||
by <a href="http://www.serena.com/products/pvcs">Merant</a>.</p> | |||
by <a href="http://www.serena.com/products/pvcs" target="_top">Merant</a>.</p> | |||
<p>This version has been tested against PVCS version 6.5 and 6.6 under Windows and Solaris.</p> | |||
<hr/> | |||
@@ -66,16 +66,16 @@ are the choices:</p> | |||
platform is chosen. If <code>build.rmic</code> is set to this, you get the default.</li> | |||
</ul> | |||
<p>The <a href="https://web.archive.org/web/20131225023602/http://dione.zcu.cz/~toman40/miniRMI/">miniRMI</a> | |||
project contains a compiler implementation for this task as well, please consult miniRMI's | |||
documentation to learn how to use it.</p> | |||
<p>The <a href="https://web.archive.org/web/20131225023602/http://dione.zcu.cz/~toman40/miniRMI/" | |||
target="_top">miniRMI</a> project contains a compiler implementation for this task as well, please | |||
consult miniRMI's documentation to learn how to use it.</p> | |||
<h4>CORBA support</h4> | |||
<p>Java 11 removes the CORBA and JavaEE packages and <code>rmic</code> no longer supports | |||
either <code>iiop</code> nor <code>idl</code>. Starting with Ant 1.10.3, the <code>rmic</code> task | |||
will fail when using either while running Java 11+ unless you fork the task and explicitly specify an | |||
executable.</p> | |||
<p>Java 11 <a href="http://openjdk.java.net/jeps/320" target="_top">removes</a> the Java EE and | |||
CORBA packages and <code>rmic</code> no longer supports either <code>iiop</code> | |||
or <code>idl</code>. Starting with Ant 1.10.3, the <code>rmic</code> task will fail when using | |||
either while running Java 11+ unless you fork the task and explicitly specify an executable.</p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -49,12 +49,13 @@ their URL equivalents.</p> | |||
<li><code><dtd></code> elements which are used to resolve DTDs and entities.</li> | |||
<li><code><attribute></code> elements which are used to set features on the parser. These | |||
can be any number | |||
of <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description"><code>http://xml.org/sax/features/</code></a> | |||
or other features that your parser may support.</li> | |||
of <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description" | |||
target="_top"><code>http://xml.org/sax/features/</code></a> or other features that your parser | |||
may support.</li> | |||
<li><code><property></code> elements, containing string properties</li> | |||
</ul> | |||
<p>The task only supports SAX2 or later parsers: it is an error to specify a esSAX1 parser.</p> | |||
<p>The task only supports SAX2 or later parsers: it is an error to specify a SAX1 parser.</p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -168,10 +169,10 @@ their URL equivalents.</p> | |||
perform entity resolution.</p> | |||
<h4>attribute</h4> | |||
<p>The <code><attribute></code> element is used to set parser features.<br/>Features usable | |||
with the xerces parser are defined | |||
here: <a href="https://xml.apache.org/xerces-j/features.html">Setting features</a><br/>SAX features | |||
are defined | |||
here: <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description"><code>http://xml.org/sax/features/</code></a></p> | |||
with the xerces parser are defined here: <a href="https://xml.apache.org/xerces-j/features.html" | |||
target="_top">Setting features</a><br/>SAX features are defined | |||
here: <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description" | |||
target="_top"><code>http://xml.org/sax/features/</code></a></p> | |||
<table class="attr"> | |||
<tr> | |||
<th>Attribute</th> | |||
@@ -193,8 +194,8 @@ here: <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html | |||
<h4>property</h4> | |||
<p>The <code><property></code> element is used to set properties. These properties are | |||
defined here for the Xerces XML parser | |||
implementation: <a href="https://xml.apache.org/xerces-j/properties.html">XML Parser properties</a> | |||
Properties can be used to set the schema used to validate the XML file. | |||
implementation: <a href="https://xml.apache.org/xerces-j/properties.html" target="_top">XML Parser | |||
properties</a>. Properties can be used to set the schema used to validate the XML file. | |||
</p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -237,7 +238,7 @@ is why the <var>noNamespaceFile</var> is needed.</p> | |||
documents against the relevant specifications. To validate XSD documents, you also | |||
need <samp>XMLSchema.dtd</samp> and <samp>datatypes.dtd</samp> in the same directory | |||
as <samp>XMLSchema.xsd</samp>, or pointed to via the catalog. All these files can be fetched | |||
from <a href="https://www.w3.org/2001/XMLSchema">W3C</a>.</p> | |||
from <a href="https://www.w3.org/2001/XMLSchema" target="_top">W3C</a>.</p> | |||
<pre><validate-soap file="xml/test.xsd"/></pre> | |||
<p>Use the preset task defined above to validate an XML Schema document.</p> | |||
@@ -27,8 +27,8 @@ | |||
<h2 id="script">Script</h2> | |||
<h3>Description</h3> | |||
<p>Execute a script in a <a href="https://jakarta.apache.org/bsf" target="_top">Apache BSF</a> | |||
or <a href="https://jcp.org/aboutJava/communityprocess/maintenance/jsr223/223ChangeLog.html">JSR | |||
223</a> supported language. | |||
or <a href="https://jcp.org/aboutJava/communityprocess/maintenance/jsr223/223ChangeLog.html" | |||
target="_top">JSR 223</a> supported language. | |||
</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 | |||
@@ -46,15 +46,16 @@ Java API, see the <a href="../api/index.html">JavaDoc</a> (especially | |||
for <a href="../api/org/apache/tools/ant/Project.html">Project</a> | |||
and <a href="../api/org/apache/tools/ant/taskdefs/optional/Script.html">Script</a>) for more | |||
information.</p> | |||
<p>If you are using JavaScript under BSF, a good resource is <a target="_blank" | |||
href="https://www.mozilla.org/rhino/doc.html">https://www.mozilla.org/rhino/doc.html</a> as we are | |||
using their JavaScript interpreter.</p> | |||
<p>If you are using JavaScript under BSF, a good resource | |||
is <a href="https://www.mozilla.org/rhino/doc.html" | |||
target="_top">https://www.mozilla.org/rhino/doc.html</a> as we are using their JavaScript | |||
interpreter.</p> | |||
<p>Scripts can do almost anything a task written in Java could do.</p> | |||
<p>Rhino provides a special construct—the <code>JavaAdapter</code>. With that you can create | |||
an object which implements several interfaces, extends classes and for which you can overwrite | |||
methods. Because this is an undocumented feature (yet), here is the link to an | |||
explanation: <a href="https://groups.google.com/forum/#!msg/netscape.public.mozilla.jseng/YlRQE0OvM8c/F8Mvq-XkpxcJ">Google | |||
Groups: "Rhino, enum.js, JavaAdapter?"</a> by Norris Boyd in the | |||
explanation: <a href="https://groups.google.com/forum/#!msg/netscape.public.mozilla.jseng/YlRQE0OvM8c/F8Mvq-XkpxcJ" | |||
target="_top">Google Groups: "Rhino, enum.js, JavaAdapter?"</a> by Norris Boyd in the | |||
newsgroup <em>netscape.public.mozilla.jseng</em>.</p> | |||
<p>If you are creating Targets programmatically, make sure you set the Location to a useful value. | |||
@@ -273,9 +274,9 @@ with <code>importClass(<strong>Packages</strong>.org.apache.tools.ant.util.FileU | |||
The <code><script></code> task populates the Project instance under the | |||
name <code>project</code>, so we can use that reference. Another way is to use its given name or | |||
getting its reference from the task itself.<br/> The Project provides methods for accessing and | |||
setting properties, creating DataTypes and Tasks and much more.<br/> After creating a FileSet object | |||
we initialize that by calling its set-methods. Then we can use that object like a normal Ant task | |||
(<code><copy></code> for example).<br/> For getting the size of a file we instantiate | |||
setting properties, creating DataTypes and Tasks and much more.<br/> After creating a FileSet | |||
object we initialize that by calling its set-methods. Then we can use that object like a normal Ant | |||
task (<code><copy></code> for example).<br/> For getting the size of a file we instantiate | |||
a <code>java.io.File</code>. So we are using normal Java API here.<br/> Finally we use | |||
the <code><echo></code> task for producing the output. The task is not executed by | |||
its <code>execute()</code> method, because the <code>perform()</code> method (implemented in Task | |||
@@ -312,8 +313,8 @@ paths to a referenced path. If the path does not exist, it will be created.</p> | |||
project.addTaskDefinition("addtopath", AddToPath.class); | |||
</script></pre> | |||
<p>An example of using this task to create a path from a list of directories (using | |||
antcontrib's <a href="http://ant-contrib.sourceforge.net/tasks/tasks/for.html"> <for></a> | |||
task) follows:</p> | |||
ant-contrib's <a href="http://ant-contrib.sourceforge.net/tasks/tasks/for.html" | |||
target="_top"><for></a> task) follows:</p> | |||
<pre> | |||
<path id="main.path"> | |||
<fileset dir="build/classes"/> | |||
@@ -28,14 +28,13 @@ | |||
<h3>Description</h3> | |||
<p><code>Scriptdef</code> can be used to define an Apache Ant task using a scripting language. Ant | |||
scripting languages supported by <a href="https://jakarta.apache.org/bsf" target="_top">Apache | |||
BSF</a> | |||
or <a href="https://jcp.org/aboutJava/communityprocess/maintenance/jsr223/223ChangeLog.html">JSR | |||
223</a> may be used to define the script. <code>Scriptdef</code> provides a mechanism to encapsulate | |||
control logic from a build within an Ant task minimizing the need for providing control style tasks | |||
in Ant itself. Complex logic can be made available while retaining the simple structure of an Ant | |||
build file. <code>Scriptdef</code> is also useful for prototyping new custom tasks. Certainly as the | |||
complexity of the script increases it would be better to migrate the task definition into a Java | |||
based custom task.</p> | |||
BSF</a> or <a href="https://jcp.org/aboutJava/communityprocess/maintenance/jsr223/223ChangeLog.html" | |||
target="_top">JSR 223</a> may be used to define the script. <code>Scriptdef</code> provides a | |||
mechanism to encapsulate control logic from a build within an Ant task minimizing the need for | |||
providing control style tasks in Ant itself. Complex logic can be made available while retaining the | |||
simple structure of an Ant build file. <code>Scriptdef</code> is also useful for prototyping new | |||
custom tasks. Certainly as the complexity of the script increases it would be better to migrate the | |||
task definition into a Java based custom task.</p> | |||
<p><strong>Note</strong>: This task depends on external libraries not included in the Ant | |||
distribution. See <a href="../install.html#librarydependencies">Library Dependencies</a> for more | |||
@@ -282,9 +281,9 @@ beanshell jar.</p> | |||
<h3>Testing scripts</h3> | |||
<p>The easiest way to test scripts is to use | |||
the <a href="https://ant.apache.org/antlibs/antunit/">AntUnit</a> Ant library. This will run all | |||
targets in a script that begin with <q>test</q> (and their dependencies).</p> | |||
<p>The easiest way to test scripts is to use the <a href="https://ant.apache.org/antlibs/antunit/" | |||
target="_top">AntUnit</a> Ant library. This will run all targets in a script that begin | |||
with <q>test</q> (and their dependencies).</p> | |||
</body> | |||
</html> |
@@ -49,8 +49,8 @@ different sets of permissions to apply to either type of resource.</p> | |||
<tr> | |||
<td>permissions</td> | |||
<td>The permissions to set as comma separated list of names | |||
of <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/file/attribute/PosixFilePermission.html">PosixFilePermission</a> | |||
values.</td> | |||
of <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/file/attribute/PosixFilePermission.html" | |||
target="_top">PosixFilePermission</a> values.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
@@ -27,12 +27,13 @@ | |||
<h2 id="signjar">SignJar</h2> | |||
<h3>Description</h3> | |||
<p>Signing a jar allows users to authenticate the publisher.</p> | |||
<p>Signs JAR files with the <a target="_blank" | |||
href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jarsigner.html"><code>jarsigner</code> | |||
command line tool</a>. It will take a named file in the <var>jar</var> attribute, and an | |||
optional <var>destDir</var> or <var>signedJar</var> attribute. Nested paths are also supported; here | |||
only an (optional) <var>destDir</var> is allowed. If a destination directory or explicit JAR file | |||
name is not provided, JARs are signed in place.</p> | |||
<p>Signs JAR files with | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jarsigner.html" | |||
target="_top"><code>jarsigner</code> command line tool</a>. It will take a named file in | |||
the <var>jar</var> attribute, and an optional <var>destDir</var> or <var>signedJar</var> | |||
attribute. Nested paths are also supported; here only an (optional) <var>destDir</var> is | |||
allowed. If a destination directory or explicit JAR file name is not provided, JARs are signed in | |||
place.</p> | |||
<p>Dependency rules</p> | |||
<ul> | |||
<li>Nonexistent destination JARs are created/signed</li> | |||
@@ -207,9 +208,9 @@ name is not provided, JARs are signed in place.</p> | |||
</table> | |||
<h3>Examples</h3> | |||
<p>For instructions on generating a code signing certificate, see the <a target="_blank" | |||
href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html">keytool | |||
documentation</a> and/or instructions from your certificate authority.</p> | |||
<p>For instructions on generating a code signing certificate, see | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html" | |||
target="_top">keytool documentation</a> and/or instructions from your certificate authority.</p> | |||
<pre> | |||
<signjar jar="${dist}/lib/ant.jar" | |||
alias="apache-group" storepass="secret"/></pre> | |||
@@ -40,8 +40,8 @@ | |||
<p>These tasks provide an interface to | |||
the <a href="https://msdn.microsoft.com/en-us/library/3h0544kx(v=vs.80).aspx" | |||
target="_top">Microsoft Visual SourceSafe</a> SCM | |||
via <a href="https://sourcegear.com">SourceGear's</a> <a href="https://sourcegear.com/sos/">SourceOffSite</a> | |||
target="_top">Microsoft Visual SourceSafe</a> SCM via <a href="https://sourcegear.com" | |||
target="_top">SourceGear's</a> <a href="https://sourcegear.com/sos/" target="_top">SourceOffSite</a> | |||
product. SourceOffSite is an add-on to Microsoft's VSS, that allows remote development teams and | |||
tele-commuters that need fast and secure read/write access to a centralized SourceSafe database via | |||
any TCP/IP connection. SOS provides Linux, Solaris & Windows | |||
@@ -173,8 +173,8 @@ disabled with <code>-noproxy</code> option.</p> | |||
<tr> | |||
<td>escapeprocessing</td> | |||
<td>Control whether the Java statement object will perform escape substitution.<br/> | |||
See <a href="https://docs.oracle.com/javase/8/docs/api/java/sql/Statement.html#setEscapeProcessing-boolean-">Statement's | |||
API docs</a> for details. <em>Since Ant 1.6</em>. | |||
See <a href="https://docs.oracle.com/javase/8/docs/api/java/sql/Statement.html#setEscapeProcessing-boolean-" | |||
target="_top">Statement's API docs</a> for details. <em>Since Ant 1.6</em>. | |||
<td>No; defaults to <q>true</q></td> | |||
</tr> | |||
<tr> | |||
@@ -319,7 +319,7 @@ for primitive types).</p> | |||
<h4>outputproperty (<var>trax</var> processors only)</h4> | |||
<p>Used to specify how you wish the result tree to be output as specified in | |||
the <a href="https://www.w3.org/TR/xslt#output"> XSLT specifications</a>. | |||
the <a href="https://www.w3.org/TR/xslt#output" target="_top">XSLT specifications</a>. | |||
<h5>Parameters</h5> | |||
<table class="attr"> | |||
@@ -131,8 +131,8 @@ to <q>gzip</q>, <q>bzip2</q>, or <q>xz</q>.</p> | |||
<td>encoding</td> | |||
<td>The character encoding to use for filenames inside the tar file. For a list of possible | |||
values see | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html">Supported | |||
Encodings</a>.<br/><em>Since Ant 1.9.5</em> | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html" | |||
target="_top">Supported Encodings</a>.<br/><em>Since Ant 1.9.5</em> | |||
<td>No; defaults to default JVM character encoding</td> | |||
</tr> | |||
</table> | |||
@@ -98,7 +98,7 @@ a <var>type</var> selector to suppress this. This only applies to filesets nest | |||
directly, not to filesets nested into a path or any other resource collection.</p> | |||
<h4>mapper</h4> | |||
<p><em>Since Ant 1.6.3</em>, a nested <a href="../Types/mapper.html"> mapper</a> can be specified. | |||
<p><em>Since Ant 1.6.3</em>, a nested <a href="../Types/mapper.html">mapper</a> can be specified. | |||
Files specified via nested <code>fileset</code>s, <code>filelist</code>s, or the <code>file</code> | |||
attribute are mapped using the specified mapper. For each file mapped, the resulting files are | |||
touched. If no time has been specified and the original file exists its timestamp will be used. If | |||
@@ -59,12 +59,11 @@ ignored.</p> | |||
</table> | |||
<h3>Parameters specified as nested elements</h3> | |||
<p>The task supports a <code><format></code> nested element that allows a | |||
property to be set to the current date and time in a given format. The date/time patterns are as | |||
defined in the | |||
Java <a href="https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat</a> | |||
class. The format element also allows offsets to be applied to the time to generate different time | |||
values.</p> | |||
<p>The task supports a <code><format></code> nested element that allows a property to be set | |||
to the current date and time in a given format. The date/time patterns are as defined in the | |||
Java <a href="https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html" | |||
target="_top">SimpleDateFormat</a> class. The format element also allows offsets to be applied to | |||
the time to generate different time values.</p> | |||
<table class="attr"> | |||
<tr> | |||
<th>Attribute</th> | |||
@@ -85,8 +84,8 @@ values.</p> | |||
<tr> | |||
<td>timezone</td> | |||
<td>The timezone to use for displaying time. The values are as defined by the | |||
Java <a href="https://docs.oracle.com/javase/8/docs/api/java/util/TimeZone.html">TimeZone</a> | |||
class.</td> | |||
Java <a href="https://docs.oracle.com/javase/8/docs/api/java/util/TimeZone.html" | |||
target="_top">TimeZone</a> class.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
@@ -115,8 +114,8 @@ values.</p> | |||
<td>The locale used to create date/time string. The general form is <q>language[, country[, | |||
variant]]</q> (either <q>variant</q> or both <q>variant</q> and <q>country</q> may be | |||
omitted). For more information please refer to documentation for | |||
the <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html">Locale</a> | |||
class.</td> | |||
the <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html" | |||
target="_top">Locale</a> class.</td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
@@ -45,17 +45,18 @@ attributes point to files in the format of Java property files or an xml format. | |||
<p>If you are defining tasks or types that share the same classpath with | |||
multiple <code>taskdef</code> or <code>typedef</code> tasks, the corresponding classes will be | |||
loaded by different | |||
Java <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html">ClassLoaders</a>. | |||
Two classes with the same name loaded via different ClassLoaders are not the same class from the | |||
point of view of JVM, they don't share static variables and instances of these classes can't access | |||
private methods or attributes of instances defined by "the other class" of the same name. They | |||
don't even belong to the same Java package and can't access package private code, either.</p> | |||
Java <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html" | |||
target="_top">ClassLoaders</a>. Two classes with the same name loaded via different ClassLoaders | |||
are not the same class from the point of view of JVM, they don't share static variables and | |||
instances of these classes can't access private methods or attributes of instances defined by "the | |||
other class" of the same name. They don't even belong to the same Java package and can't access | |||
package private code, either.</p> | |||
<p>The best way to load several tasks/types that are supposed to cooperate with each other via | |||
shared Java code is to use the <var>resource</var> attribute and an <code>antlib</code> descriptor. | |||
If this is not possible, the second best option is to use the <var>loaderref</var> attribute and | |||
specify the same name for each and every <code>typedef</code>/<code>taskdef</code> -- this way the | |||
classes will share the same <code>ClassLoader</code>. Note that | |||
specify the same name for each and every <code>typedef</code>/<code>taskdef</code>—this way | |||
the classes will share the same <code>ClassLoader</code>. Note that | |||
the <code>typedef</code>/<code>taskdef</code> tasks must use identical classpath definitions (this | |||
includes the order of path components) for the <var>loaderref</var> attribute to work.</p> | |||
@@ -90,10 +90,10 @@ extract an Ant generated ZIP archive.</p> | |||
<td>encoding</td> | |||
<td>The character encoding that has been used for filenames inside the zip file. For a list of | |||
possible values see | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html">Supported | |||
Encodings</a>.<br/> Use the magic value <q>native-encoding</q> for default JVM character | |||
encoding.<br/> See also the <a href="zip.html#encoding">discussion in the zip task | |||
page</a></td> | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html" | |||
target="_top">Supported Encodings</a>.<br/> Use the magic value <q>native-encoding</q> for | |||
default JVM character encoding.<br/> See also the <a href="zip.html#encoding">discussion in | |||
the zip task page</a></td> | |||
<td>No; defaults to <q>UTF8</q> for <code>unzip</code> and default JVM character encoding | |||
for <code>untar</code> task</td> | |||
</tr> | |||
@@ -36,8 +36,9 @@ one can specify any SAX1/2 parser if needed.</p> | |||
<li><code><dtd></code> elements which are used to resolve DTDs and entities</li> | |||
<li><code><attribute></code> elements which are used to set features on the parser. These | |||
can be any number | |||
of <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description"><code>http://xml.org/sax/features/</code></a> | |||
or other features that your parser may support.</li> | |||
of <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description" | |||
target="_top"><code>http://xml.org/sax/features/</code></a> or other features that your parser | |||
may support.</li> | |||
<li><code><property></code> elements, containing string properties</li> | |||
</ul> | |||
@@ -117,9 +118,10 @@ perform entity resolution.</p> | |||
<h4>attribute</h4> | |||
<p>The <code><attribute></code> element is used to set parser features.</p> | |||
<p>Features usable with the Xerces parser are defined | |||
here: <a href="https://xml.apache.org/xerces-j/features.html">Setting features</a></p> | |||
here: <a href="https://xml.apache.org/xerces-j/features.html" target="_top">Setting features</a></p> | |||
<p>SAX features are defined | |||
here: <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description"><code>http://xml.org/sax/features/</code></a></p> | |||
here: <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description" | |||
target="_top"><code>http://xml.org/sax/features/</code></a></p> | |||
<table class="attr"> | |||
<tr> | |||
<th>Attribute</th> | |||
@@ -141,8 +143,8 @@ here: <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html | |||
<h4>property</h4> | |||
<p>The <code><property></code> element is used to set properties. These properties are | |||
defined here for the Xerces XML parser | |||
implementation: <a href="https://xml.apache.org/xerces-j/properties.html">XML Parser properties</a> | |||
Properties can be used to set the schema used to validate the XML file.</p> | |||
implementation: <a href="https://xml.apache.org/xerces-j/properties.html" target="_top">XML Parser | |||
properties</a>. Properties can be used to set the schema used to validate the XML file.</p> | |||
<table class="attr"> | |||
<tr> | |||
<th>Attribute</th> | |||
@@ -81,10 +81,10 @@ see <a href="#encoding">below</a></p> | |||
<p><em>Since Ant 1.5.2</em>, <code><zip></code> can store Unix permissions inside the archive | |||
(see description of the <var>filemode</var> and <var>dirmode</var> attributes | |||
for <a href="../Types/zipfileset.html"><zipfileset></a>). Unfortunately there is no portable | |||
way to store these permissions. Ant uses the algorithm used | |||
by <a href="http://www.info-zip.org">Info-Zip's</a> implementation of the <code>zip</code> | |||
and <code>unzip</code> commands—these are the default versions of <code>zip</code> | |||
and <code>unzip</code> for many Unix(-like) systems.</p> | |||
way to store these permissions. Ant uses the algorithm used by <a href="http://www.info-zip.org" | |||
target="_top">Info-Zip's</a> implementation of the <code>zip</code> and <code>unzip</code> | |||
commands—these are the default versions of <code>zip</code> and <code>unzip</code> for many | |||
Unix(-like) systems.</p> | |||
<p><strong>Please note that the zip format allows multiple files of the same fully-qualified name to | |||
exist within a single archive. This has been documented as causing various problems for | |||
@@ -143,8 +143,8 @@ extract an Ant generated ZIP archive.</p> | |||
<td>encoding</td> | |||
<td>The character encoding to use for filenames inside the zip file. For a list of possible | |||
values see | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html">Supported | |||
Encodings</a>.</td> | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html" | |||
target="_top">Supported Encodings</a>.</td> | |||
<td>No; defaults to default JVM character encoding</td> | |||
</tr> | |||
<tr> | |||
@@ -29,32 +29,31 @@ | |||
The <code>assertions</code> type enables or disables the Java 1.4 assertions feature, on a whole | |||
Java program, or components of a program. It can be used | |||
in <a href="../Tasks/java.html"><code><java></code></a> | |||
and <a href="../Tasks/junit.html"><code><junit></code></a> to add extra validation to | |||
code. | |||
and <a href="../Tasks/junit.html"><code><junit></code></a> to add extra validation to code. | |||
<p> | |||
Assertions are covered in | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/language/assert.html">Java | |||
SE documentation</a>, and | |||
the <a href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.10">Java | |||
Language Specification</a>. | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/language/assert.html" | |||
target="_top">Java SE documentation</a>, and | |||
the <a href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.10" | |||
target="_top">Java Language Specification</a>. | |||
<p> | |||
The key points to note are that a <code>java.lang.AssertionError</code> is thrown when an | |||
assertion fails, and that the facility is only available on Java 1.4 and later. To enable | |||
assertions one must set <var>source</var>=<q>1.4</q> (or later) in <code><javac></code> | |||
when the source is being compiled, and that the code must contain <code>assert</code> statements | |||
to be tested. The result of such an action is code that neither compiles or runs on earlier | |||
versions of Java. For this reason Apache Ant itself currently contains no assertions. | |||
The key points to note are that a <code>java.lang.AssertionError</code> is thrown when an assertion | |||
fails, and that the facility is only available on Java 1.4 and later. To enable assertions one must | |||
set <var>source</var>=<q>1.4</q> (or later) in <code><javac></code> when the source is being | |||
compiled, and that the code must contain <code>assert</code> statements to be tested. The result of | |||
such an action is code that neither compiles or runs on earlier versions of Java. For this reason | |||
Apache Ant itself currently contains no assertions. | |||
<p> | |||
When assertions are enabled (or disabled) in a task through nested assertions elements, the | |||
class loader or command line is modified with the appropriate options. This means that the JVM | |||
executed must be of version 1.4 or later, even if there are no assertions in the | |||
code. Attempting to enable assertions on earlier JVMs will result in an "Unrecognized option" | |||
error and the JVM will not start. | |||
<p> | |||
When assertions are enabled (or disabled) in a task through nested assertions elements, the class | |||
loader or command line is modified with the appropriate options. This means that the JVM executed | |||
must be of version 1.4 or later, even if there are no assertions in the code. Attempting to enable | |||
assertions on earlier JVMs will result in an "Unrecognized option" error and the JVM will not start. | |||
</p> | |||
<h4>Attributes</h4> | |||
<table class="attr"> | |||
<tr> | |||
@@ -70,18 +69,19 @@ error and the JVM will not start. | |||
</table> | |||
<p> | |||
When system assertions have been neither enabled nor disabled, then the JVM is not given any | |||
assertion information—the default action of the current JVMs is to disable system | |||
assertions. | |||
assertion information—the default action of the current JVMs is to disable system assertions. | |||
</p> | |||
<p> | |||
Note also that there is no apparent documentation for what parts of the JRE come with useful | |||
assertions. | |||
</p> | |||
<h3>Nested elements</h3> | |||
<h4>enable</h4> | |||
<p> | |||
Enable assertions in portions of code. If neither a package nor class is specified, assertions | |||
are turned on in <em>all</em> (user) code. | |||
Enable assertions in portions of code. If neither a package nor class is specified, assertions are | |||
turned on in <em>all</em> (user) code. | |||
</p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -96,10 +96,8 @@ are turned on in <em>all</em> (user) code. | |||
</tr> | |||
<tr> | |||
<td>package</td> | |||
<td> | |||
The name of a package in which to enable assertions on all classes. (Includes subpackages.) | |||
Use <q>...</q> for the anonymous package. | |||
</td> | |||
<td>The name of a package in which to enable assertions on all classes. (Includes subpackages.) | |||
Use <q>...</q> for the anonymous package.</td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
@@ -121,10 +119,8 @@ Disable assertions in portions of code. | |||
</tr> | |||
<tr> | |||
<td>package</td> | |||
<td> | |||
The name of a package in which to disable assertions on all classes. (Includes subpackages.) | |||
Use <q>...</q> for the anonymous package. | |||
</td> | |||
<td>The name of a package in which to disable assertions on all classes. (Includes subpackages.) | |||
Use <q>...</q> for the anonymous package.</td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
@@ -136,63 +132,57 @@ have been enabled in a parent package. | |||
<h5>Example: enable assertions in all user classes</h5> | |||
All classes not in the JRE (i.e. all non-system classes) will have assertions turned on. | |||
<p>All classes not in the JRE (i.e. all non-system classes) will have assertions turned on.</p> | |||
<pre> | |||
<assertions> | |||
<enable/> | |||
</assertions> | |||
</pre> | |||
</assertions></pre> | |||
<h5>Example: enable a single class</h5> | |||
Enable assertions in a class called Test | |||
<p>Enable assertions in a class called Test</p> | |||
<pre> | |||
<assertions> | |||
<enable class="Test"/> | |||
</assertions> | |||
</pre> | |||
</assertions></pre> | |||
<h5>Example: enable a package</h5> | |||
Enable assertions in the <code>org.apache</code> package and all packages starting with | |||
the <code>org.apache.</code> prefix | |||
<p>Enable assertions in the <code>org.apache</code> package and all packages starting with | |||
the <code>org.apache.</code> prefix</p> | |||
<pre> | |||
<assertions> | |||
<enable package="org.apache"/> | |||
</assertions> | |||
</pre> | |||
</assertions></pre> | |||
<h5>Example: System assertions</h5> | |||
Enable system assertions and assertions in all <code>org.apache</code> packages except for Ant | |||
(but including <code>org.apache.tools.ant.Main</code>) | |||
<p>Enable system assertions and assertions in all <code>org.apache</code> packages except for Ant | |||
(but including <code>org.apache.tools.ant.Main</code>)</p> | |||
<pre> | |||
<assertions enableSystemAssertions="true"> | |||
<enable package="org.apache"/> | |||
<disable package="org.apache.tools.ant"/> | |||
<enable class="org.apache.tools.ant.Main"/> | |||
</assertions> | |||
</pre> | |||
</assertions></pre> | |||
<h5>Example: disabled and anonymous package assertions</h5> | |||
Disable system assertions; enable those in the anonymous package | |||
<p>Disable system assertions; enable those in the anonymous package</p> | |||
<pre> | |||
<assertions enableSystemAssertions="false"> | |||
<enable package="..."/> | |||
</assertions> | |||
</pre> | |||
</assertions></pre> | |||
<h5>Example: referenced assertions</h5> | |||
This type is a datatype, so you can declare assertions and use them later | |||
<p>This type is a datatype, so you can declare assertions and use them later</p> | |||
<pre> | |||
<assertions id="project.assertions"> | |||
<enable package="org.apache.test"/> | |||
</assertions> | |||
<assertions refid="project.assertions"/> | |||
</pre> | |||
<assertions refid="project.assertions"/></pre> | |||
</body> | |||
</html> |
@@ -23,15 +23,15 @@ | |||
<body> | |||
<h2 id="fileset">Extension</h2> | |||
<p>Utility type that represents either an available "Optional Package" (formerly known as | |||
"Standard Extension") as described in the manifest of a JAR file, or the requirement for such | |||
an optional package.</p> | |||
<p>Utility type that represents either an available "Optional Package" (formerly known as "Standard | |||
Extension") as described in the manifest of a JAR file, or the requirement for such an optional | |||
package.</p> | |||
<p>Note that this type works with extensions as defined by the "Optional Package" specification. | |||
For more information about optional packages, see the document <em>Optional Package | |||
Versioning</em> in the documentation bundle for your Java Standard Edition package, in | |||
For more information about optional packages, see the document <em>Optional Package Versioning</em> | |||
in the documentation bundle for your Java Standard Edition package, in | |||
file <samp>guide/extensions/versioning.html</samp> or the | |||
online <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp90779">Package | |||
Versioning documentation.</a></p> | |||
online <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp90779" | |||
target="_top">Package Versioning documentation.</a></p> | |||
<h3>Attributes</h3> | |||
<p>The extension type supports the following attributes:</p> | |||
@@ -50,7 +50,7 @@ Versioning documentation.</a></p> | |||
<tr> | |||
<td>specificationVersion</td> | |||
<td>The version of extension specification (must be in dewey decimal aka dotted decimal | |||
notation, eg <q>3.2.4</q>)</td> | |||
notation, eg <q>3.2.4</q>)</td> | |||
<td>no</td> | |||
</tr> | |||
<tr> | |||
@@ -61,7 +61,7 @@ Versioning documentation.</a></p> | |||
<tr> | |||
<td>implementationVersion</td> | |||
<td>The version of extension implementation (must be in dewey decimal aka dotted decimal | |||
notation, eg <q>3.2.4</q>)</td> | |||
notation, eg <q>3.2.4</q>)</td> | |||
<td>no</td> | |||
</tr> | |||
<tr> | |||
@@ -25,11 +25,11 @@ | |||
<h2><a>ExtensionSet</a></h2> | |||
<p>Utility type that represents a set of Extensions.</p> | |||
<p>Note that this type works with extensions as defined by the "Optional Package" specification. | |||
For more information about optional packages, see the document <em>Optional Package | |||
Versioning</em> in the documentation bundle for your Java Standard Edition package, in | |||
For more information about optional packages, see the document <em>Optional Package Versioning</em> | |||
in the documentation bundle for your Java Standard Edition package, in | |||
file <samp>guide/extensions/versioning.html</samp> or online | |||
at <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp90779">Package | |||
Versioning documentation.</a></p> | |||
at <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp90779" | |||
target="_top">Package Versioning documentation.</a></p> | |||
<h3>Nested elements</h3> | |||
@@ -37,13 +37,12 @@ Versioning documentation.</a></p> | |||
<p><a href="extension.html">Extension</a> object to add to set.</p> | |||
<h4>fileset</h4> | |||
<p><a href="fileset.html">FileSet</a>s all files contained contained within set that are jars | |||
and implement an extension are added to extension set.</p> | |||
<p><a href="fileset.html">FileSet</a>s all files contained contained within set that are jars and | |||
implement an extension are added to extension set.</p> | |||
<h4>libfileset</h4> | |||
<p>All files contained contained within set that are jars and implement an extension are added | |||
to extension set. However, the extension information may be modified by attributes of | |||
libfileset.</p> | |||
<p>All files contained contained within set that are jars and implement an extension are added to | |||
extension set. However, the extension information may be modified by attributes of libfileset.</p> | |||
<h4>Examples</h4> | |||
<pre> | |||
@@ -28,22 +28,22 @@ that contained the string <q>blee</q> from the first 10 lines of a text file <sa | |||
(<em>you wouldn't want to filter a binary file</em>) to a file <samp>bar</samp>, you would do | |||
something like:</p> | |||
<pre>cat foo|head -n10|grep blee > bar</pre> | |||
<p>Apache Ant was not flexible enough. There was no way for the <code><copy></code> task | |||
to do something similar. If you wanted the <code><copy></code> task to get the first 10 | |||
lines, you would have had to create special attributes:</p> | |||
<p>Apache Ant was not flexible enough. There was no way for the <code><copy></code> task to | |||
do something similar. If you wanted the <code><copy></code> task to get the first 10 lines, | |||
you would have had to create special attributes:</p> | |||
<pre><copy file="foo" tofile="bar" head="10" contains="blee"/></pre> | |||
<p>The obvious problem thus surfaced: Ant tasks would not be able to accommodate such data | |||
transformation attributes as they would be endless. The task would also not know in which order | |||
these attributes were to be interpreted. That is, must the task execute the contains attribute | |||
first and then the head attribute or vice-versa? What Ant tasks needed was a mechanism to allow | |||
pluggable filter (data transformer) chains. Ant would provide a few filters for which there | |||
have been repeated requests. Users with special filtering needs would be able to easily write | |||
their own and plug them in.</p> | |||
pluggable filter (data transformer) chains. Ant would provide a few filters for which there have | |||
been repeated requests. Users with special filtering needs would be able to easily write their own | |||
and plug them in.</p> | |||
<p>The solution was to refactor data transformation oriented tasks to support FilterChains. A | |||
FilterChain is a group of ordered FilterReaders. Users can define their own FilterReaders by | |||
just extending the <code>java.io.FilterReader</code> class. Such custom FilterReaders can be | |||
easily plugged in as nested elements of <code><filterchain></code> by | |||
FilterChain is a group of ordered FilterReaders. Users can define their own FilterReaders by just | |||
extending the <code>java.io.FilterReader</code> class. Such custom FilterReaders can be easily | |||
plugged in as nested elements of <code><filterchain></code> by | |||
using <code><filterreader></code> elements.</p> | |||
<p>Example:</p> | |||
<pre> | |||
@@ -114,14 +114,13 @@ also.</p> | |||
<h3 id="filterreader">FilterReader</h3> | |||
<p>The <code>filterreader</code> element is the generic way to define a filter. User defined | |||
filter elements are defined in the build file using this. Please note that built in filter | |||
readers can also be defined using this syntax.</p> | |||
<p>The <code>filterreader</code> element is the generic way to define a filter. User defined filter | |||
elements are defined in the build file using this. Please note that built in filter readers can | |||
also be defined using this syntax.</p> | |||
<p>A FilterReader element must be supplied with a class name as an attribute value. The class | |||
resolved by this name must extend <code>java.io.FilterReader</code>. If the custom filter | |||
reader needs to be parameterized, it must | |||
implement <code>org.apache.tools.type.Parameterizable</code>.</p> | |||
resolved by this name must extend <code>java.io.FilterReader</code>. If the custom filter reader | |||
needs to be parameterized, it must implement <code>org.apache.tools.type.Parameterizable</code>.</p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -138,23 +137,22 @@ implement <code>org.apache.tools.type.Parameterizable</code>.</p> | |||
<h4>Nested elements</h4> | |||
<p><code><filterreader></code> supports <code><classpath></code> | |||
and <code><param></code> as nested elements. Each <code><param></code> element may | |||
take in the following attributes—<var>name</var>, <var>type</var> and <var>value</var>.</p> | |||
and <code><param></code> as nested elements. Each <code><param></code> element may take | |||
in the following attributes—<var>name</var>, <var>type</var> and <var>value</var>.</p> | |||
<p>The following FilterReaders are supplied with the default distribution.</p> | |||
<h3 id="classconstants">ClassConstants</h3> | |||
<p>This filters basic constants defined in a Java Class, and outputs them in lines composed of | |||
the format <em>name</em>=<em>value</em>. This filter uses the BCEL library to understand the | |||
Java Class file. See <a href="../install.html#librarydependencies">Library Dependencies</a>.</p> | |||
<p><strong>Important</strong>: This filter is different from most of the other filters. Most of | |||
the filters operate on a sequence of characters. This filter operates on the sequence of bytes | |||
that makes up a class. However the bytes arrive to the filter as a sequence of characters. This | |||
means that one must be careful on the choice of character encoding to use. Most encodings lose | |||
information on conversion from an arbitrary sequence of bytes to characters and back again to | |||
bytes. In particular, the usual default character encodings (CP1252 and UTF-8) do. For this | |||
reason, <em>since Ant 1.7</em>, the character encoding <strong>ISO-8859-1</strong> is used to | |||
convert from characters back to bytes, so one <strong>has</strong> to use this encoding for | |||
reading the java class file.</p> | |||
<p>This filters basic constants defined in a Java Class, and outputs them in lines composed of the | |||
format <em>name</em>=<em>value</em>. This filter uses the BCEL library to understand the Java Class | |||
file. See <a href="../install.html#librarydependencies">Library Dependencies</a>.</p> | |||
<p><strong>Important</strong>: This filter is different from most of the other filters. Most of the | |||
filters operate on a sequence of characters. This filter operates on the sequence of bytes that | |||
makes up a class. However the bytes arrive to the filter as a sequence of characters. This means | |||
that one must be careful on the choice of character encoding to use. Most encodings lose information | |||
on conversion from an arbitrary sequence of bytes to characters and back again to bytes. In | |||
particular, the usual default character encodings (CP1252 and UTF-8) do. For this reason, <em>since | |||
Ant 1.7</em>, the character encoding <strong>ISO-8859-1</strong> is used to convert from characters | |||
back to bytes, so one <strong>has</strong> to use this encoding for reading the Java class file.</p> | |||
<h4>Example</h4> | |||
<p>This loads the basic constants defined in a Java class as Ant properties.</p> | |||
@@ -203,8 +201,8 @@ Unicode escape backslash u plus 4 digits.</p> | |||
</loadproperties></pre> | |||
<h3 id="expandproperties">ExpandProperties</h3> | |||
<p>If the data contains data that represents Ant properties (of the form <code>${...}</code>), | |||
that is substituted with the property's actual value.</p> | |||
<p>If the data contains data that represents Ant properties (of the form <code>${...}</code>), that | |||
is substituted with the property's actual value.</p> | |||
<h4>Example</h4> | |||
@@ -663,8 +661,8 @@ them.</p> | |||
<h3 id="striplinecomments">StripLineComments</h3> | |||
<p>This filter removes all those lines that begin with strings that represent comments as | |||
specified by the user.</p> | |||
<p>This filter removes all those lines that begin with strings that represent comments as specified | |||
by the user.</p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -764,8 +762,8 @@ and <q>//</q></p> | |||
<p> | |||
<h4>Background</h4> | |||
<p>With HeadFilter and TailFilter you can extract each part of a text file you want. This | |||
graphic shows the dependencies:</p> | |||
<p>With HeadFilter and TailFilter you can extract each part of a text file you want. This graphic | |||
shows the dependencies:</p> | |||
<table> | |||
<tr> | |||
@@ -1120,15 +1118,14 @@ following are understood: <q>\n</q>, <q>\r</q>, <q>\f</q>, <q>\t</q> and <q>\\</ | |||
</p> | |||
<p> | |||
Some of the filters may be used directly within a <code>filterchain</code>. In this case | |||
a <code>tokenfilter</code> is created implicitly. An extra attribute <var>byline</var> is added | |||
to the filter to specify whether to use a <code>linetokenizer</code> | |||
(<var>byline</var>=<q>true</q>) or a <code>filetokenizer</code> | |||
(<var>byline</var>=<q>false</q>). The default is <q>true</q>. | |||
a <code>tokenfilter</code> is created implicitly. An extra attribute <var>byline</var> is added to | |||
the filter to specify whether to use a <code>linetokenizer</code> (<var>byline</var>=<q>true</q>) or | |||
a <code>filetokenizer</code> (<var>byline</var>=<q>false</q>). The default is <q>true</q>. | |||
</p> | |||
<h4 id="linetokenizer">LineTokenizer</h4> | |||
<p>This tokenizer splits the input into lines. The tokenizer delimits lines | |||
by <q>\r</q>, <q>\n</q> or <q>\r\n</q>. This is the default tokenizer.</p> | |||
<p>This tokenizer splits the input into lines. The tokenizer delimits lines by <q>\r</q>, <q>\n</q> | |||
or <q>\r\n</q>. This is the default tokenizer.</p> | |||
<table class="attr"> | |||
<tr> | |||
<th>Attribute</th> | |||
@@ -1451,8 +1448,8 @@ the <a href="../Tasks/native2ascii.html">native2ascii</a> task.</p> | |||
<p> | |||
This is an optional filter that executes a script in a <a href="https://jakarta.apache.org/bsf" | |||
target="_top">Apache BSF</a> | |||
or <a href="https://jcp.org/aboutJava/communityprocess/maintenance/jsr223/223ChangeLog.html">JSR | |||
223</a> supported language. | |||
or <a href="https://jcp.org/aboutJava/communityprocess/maintenance/jsr223/223ChangeLog.html" | |||
target="_top">JSR 223</a> supported language. | |||
</p> | |||
<p> | |||
See the <a href="../Tasks/script.html">Script</a> task for an explanation of scripts and | |||
@@ -1460,8 +1457,8 @@ dependencies. | |||
</p> | |||
<p> | |||
The script is provided with an object <samp>self</samp> that has <code>getToken()</code> | |||
and <code>setToken(String)</code> methods. The <code>getToken()</code> method returns the | |||
current token. The <code>setToken(String)</code> method replaces the current token. | |||
and <code>setToken(String)</code> methods. The <code>getToken()</code> method returns the current | |||
token. The <code>setToken(String)</code> method replaces the current token. | |||
</p> | |||
<p> | |||
This filter may be used directly within a <code>filterchain</code>. | |||
@@ -1474,14 +1471,14 @@ This filter may be used directly within a <code>filterchain</code>. | |||
</tr> | |||
<tr> | |||
<td>language</td> | |||
<td>Programming language the script is written in. Must be a supported Apache BSF or | |||
JSR 223 language</td> | |||
<td>Programming language the script is written in. Must be a supported Apache BSF or JSR 223 | |||
language</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td>manager</td> | |||
<td>Script engine manager to use. See the <a href="../Tasks/script.html">script</a> | |||
task for using this attribute.</td> | |||
<td>Script engine manager to use. See the <a href="../Tasks/script.html">script</a> task for | |||
using this attribute.</td> | |||
<td>No; default is <q>auto</q></td> | |||
</tr> | |||
<tr> | |||
@@ -1507,8 +1504,8 @@ This filter may be used directly within a <code>filterchain</code>. | |||
</tr> | |||
<tr> | |||
<td>classpathref</td> | |||
<td>The classpath to use, given as a <a href="../using.html#references">reference</a> to a | |||
path defined elsewhere. | |||
<td>The classpath to use, given as a <a href="../using.html#references">reference</a> to a path | |||
defined elsewhere. | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
@@ -26,16 +26,15 @@ | |||
<h2 id="mapper">Mapping File Names</h2> | |||
<p>Some tasks take source files and create target files. Depending on the task, it may be quite | |||
obvious which name a target file will have (using <a href="../Tasks/javac.html">javac</a>, you | |||
know there will be <samp>.class</samp> files for your <samp>.java</samp> files)—in other | |||
cases you may want to specify the target files, either to help Apache Ant or to get an extra bit | |||
of functionality.</p> | |||
obvious which name a target file will have (using <a href="../Tasks/javac.html">javac</a>, you know | |||
there will be <samp>.class</samp> files for your <samp>.java</samp> files)—in other cases you | |||
may want to specify the target files, either to help Apache Ant or to get an extra bit of | |||
functionality.</p> | |||
<p>While source files are usually specified as <a href="fileset.html">fileset</a>s, you don't | |||
specify target files directly—instead, you tell Ant how to find the target file(s) for one | |||
source file. An instance of <code>org.apache.tools.ant.util.FileNameMapper</code> is responsible | |||
for this. It constructs target file names based on rules that can be parameterized | |||
with <var>from</var> and <var>to</var> attributes—the exact meaning of which is | |||
implementation-dependent.</p> | |||
source file. An instance of <code>org.apache.tools.ant.util.FileNameMapper</code> is responsible for | |||
this. It constructs target file names based on rules that can be parameterized with <var>from</var> | |||
and <var>to</var> attributes—the exact meaning of which is implementation-dependent.</p> | |||
<p>These instances are defined in <code><mapper></code> elements with the following | |||
attributes:</p> | |||
<table class="attr"> | |||
@@ -76,37 +75,37 @@ attributes:</p> | |||
<td>Depends on implementation</td> | |||
</tr> | |||
</table> | |||
<p>Note that Ant will not automatically convert <q>/</q> or <q>\</q> characters in | |||
the <var>to</var> and <var>from</var> attributes to the correct directory separator of your | |||
current platform. If you need to specify this separator, use <code>${file.separator}</code> | |||
instead. For the regexp mapper, <code>${file.separator}</code> will not work, as on Windows it | |||
is the <q>\</q> character, and this is an escape character for regular expressions, one should | |||
use the <code>handledirsep</code> attribute instead. | |||
<p>Note that Ant will not automatically convert <q>/</q> or <q>\</q> characters in the <var>to</var> | |||
and <var>from</var> attributes to the correct directory separator of your current platform. If you | |||
need to specify this separator, use <code>${file.separator}</code> instead. For the regexp | |||
mapper, <code>${file.separator}</code> will not work, as on Windows it is the <q>\</q> character, | |||
and this is an escape character for regular expressions, one should use | |||
the <code>handledirsep</code> attribute instead. | |||
</p> | |||
<h3>Parameters specified as nested elements</h3> | |||
<p>The classpath can be specified via a nested <code><classpath></code>, as | |||
well—that is, a <a href="../using.html#path">path</a>-like structure.</p> | |||
<p>The classpath can be specified via a nested <code><classpath></code>, as well—that | |||
is, a <a href="../using.html#path">path</a>-like structure.</p> | |||
<p><em>Since Ant 1.7.0</em>, nested File Mappers can be supplied via | |||
either <code><mapper></code> elements | |||
or <a href="../Tasks/typedef.html"><code><typedef></code></a>'d implementations | |||
of <code>org.apache.tools.ant.util.FileNameMapper</code>. If nested File Mappers are specified | |||
by either means, the mapper will be implicitly configured as | |||
a <a href="#composite-mapper">composite mapper</a>.</p> | |||
of <code>org.apache.tools.ant.util.FileNameMapper</code>. If nested File Mappers are specified by | |||
either means, the mapper will be implicitly configured as a <a href="#composite-mapper">composite | |||
mapper</a>.</p> | |||
<h3>The built-in mapper types</h3> | |||
<p>All built-in mappers are case-sensitive.</p> | |||
<p><em>Since Ant 1.7.0</em>, each of the built-in mapper implementation types is directly | |||
accessible using a specific tagname. This makes it possible for filename mappers to support | |||
attributes in addition to the generally available <var>to</var> and <var>from</var>.<br/> | |||
The <code><mapper type|classname="..."></code> usage form remains valid for | |||
reasons of backward compatibility.</p> | |||
<p><em>Since Ant 1.7.0</em>, each of the built-in mapper implementation types is directly accessible | |||
using a specific tagname. This makes it possible for filename mappers to support attributes in | |||
addition to the generally available <var>to</var> and <var>from</var>.<br/> The <code><mapper | |||
type|classname="..."></code> usage form remains valid for reasons of backward | |||
compatibility.</p> | |||
<!-- --> | |||
<!-- Identity Mapper --> | |||
<!-- --> | |||
<h4 id="identity-mapper">identity</h4> | |||
<p>The target file name is identical to the source file name. Both <var>to</var> | |||
and <var>from</var> will be ignored.</p> | |||
<p>The target file name is identical to the source file name. Both <var>to</var> and <var>from</var> | |||
will be ignored.</p> | |||
<h5>Examples</h5> | |||
<pre> | |||
<mapper type="identity"/> | |||
@@ -139,8 +138,8 @@ and <var>from</var> will be ignored.</p> | |||
<!-- --> | |||
<h4 id="flatten-mapper">flatten</h4> | |||
<p>The target file name is identical to the source file name, with all leading directory | |||
information stripped off. Both <var>to</var> and <var>from</var> will be ignored.</p> | |||
<p>The target file name is identical to the source file name, with all leading directory information | |||
stripped off. Both <var>to</var> and <var>from</var> will be ignored.</p> | |||
<h5>Examples</h5> | |||
<pre> | |||
<mapper type="flatten"/> | |||
@@ -173,8 +172,8 @@ information stripped off. Both <var>to</var> and <var>from</var> will be ignored | |||
<!-- --> | |||
<h4 id="merge-mapper">merge</h4> | |||
<p>The target file name will always be the same, as defined | |||
by <var>to</var>—<var>from</var> will be ignored.</p> | |||
<p>The target file name will always be the same, as defined by <var>to</var>—<var>from</var> | |||
will be ignored.</p> | |||
<h5>Examples</h5> | |||
<pre> | |||
<mapper type="merge" to="archive.tar"/> | |||
@@ -207,11 +206,11 @@ by <var>to</var>—<var>from</var> will be ignored.</p> | |||
<!-- --> | |||
<h4 id="glob-mapper">glob</h4> | |||
<p>Both <var>to</var> and <var>from</var> are required and define patterns that may contain at | |||
most one <q>*</q>. For each source file that matches the <var>from</var> pattern, a target file | |||
name will be constructed from the <var>to</var> pattern by substituting the <q>*</q> in | |||
the <var>to</var> pattern with the text that matches the <q>*</q> in the <var>from</var> | |||
pattern. Source file names that don't match the <var>from</var> pattern will be ignored.</p> | |||
<p>Both <var>to</var> and <var>from</var> are required and define patterns that may contain at most | |||
one <q>*</q>. For each source file that matches the <var>from</var> pattern, a target file name will | |||
be constructed from the <var>to</var> pattern by substituting the <q>*</q> in the <var>to</var> | |||
pattern with the text that matches the <q>*</q> in the <var>from</var> pattern. Source file names | |||
that don't match the <var>from</var> pattern will be ignored.</p> | |||
<h5>Examples</h5> | |||
<pre> | |||
<mapper type="glob" from="*.java" to="*.java.bak"/> | |||
@@ -273,9 +272,8 @@ pattern. Source file names that don't match the <var>from</var> pattern will be | |||
<tr> | |||
<td>casesensitive</td> | |||
<td> | |||
This attribute can be <q>true</q> or <q>false</q>. If this is <q>false</q>, the mapper | |||
will ignore case when matching the glob pattern. | |||
<em>Since Ant 1.6.3</em> | |||
This attribute can be <q>true</q> or <q>false</q>. If this is <q>false</q>, the mapper will | |||
ignore case when matching the glob pattern. <em>Since Ant 1.6.3</em> | |||
</td> | |||
<td>No; default is <q>true</q></td> | |||
</tr> | |||
@@ -284,8 +282,8 @@ pattern. Source file names that don't match the <var>from</var> pattern will be | |||
<td> | |||
This attribute can be <q>true</q> or <q>false</q>. If this is specified, the mapper will | |||
ignore the difference between the normal directory separator characters—<q>\</q> | |||
and <q>/</q>. This attribute is useful for cross-platform build files. | |||
<em>Since Ant 1.6.3</em> | |||
and <q>/</q>. This attribute is useful for cross-platform build files. <em>Since Ant | |||
1.6.3</em> | |||
<td>No; default is <q>false</q></td> | |||
</tr> | |||
</table> | |||
@@ -318,14 +316,14 @@ pattern. Source file names that don't match the <var>from</var> pattern will be | |||
<h4 id="regexp-mapper">regexp</h4> | |||
<p>Both <var>to</var> and <var>from</var> are required and define regular expressions. If the | |||
source file name (as a whole or in part) matches the <var>from</var> pattern, the target file | |||
name will be constructed from the <var>to</var> pattern, using <code>\0</code> | |||
to <code>\9</code> as back-references for the full match (<code>\0</code>) or the matches of the | |||
subexpressions in parentheses. The <var>to</var> pattern determines the <strong>whole</strong> | |||
file name, so if you wanted to replace the extension of a file you should not | |||
use <code>from="\.old$" to=".new"</code> but rather <code>from="(.*)\.old$" to="\1.new"</code> | |||
(or rather use a glob mapper in this case).</p> | |||
<p>Both <var>to</var> and <var>from</var> are required and define regular expressions. If the source | |||
file name (as a whole or in part) matches the <var>from</var> pattern, the target file name will be | |||
constructed from the <var>to</var> pattern, using <code>\0</code> to <code>\9</code> as | |||
back-references for the full match (<code>\0</code>) or the matches of the subexpressions in | |||
parentheses. The <var>to</var> pattern determines the <strong>whole</strong> file name, so if you | |||
wanted to replace the extension of a file you should not use <code>from="\.old$" to=".new"</code> | |||
but rather <code>from="(.*)\.old$" to="\1.new"</code> (or rather use a glob mapper in this | |||
case).</p> | |||
<p>Source files not matching the <var>from</var> pattern will be ignored.</p> | |||
@@ -334,30 +332,29 @@ use <code>from="\.old$" to=".new"</code> but rather <code>from="(.*)\.old$" to=" | |||
<p>The regexp mapper needs a supporting library and an implementation | |||
of <code>org.apache.tools.ant.util.regexp.RegexpMatcher</code> that hides the specifics of the | |||
library. <em>Since Ant 1.8.0</em>, Java 1.4 or later is required, so the implementation based on | |||
the <code>java.util.regex</code> package is always be available. You can still use the now | |||
retired Jakarta ORO or Jakarta Regex instead if your provide the corresponding jar in | |||
the <code>java.util.regex</code> package is always be available. You can still use the now retired | |||
Jakarta ORO or Jakarta Regex instead if your provide the corresponding jar in | |||
your <code>CLASSPATH</code>.</p> | |||
<p>For information about using <a href="https://savannah.gnu.org/projects/gnu-regexp/" | |||
target="_top">gnu.regexp</a> or <a href="https://github.com/kzn/regex4j/" | |||
target="_top">gnu.rex</a> with Ant, | |||
see <a href="https://marc.info/?l=ant-dev&m=97550753813481&w=2" target="_top">this</a> | |||
article. Please keep in mind that <a href="http://tusker.org/regex/regex_benchmark.html">your | |||
mileage may vary</a> with different regexp engines.</p> | |||
<p>If you want to use one of the <a href="../install.html#librarydependencies">regular | |||
expression libraries</a> other than <code>java.util.regex</code> you need to also use the | |||
corresponding <code>ant-[apache-oro, apache-regexp].jar</code> from the Ant release you are | |||
using. Make sure that both will be loaded from the same classpath, that is either put them into | |||
target="_top">gnu.regexp</a> or <a href="https://github.com/kzn/regex4j/" target="_top">gnu.rex</a> | |||
with Ant, see <a href="https://marc.info/?l=ant-dev&m=97550753813481&w=2" target="_top">this</a> | |||
article. Please keep in mind that <a href="http://tusker.org/regex/regex_benchmark.html" | |||
target="_top">your mileage may vary</a> with different regexp engines.</p> | |||
<p>If you want to use one of the <a href="../install.html#librarydependencies">regular expression | |||
libraries</a> other than <code>java.util.regex</code> you need to also use the | |||
corresponding <code>ant-[apache-oro, apache-regexp].jar</code> from the Ant release you are using. | |||
Make sure that both will be loaded from the same classpath, that is either put them into | |||
your <code>CLASSPATH</code>, <samp>ANT_HOME/lib</samp> directory or a | |||
nested <code><classpath></code> element of the mapper—you cannot | |||
have <code>ant-[apache-oro, apache-regexp].jar</code> in <samp>ANT_HOME/lib</samp> and the | |||
library in a nested <code><classpath></code>.</p> | |||
have <code>ant-[apache-oro, apache-regexp].jar</code> in <samp>ANT_HOME/lib</samp> and the library | |||
in a nested <code><classpath></code>.</p> | |||
<p>Ant will choose the regular expression library based on the following algorithm:</p> | |||
<ul> | |||
<li>If the system property <code>ant.regexp.matcherimpl</code> has been set, it is taken as the | |||
name of the class implementing <code>org.apache.tools.ant.util.regexp.RegexpMatcher</code> that | |||
should be used.</li> | |||
<li>If the system property <code>ant.regexp.matcherimpl</code> has been set, it is taken as the name | |||
of the class implementing <code>org.apache.tools.ant.util.regexp.RegexpMatcher</code> that should be | |||
used.</li> | |||
<li>If it has not been set, uses the JDK 1.4 classes.</li> | |||
</ul> | |||
@@ -472,8 +469,8 @@ should be used.</li> | |||
<tr> | |||
<td>casesensitive</td> | |||
<td> | |||
This attribute can be <q>true</q> or <q>false</q>. If this is <q>false</q>, the mapper | |||
will ignore case when matching the pattern. | |||
This attribute can be <q>true</q> or <q>false</q>. If this is <q>false</q>, the mapper will | |||
ignore case when matching the pattern. | |||
<em>Since Ant 1.6.3</em> | |||
</td> | |||
<td>No; default is <q>true</q></td> | |||
@@ -514,9 +511,9 @@ should be used.</li> | |||
<h4 id="package-mapper">package</h4> | |||
<p>Sharing the same syntax as the <a href="#glob-mapper">glob mapper</a>, the package mapper | |||
replaces directory separators found in the matched source pattern with dots in the target | |||
pattern placeholder. This mapper is particularly useful in combination | |||
with <code><uptodate></code> and <code><junit></code> output.</p> | |||
replaces directory separators found in the matched source pattern with dots in the target pattern | |||
placeholder. This mapper is particularly useful in combination with <code><uptodate></code> | |||
and <code><junit></code> output.</p> | |||
<p>The <var>to</var> and <var>from</var> attributes are both required.</p> | |||
<h5>Example</h5> | |||
<pre> | |||
@@ -543,9 +540,9 @@ with <code><uptodate></code> and <code><junit></code> output.</p> | |||
<h4 id="unpackage-mapper">unpackage</h4> | |||
<p><em>Since Ant 1.6.0</em></p> | |||
<p>This mapper is the inverse of the <a href="#package-mapper">package</a> mapper. It replaces | |||
the dots in a package name with directory separators. This is useful for matching XML formatter | |||
results against their JUnit test test cases. The mapper shares the sample syntax as | |||
<p>This mapper is the inverse of the <a href="#package-mapper">package</a> mapper. It replaces the | |||
dots in a package name with directory separators. This is useful for matching XML formatter results | |||
against their JUnit test test cases. The mapper shares the sample syntax as | |||
the <a href="#glob-mapper">glob mapper</a>.</p> | |||
<p>The <var>to</var> and <var>from</var> attributes are both required.</p> | |||
<h5>Example</h5> | |||
@@ -572,8 +569,8 @@ the <a href="#glob-mapper">glob mapper</a>.</p> | |||
<p>This mapper implementation can contain multiple nested mappers. File mapping is performed by | |||
passing the source filename to each nested <code><mapper></code> in turn, returning all | |||
results. The <var>to</var> and <var>from</var> attributes are ignored.</p> | |||
<p><em>Since Ant 1.8.0</em>, the order of the mapped results is the same as the order of the | |||
nested mappers; prior to Ant 1.8.0 the order has been undefined.</p> | |||
<p><em>Since Ant 1.8.0</em>, the order of the mapped results is the same as the order of the nested | |||
mappers; prior to Ant 1.8.0 the order has been undefined.</p> | |||
<h5>Examples</h5> | |||
<pre> | |||
<compositemapper> | |||
@@ -603,9 +600,9 @@ attribute.</p> | |||
<h4 id="chained-mapper">chained</h4> | |||
<p><em>Since Ant 1.7.0</em></p> | |||
<p>This mapper implementation can contain multiple nested mappers. File mapping is performed by | |||
passing the source filename to the first nested mapper, its results to the second, and so on. | |||
The target filenames generated by the last nested mapper comprise the ultimate results of the | |||
mapping operation. The <var>to</var> and <var>from</var> attributes are ignored.</p> | |||
passing the source filename to the first nested mapper, its results to the second, and so on. The | |||
target filenames generated by the last nested mapper comprise the ultimate results of the mapping | |||
operation. The <var>to</var> and <var>from</var> attributes are ignored.</p> | |||
<h5>Examples</h5> | |||
<pre> | |||
<chainedmapper> | |||
@@ -693,8 +690,8 @@ file name.</p> | |||
<p><em>Since Ant 1.7</em></p> | |||
<p>This mapper executes a script written in <a href="https://jakarta.apache.org/bsf" | |||
target="_top">Apache BSF</a> | |||
or <a href="https://jcp.org/aboutJava/communityprocess/maintenance/jsr223/223ChangeLog.html">JSR | |||
223</a> supported language, once per file to map.</p> | |||
or <a href="https://jcp.org/aboutJava/communityprocess/maintenance/jsr223/223ChangeLog.html" | |||
target="_top">JSR 223</a> supported language, once per file to map.</p> | |||
<p>The script can be declared inline or in a specified file.</p> | |||
<p>See the <a href="../Tasks/script.html">Script</a> task for an explanation of scripts and | |||
dependencies.</p> | |||
@@ -800,9 +797,9 @@ every source file, with the list of mapped names reset after every invocation.</ | |||
<h4 id="firstmatch-mapper">firstmatchmapper</h4> | |||
<p><em>Since Ant 1.8.0</em></p> | |||
<p>This mapper supports an arbitrary number of nested mappers and returns the results of the | |||
first mapper that matches. This is different from <a href="#composite-mapper">composite | |||
mapper</a> which collects the results of all matching children.</p> | |||
<p>This mapper supports an arbitrary number of nested mappers and returns the results of the first | |||
mapper that matches. This is different from <a href="#composite-mapper">composite mapper</a> which | |||
collects the results of all matching children.</p> | |||
<h5>Examples</h5> | |||
<pre> | |||
<firstmatchmapper> | |||
@@ -846,8 +843,7 @@ attribute.</p> | |||
</tr> | |||
</table> | |||
<p>The cutdirsmapper has no corresponding <code><mapper <var>type</var>></code> | |||
attribute.</p> | |||
<p>The cutdirsmapper has no corresponding <code><mapper <var>type</var>></code> attribute.</p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -43,25 +43,18 @@ Regexp represents a regular expression. | |||
<h3>Examples</h3> | |||
<pre><regexp id="myregexp" pattern="alpha(.+)beta"/></pre> | |||
<p> | |||
Defines a regular expression for later use with <var>id</var> <q>myregexp</q>. | |||
</p> | |||
<p>Defines a regular expression for later use with <var>id</var> <q>myregexp</q>.</p> | |||
<pre><regexp refid="myregexp"/></pre> | |||
<p> | |||
Use the regular expression with <var>id</var> <q>myregexp</q>. | |||
</p> | |||
<p>Use the regular expression with <var>id</var> <q>myregexp</q>.</p> | |||
<h3 id="implementation">Choice of regular expression implementation</h3> | |||
<p> | |||
Apache Ant comes with wrappers for | |||
<p>Apache Ant comes with wrappers for | |||
the <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/package-summary.html" | |||
target="_top">java.util.regex | |||
package</a>, <a href="https://attic.apache.org/projects/jakarta-regexp.html" | |||
target="_top">jakarta-regexp</a> | |||
and <a href="https://attic.apache.org/projects/jakarta-oro.html" target="_top">jakarta-ORO</a>, | |||
see <a href="../install.html#librarydependencies">installation dependencies</a> concerning the | |||
supporting libraries.</p> | |||
<p> | |||
The property <code>ant.regexp.regexpimpl</code> governs which regular expression implementation | |||
target="_top">jakarta-regexp</a> and <a href="https://attic.apache.org/projects/jakarta-oro.html" | |||
target="_top">jakarta-ORO</a>, see <a href="../install.html#librarydependencies">installation | |||
dependencies</a> concerning the supporting libraries.</p> | |||
<p>The property <code>ant.regexp.regexpimpl</code> governs which regular expression implementation | |||
will be chosen. Possible values for this property are:</p> | |||
<ul> | |||
<li><code>org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp</code></li> | |||
@@ -76,27 +69,23 @@ available.</p> | |||
There are cross-platform issues for matches related to line terminator. For example if you | |||
use <q>$</q> to anchor your regular expression on the end of a line the results might be very | |||
different depending on both your platform and the regular expression library you use. It | |||
is <em>highly recommended</em> that you test your pattern on both Unix and Windows platforms | |||
before you rely on it.</p> | |||
is <em>highly recommended</em> that you test your pattern on both Unix and Windows platforms before | |||
you rely on it.</p> | |||
<ul> | |||
<li>Jakarta Oro defines a line terminator as <q>\n</q> and is consistent with Perl.</li> | |||
<li>Jakarta RegExp uses a system-dependent line terminator.</li> | |||
<li>JDK 1.4 uses <q>\n</q>, <q>\r\n</q>, <q>\u0085</q>, <q>\u2028</q>, <q>\u2029</q> as a | |||
default but is configured in the wrapper to use only <q>\n</q> (UNIX_LINE)</li> | |||
</ul> | |||
<p> | |||
<em>We used to recommend that you use Jakarta ORO but since its development has been retired | |||
Java's built-in regex package is likely the best choice going forward.</em> | |||
</p> | |||
<p><em>We used to recommend that you use Jakarta ORO but since its development has been retired | |||
Java's built-in regex package is likely the best choice going forward.</em></p> | |||
<h3>Usage</h3> The following tasks and types use the Regexp type: | |||
<ul> | |||
<li><a href="../Tasks/replaceregexp.html">ReplaceRegExp task</a></li> | |||
<li><a href="filterchain.html#linecontainsregexp">LineContainsRegexp filter</a></li> | |||
</ul> | |||
<p> | |||
These string filters also use the mechanism of regexp to choose a regular expression | |||
implementation: | |||
</p> | |||
<p>These string filters also use the mechanism of regexp to choose a regular expression | |||
implementation:</p> | |||
<ul> | |||
<li><a href="filterchain.html#containsregex">ContainsRegex string filter</a></li> | |||
<li><a href="filterchain.html#replaceregex">ReplaceRegex string filter</a></li> | |||
@@ -24,21 +24,20 @@ | |||
<body> | |||
<h2>Selectors</h2> | |||
<p>Selectors are a mechanism whereby the files that make up a <code><fileset></code> | |||
can be selected based on criteria other than filename as provided by | |||
<p>Selectors are a mechanism whereby the files that make up a <code><fileset></code> can | |||
be selected based on criteria other than filename as provided by | |||
the <code><include></code> and <code><exclude></code> tags.</p> | |||
<h3>How to use a Selector</h3> | |||
<p>A selector is an element of FileSet, and appears within it. It can also be defined | |||
outside of any target by using the <code><selector></code> tag and then using it as a | |||
reference.</p> | |||
<p>A selector is an element of FileSet, and appears within it. It can also be defined outside of | |||
any target by using the <code><selector></code> tag and then using it as a reference.</p> | |||
<p>Different selectors have different attributes. Some selectors can contain other | |||
selectors, and these are called <a href="#selectcontainers"><code>Selector | |||
Containers</code></a>. There is also a category of selectors that allow user-defined | |||
extensions, called <a href="#customselect"><code>Custom Selectors</code></a>. The ones | |||
built in to Apache Ant are called <a href="#coreselect"><code>Core Selectors</code></a>.</p> | |||
<p>Different selectors have different attributes. Some selectors can contain other selectors, | |||
and these are called <a href="#selectcontainers"><code>Selector Containers</code></a>. There is | |||
also a category of selectors that allow user-defined extensions, | |||
called <a href="#customselect"><code>Custom Selectors</code></a>. The ones built in to Apache | |||
Ant are called <a href="#coreselect"><code>Core Selectors</code></a>.</p> | |||
<h3 id="coreselect">Core Selectors</h3> | |||
@@ -52,29 +51,29 @@ | |||
contain a particular text string</li> | |||
<li><a href="#dateselect"><code><date></code></a>—Select files that have been | |||
modified either before or after a particular date and time</li> | |||
<li><a href="#dependselect"><code><depend></code></a>—Select files that have | |||
been modified more recently than equivalent files elsewhere</li> | |||
<li><a href="#depthselect"><code><depth></code></a>—Select files that appear | |||
so many directories down in a directory tree</li> | |||
<li><a href="#differentselect"><code><different></code></a>—Select files that | |||
are different from those elsewhere</li> | |||
<li><a href="#filenameselect"><code><filename></code></a>—Select files whose | |||
name matches a particular pattern. Equivalent to the include and exclude elements of a | |||
<li><a href="#dependselect"><code><depend></code></a>—Select files that have been | |||
modified more recently than equivalent files elsewhere</li> | |||
<li><a href="#depthselect"><code><depth></code></a>—Select files that appear so | |||
many directories down in a directory tree</li> | |||
<li><a href="#differentselect"><code><different></code></a>—Select files that are | |||
different from those elsewhere</li> | |||
<li><a href="#filenameselect"><code><filename></code></a>—Select files whose name | |||
matches a particular pattern. Equivalent to the include and exclude elements of a | |||
patternset.</li> | |||
<li><a href="#presentselect"><code><present></code></a>—Select files that | |||
either do or do not exist in some other location</li> | |||
<li><a href="#regexpselect"><code><containsregexp></code></a>—Select files | |||
that match a regular expression</li> | |||
<li><a href="#sizeselect"><code><size></code></a>—Select files that are larger | |||
or smaller than a particular number of bytes.</li> | |||
<li><a href="#presentselect"><code><present></code></a>—Select files that either | |||
do or do not exist in some other location</li> | |||
<li><a href="#regexpselect"><code><containsregexp></code></a>—Select files that | |||
match a regular expression</li> | |||
<li><a href="#sizeselect"><code><size></code></a>—Select files that are larger or | |||
smaller than a particular number of bytes.</li> | |||
<li><a href="#typeselect"><code><type></code></a>—Select files that are either | |||
regular files or directories.</li> | |||
<li><a href="#modified"><code><modified></code></a>—Select files if the return | |||
value of the configured algorithm is different from that stored in a cache.</li> | |||
<li><a href="#signedselector"><code><signedselector></code></a>—Select files | |||
if they are signed, and optionally if they have a signature of a certain name.</li> | |||
<li><a href="#scriptselector"><code><scriptselector></code></a>—Use a BSF or | |||
JSR 223 scripting language to create your own selector</li> | |||
<li><a href="#signedselector"><code><signedselector></code></a>—Select files if | |||
they are signed, and optionally if they have a signature of a certain name.</li> | |||
<li><a href="#scriptselector"><code><scriptselector></code></a>—Use a BSF or JSR | |||
223 scripting language to create your own selector</li> | |||
<li><a href="#readable"><code><readable></code></a>—Select files if they are | |||
readable.</li> | |||
<li><a href="#writable"><code><writable></code></a>—Select files if they are | |||
@@ -82,16 +81,15 @@ | |||
<li><a href="#executable"><code><executable></code></a>—Select files if they | |||
are executable.</li> | |||
<li><a href="#symlink"><code><symlink></code></a>—Select files if they are | |||
symlink.</li> | |||
<li><a href="#ownedBy"><code><ownedBy></code></a>—Select files if they are | |||
owned by a given user.</li> | |||
symlinks.</li> | |||
<li><a href="#ownedBy"><code><ownedBy></code></a>—Select files if they are owned | |||
by a given user.</li> | |||
</ul> | |||
<h4 id="containsselect">Contains Selector</h4> | |||
<p>The <code><contains></code> tag in a FileSet limits the files defined by that | |||
fileset to only those which contain the string specified by the <code>text</code> | |||
attribute.</p> | |||
<p>The <code><contains></code> tag in a FileSet limits the files defined by that fileset | |||
to only those which contain the string specified by the <code>text</code> attribute.</p> | |||
<p>The <code><contains></code> selector can be used as a ResourceSelector (see | |||
the <a href="resources.html#restrict"><restrict></a> ResourceCollection).</p> | |||
@@ -115,8 +113,8 @@ | |||
</tr> | |||
<tr> | |||
<td>ignorewhitespace</td> | |||
<td>Whether to eliminate whitespace before checking for the string in | |||
the <var>text</var> attribute.</td> | |||
<td>Whether to eliminate whitespace before checking for the string in the <var>text</var> | |||
attribute.</td> | |||
<td>No; default is <q>false</q></td> | |||
</tr> | |||
<tr> | |||
@@ -139,9 +137,9 @@ | |||
<h4 id="dateselect">Date Selector</h4> | |||
<p>The <code><date></code> tag in a FileSet will put a limit on the files specified by | |||
the include tag, so that tags whose last modified date does not meet the date limits | |||
specified by the selector will not end up being selected.</p> | |||
<p>The <code><date></code> tag in a FileSet will put a limit on the files specified by the | |||
include tag, so that tags whose last modified date does not meet the date limits specified by | |||
the selector will not end up being selected.</p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -151,9 +149,9 @@ | |||
</tr> | |||
<tr> | |||
<td>datetime</td> | |||
<td>Specifies the date and time to test for. Should be in the format <q>MM/dd/yyyy | |||
hh:mm a</q> using the US locale, or an alternative pattern specified via | |||
the <var>pattern</var> attribute. | |||
<td>Specifies the date and time to test for. Should be in the format <q>MM/dd/yyyy hh:mm | |||
a</q> using the US locale, or an alternative pattern specified via the <var>pattern</var> | |||
attribute. | |||
</td> | |||
<td rowspan="2">At least one of the two</td> | |||
</tr> | |||
@@ -169,17 +167,19 @@ | |||
whose last modified times should be before, after, or equal to the specified | |||
value. Acceptable values for this attribute are: | |||
<ul> | |||
<li><q>before</q>—select files whose last modified date is before the indicated date</li> | |||
<li><q>after</q>—select files whose last modified date is after the indicated date</li> | |||
<li><q>equal</q>—select files whose last modified date is this exact date</li> | |||
<li><q>before</q>—select files whose last modified date is before the indicated | |||
date</li> | |||
<li><q>after</q>—select files whose last modified date is after the indicated | |||
date</li> | |||
<li><q>equal</q>—select files whose last modified date is this exact date</li> | |||
</ul></td> | |||
<td>No; default is <q>equal</q></td> | |||
</tr> | |||
<tr> | |||
<td>granularity</td> | |||
<td>The number of milliseconds leeway to use when comparing file modification | |||
times. This is needed because not every file system supports tracking the last | |||
modified time to the millisecond level.</td> | |||
<td>The number of milliseconds leeway to use when comparing file modification times. This is | |||
needed because not every file system supports tracking the last modified time to the | |||
millisecond level.</td> | |||
<td>No; default is 0 milliseconds, or 2 seconds on DOS systems</td> | |||
</tr> | |||
<tr> | |||
@@ -211,9 +211,9 @@ | |||
another, equivalent file in another location.</p> | |||
<p>The <code><depend></code> tag supports the use of a | |||
contained <a href="mapper.html"><code><mapper></code></a> element to define the | |||
location of the file to be compared against. If no <code><mapper></code> element is | |||
specified, the <code>identity</code> type mapper is used.</p> | |||
contained <a href="mapper.html"><code><mapper></code></a> element to define the location | |||
of the file to be compared against. If no <code><mapper></code> element is specified, | |||
the <code>identity</code> type mapper is used.</p> | |||
<p>The <code><depend></code> selector is case-sensitive.</p> | |||
@@ -226,15 +226,15 @@ | |||
<tr> | |||
<td>targetdir</td> | |||
<td>The base directory to look for the files to compare against. The precise location | |||
depends on a combination of this attribute and the <code><mapper></code> | |||
element, if any.</td> | |||
depends on a combination of this attribute and the <code><mapper></code> element, if | |||
any.</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td>granularity</td> | |||
<td>The number of milliseconds leeway to give before deciding a file is out of | |||
date. This is needed because not every file system supports tracking the last modified | |||
time to the millisecond level.</td> | |||
<td>The number of milliseconds leeway to give before deciding a file is out of date. This is | |||
needed because not every file system supports tracking the last modified time to the | |||
millisecond level.</td> | |||
<td>No; default is 0 milliseconds, or 2 seconds on DOS systems</td> | |||
</tr> | |||
</table> | |||
@@ -250,8 +250,8 @@ | |||
<h4 id="depthselect">Depth Selector</h4> | |||
<p>The <code><depth></code> tag selects files based on how many directory levels deep | |||
they are in relation to the base directory of the fileset.</p> | |||
<p>The <code><depth></code> tag selects files based on how many directory levels deep they | |||
are in relation to the base directory of the fileset.</p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -261,14 +261,14 @@ | |||
</tr> | |||
<tr> | |||
<td>min</td> | |||
<td>The minimum number of directory levels below the base directory that a file must be | |||
in order to be selected.</td> | |||
<td>The minimum number of directory levels below the base directory that a file must be in | |||
order to be selected.</td> | |||
<td rowspan="2">At least one of the two; default is no limit</td> | |||
</tr> | |||
<tr> | |||
<td>max</td> | |||
<td class="left">The maximum number of directory levels below the base directory that a | |||
file can be and still be selected.</td> | |||
<td class="left">The maximum number of directory levels below the base directory that a file | |||
can be and still be selected.</td> | |||
</tr> | |||
</table> | |||
@@ -279,14 +279,13 @@ | |||
<depth max="1"/> | |||
</fileset></pre> | |||
<p>Selects all files in the base directory and one directory below | |||
that.</p> | |||
<p>Selects all files in the base directory and one directory below that.</p> | |||
<h4 id="differentselect">Different Selector</h4> | |||
<p>The <code><different></code> selector will select a file if it is deemed to be | |||
'different' from an equivalent file in another location. The rules for determining | |||
difference between the two files are as follows:<p> | |||
'different' from an equivalent file in another location. The rules for determining difference | |||
between the two files are as follows:<p> | |||
<ol> | |||
<li>If a file is only present in the resource collection you apply the selector to but not | |||
in <var>targetdir</var> (or after applying the mapper) the file is selected.</li> | |||
@@ -295,22 +294,21 @@ | |||
<li>Files with different lengths are different.</li> | |||
<li>If <var>ignoreFileTimes</var> is turned <q>off</q>, then differing file timestamps will | |||
cause files to be regarded as different.</li> | |||
<li>Unless <var>ignoreContents</var> is set to <q>true</q>, a byte-for-byte check is run | |||
against the two files.</li> | |||
<li>Unless <var>ignoreContents</var> is set to <q>true</q>, a byte-for-byte check is run against | |||
the two files.</li> | |||
</ol> | |||
<p>This is a useful selector to work with programs and tasks that don't handle dependency | |||
checking properly; even if a predecessor task always creates its output files, followup | |||
tasks can be driven off copies made with a different selector, so their dependencies are | |||
driven on the absolute state of the files, not just a timestamp. For example: anything | |||
fetched from a web site, or the output of some program. To reduce the amount of checking, | |||
when using this task inside a <code><copy></code> task, | |||
set <var>preservelastmodified</var> to <q>true</q> to propagate the timestamp from the | |||
source file to the destination file.</p> | |||
checking properly; even if a predecessor task always creates its output files, followup tasks | |||
can be driven off copies made with a different selector, so their dependencies are driven on the | |||
absolute state of the files, not just a timestamp. For example: anything fetched from a web | |||
site, or the output of some program. To reduce the amount of checking, when using this task | |||
inside a <code><copy></code> task, set <var>preservelastmodified</var> to <q>true</q> to | |||
propagate the timestamp from the source file to the destination file.</p> | |||
<p>The <code><different></code> selector supports the use of a | |||
contained <a href="mapper.html"><code><mapper></code></a> element to define the | |||
location of the file to be compared against. If no <code><mapper></code> element is | |||
specified, the <code>identity</code> type mapper is used.</p> | |||
contained <a href="mapper.html"><code><mapper></code></a> element to define the location | |||
of the file to be compared against. If no <code><mapper></code> element is specified, | |||
the <code>identity</code> type mapper is used.</p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -321,8 +319,8 @@ | |||
<tr> | |||
<td>targetdir</td> | |||
<td>The base directory to look for the files to compare against. The precise location | |||
depends on a combination of this attribute and the <code><mapper></code> | |||
element, if any.</td> | |||
depends on a combination of this attribute and the <code><mapper></code> element, if | |||
any.</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
@@ -338,9 +336,9 @@ | |||
</tr> | |||
<tr> | |||
<td>granularity</td> | |||
<td>The number of milliseconds leeway to give before deciding a file is out of | |||
date. This is needed because not every file system supports tracking the last modified | |||
time to the millisecond level.</td> | |||
<td>The number of milliseconds leeway to give before deciding a file is out of date. This is | |||
needed because not every file system supports tracking the last modified time to the | |||
millisecond level.</td> | |||
<td>No; default is 0 milliseconds, or 2 seconds on DOS systems</td> | |||
</tr> | |||
</table> | |||
@@ -353,14 +351,14 @@ | |||
ignoreFileTimes="true"/> | |||
</fileset></pre> | |||
<p>Compares all the Java source files between the 1.4.1 and the 1.5 release and selects | |||
those who are different, disregarding file times.</p> | |||
<p>Compares all the Java source files between the 1.4.1 and the 1.5 release and selects those | |||
who are different, disregarding file times.</p> | |||
<h4 id="filenameselect">Filename Selector</h4> | |||
<p>The <code><filename></code> tag acts like the <code><include></code> | |||
and <code><exclude></code> tags within a fileset. By using a selector instead, | |||
however, one can combine it with all the other selectors using | |||
and <code><exclude></code> tags within a fileset. By using a selector instead, however, | |||
one can combine it with all the other selectors using | |||
whatever <a href="#selectcontainers">selector container</a> is desired.</p> | |||
<p>The <code><filename></code> selector is case-sensitive.</p> | |||
@@ -373,8 +371,8 @@ | |||
</tr> | |||
<tr> | |||
<td>name</td> | |||
<td>The name of files to select. The name parameter can contain the standard Ant | |||
wildcard characters.</td> | |||
<td>The name of files to select. The name parameter can contain the standard Ant wildcard | |||
characters.</td> | |||
<td rowspan="2">Exactly one of the two</td> | |||
</tr> | |||
<tr> | |||
@@ -388,8 +386,8 @@ | |||
</tr> | |||
<tr> | |||
<td>negate</td> | |||
<td>Whether to reverse the effects of this filename selection, therefore emulating an | |||
<code>exclude</code> rather than <code>include</code> tag.</td> | |||
<td>Whether to reverse the effects of this filename selection, therefore emulating | |||
an <code>exclude</code> rather than <code>include</code> tag.</td> | |||
<td>No; default is <q>false</q></td> | |||
</tr> | |||
</table> | |||
@@ -409,9 +407,9 @@ | |||
another directory tree.</p> | |||
<p>The <code><present></code> tag supports the use of a | |||
contained <a href="mapper.html"><code><mapper></code></a> element to define the | |||
location of the file to be tested against. If no <code><mapper></code> element is | |||
specified, the <code>identity</code> type mapper is used.</p> | |||
contained <a href="mapper.html"><code><mapper></code></a> element to define the location | |||
of the file to be tested against. If no <code><mapper></code> element is specified, | |||
the <code>identity</code> type mapper is used.</p> | |||
<p>The <code><present></code> selector is case-sensitive.</p> | |||
@@ -424,19 +422,19 @@ | |||
<tr> | |||
<td>targetdir</td> | |||
<td>The base directory to look for the files to compare against. The precise location | |||
depends on a combination of this attribute and the <code><mapper></code> | |||
element, if any.</td> | |||
depends on a combination of this attribute and the <code><mapper></code> element, if | |||
any.</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td>present</td> | |||
<td>Whether we are requiring that a file is present in the source directory tree only, | |||
or in both the source and the target directory tree. Valid values are: | |||
<td>Whether we are requiring that a file is present in the source directory tree only, or in | |||
both the source and the target directory tree. Valid values are: | |||
<ul> | |||
<li><q>srconly</q>—select files only if they are in the source directory tree | |||
but not in the target directory tree</li> | |||
<li><q>both</q >-- select files only if they are present both in the source and | |||
target directory trees</li> | |||
<li><q>srconly</q>—select files only if they are in the source directory tree but | |||
not in the target directory tree</li> | |||
<li><q>both</q >-- select files only if they are present both in the source and target | |||
directory trees</li> | |||
</ul> | |||
Setting this attribute to <q>srconly</q> is equivalent to wrapping the selector in | |||
the <code><not></code> selector container.</td> | |||
@@ -499,14 +497,14 @@ | |||
<containsregexp expression="[4-6]\.[0-9]"/> | |||
</fileset></pre> | |||
<p>Selects all the text files that match the regular expression (have a 4, 5 or 6 followed | |||
by a period and a number from 0 to 9). | |||
<p>Selects all the text files that match the regular expression (have a 4, 5 or 6 followed by a | |||
period and a number from 0 to 9). | |||
<h4 id="sizeselect">Size Selector</h4> | |||
<p>The <code><size></code> tag in a FileSet will put a limit on the files specified by | |||
the include tag, so that tags which do not meet the size limits specified by the selector | |||
will not end up being selected.</p> | |||
<p>The <code><size></code> tag in a FileSet will put a limit on the files specified by the | |||
include tag, so that tags which do not meet the size limits specified by the selector will not | |||
end up being selected.</p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -522,17 +520,17 @@ | |||
</tr> | |||
<tr> | |||
<td>units</td> | |||
<td>The units that the <code>value</code> attribute is expressed in. When using the | |||
standard single letter SI designations, such as <q>k</q>, <q>M</q>, or <q>G</q>, | |||
multiples of 1000 are used. If you want to use power of 2 units, use the IEC | |||
standard: <q>Ki</q> for 1024, <q>Mi</q> for 1048576, and so on. The default is no units, | |||
which means the <var>value</var> attribute expresses the exact number of bytes.</td> | |||
<td>The units that the <code>value</code> attribute is expressed in. When using the standard | |||
single letter SI designations, such as <q>k</q>, <q>M</q>, or <q>G</q>, multiples of 1000 | |||
are used. If you want to use power of 2 units, use the IEC standard: <q>Ki</q> for | |||
1024, <q>Mi</q> for 1048576, and so on. The default is no units, which means | |||
the <var>value</var> attribute expresses the exact number of bytes.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>when</td> | |||
<td>Indicates how to interpret the size, whether the files to be selected should be | |||
larger, smaller, or equal to that value. Acceptable values for this attribute are: | |||
<td>Indicates how to interpret the size, whether the files to be selected should be larger, | |||
smaller, or equal to that value. Acceptable values for this attribute are: | |||
<ul> | |||
<li><q>less</q>—select files less than the indicated size</li> | |||
<li><q>more</q>—select files greater than the indicated size</li> | |||
@@ -584,8 +582,8 @@ | |||
<type type="dir"/> | |||
</fileset></pre> | |||
<p>The Type Selector is often used in conjunction with other selectors. For example, to | |||
select files that also exist in a <samp>template</samp> directory, but avoid selecting empty | |||
<p>The Type Selector is often used in conjunction with other selectors. For example, to select | |||
files that also exist in a <samp>template</samp> directory, but avoid selecting empty | |||
directories, use:</p> | |||
<pre> | |||
@@ -597,10 +595,9 @@ | |||
</fileset></pre> | |||
<h4 id="modified">Modified Selector</h4> | |||
<p>The <code><modified></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> | |||
<p>The <code><modified></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> | |||
@@ -609,15 +606,14 @@ | |||
<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 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><modified></code> selector can be used as a ResourceSelector (see | |||
the <a href="resources.html#restrict"><restrict></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><modified></code> selector tries to | |||
(<strong>attention!</strong>) copy the content into a local file for computing the | |||
hashvalue.</p> | |||
the <a href="resources.html#restrict"><restrict></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><modified></code> selector tries to (<strong>attention!</strong>) copy the | |||
content into a local file for computing the hashvalue.</p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -688,27 +684,26 @@ | |||
</tr> | |||
<tr> | |||
<td>selres</td> | |||
<td>Should Resources without an InputStream, and therefore without checking, be | |||
selected? (boolean)</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>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>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> | |||
<h5>Parameters specified as nested elements</h5> | |||
<p>The <code><modified></code> selector supports a | |||
nested <code><classpath></code> element that represents | |||
a <a href="../using.html#path">path-like structure</a> for finding custom interface | |||
implementations.</p> | |||
<p>The <code><modified></code> selector supports a nested <code><classpath></code> | |||
element that represents a <a href="../using.html#path">path-like structure</a> for finding | |||
custom interface implementations.</p> | |||
<p>All attributes of a <code><modified></code> selector an be set with | |||
nested <code><param/></code> tags. Additional values can be set | |||
@@ -758,8 +753,8 @@ | |||
</tr> | |||
<tr> | |||
<td>propertyfile</td> | |||
<td>Use the <code>java.util.Properties</code> class and its possibility to load and store | |||
to file. This Cache implementation supports the following attributes: | |||
<td>Use the <code>java.util.Properties</code> class and its possibility to load and store to | |||
file. This Cache implementation supports the following attributes: | |||
<ul> | |||
<li><var>cache.cachefile</var> (optional): Name of the properties file; default | |||
is <q>cache.properties</q></li> | |||
@@ -808,8 +803,8 @@ | |||
</fileset> | |||
</copy></pre> | |||
<p>This is the same example rewritten as CoreSelector with setting the all the values (same | |||
as defaults are).</p> | |||
<p>This is the same example rewritten as CoreSelector with setting the all the values (same as | |||
defaults are).</p> | |||
<pre> | |||
<copy todir="dest"> | |||
@@ -842,9 +837,9 @@ | |||
</target></pre> | |||
<p>A useful scenario for this selector inside a build environment for homepage generation | |||
(e.g. with <a href="https://forrest.apache.org/">Apache Forrest</a>). Here | |||
all <strong>changed</strong> files are uploaded to the server. The CacheSelector saves | |||
therefore much upload time.</p> | |||
(e.g. with <a href="https://forrest.apache.org/" target="_top">Apache Forrest</a>). Here | |||
all <strong>changed</strong> files are uploaded to the server. The CacheSelector saves therefore | |||
much upload time.</p> | |||
<pre> | |||
<modified cacheclassname="com.mycompany.MyCache"> | |||
@@ -857,14 +852,14 @@ | |||
cache implementation</p> | |||
<h4 id="ModSelNote">Note on RuleBasedCollator</h4> | |||
<p>The RuleBasedCollator needs a format for its work, but its needed while | |||
instantiation. There is a problem in the initialization algorithm for this case. Therefore | |||
you should not use this (or tell me the workaround :-).</p> | |||
<p>The RuleBasedCollator needs a format for its work, but its needed while instantiation. There | |||
is a problem in the initialization algorithm for this case. Therefore you should not use this | |||
(or tell me the workaround :-).</p> | |||
<h4 id="signedselector">Signed Selector</h4> | |||
<p>The <code><signedselector></code> tag selects signed files and optionally signed | |||
with a certain name.</p> | |||
<p>The <code><signedselector></code> tag selects signed files and optionally signed with a | |||
certain name.</p> | |||
<p><em>Since Apache Ant 1.7</em></p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -881,37 +876,37 @@ | |||
<h4 id="readable">Readable Selector</h4> | |||
<p>The <code><readable></code> selector selects only files that are readable. Ant | |||
only invokes <code>java.io.File#canRead</code> so if a file is unreadable but JVM cannot | |||
detect this state, this selector will still select the file.</p> | |||
<p>The <code><readable></code> selector selects only files that are readable. Ant only | |||
invokes <code>java.io.File#canRead</code> so if a file is unreadable but JVM cannot detect this | |||
state, this selector will still select the file.</p> | |||
<h4 id="writable">Writable Selector</h4> | |||
<p>The <code><writable></code> selector selects only files that are writable. Ant | |||
only invokes <code>java.io.File#canWrite</code> so if a file is nonwritable but JVM cannot | |||
detect this state, this selector will still select the file.</p> | |||
<p>The <code><writable></code> selector selects only files that are writable. Ant only | |||
invokes <code>java.io.File#canWrite</code> so if a file is nonwritable but JVM cannot detect | |||
this state, this selector will still select the file.</p> | |||
<h4 id="executable">Executable Selector</h4> | |||
<p>The <code><executable></code> selector selects only files that are executable. Ant | |||
only invokes <code>java.nio.file.Files#isExecutable</code> so if a file is not executable | |||
but JVM cannot detect this state, this selector will still select the file.</p> | |||
only invokes <code>java.nio.file.Files#isExecutable</code> so if a file is not executable but | |||
JVM cannot detect this state, this selector will still select the file.</p> | |||
<p><em>Since Ant 1.10.0</em></p> | |||
<h4 id="symlink">Symlink Selector</h4> | |||
<p>The <code><symlink></code> selector selects only files that are symbolic links. | |||
Ant only invokes <code>java.nio.file.Files#isSymbolicLink</code> so if a file is a symbolic | |||
link but JVM cannot detect this state, this selector will not select the file.</p> | |||
<p>The <code><symlink></code> selector selects only files that are symbolic links. Ant | |||
only invokes <code>java.nio.file.Files#isSymbolicLink</code> so if a file is a symbolic link but | |||
JVM cannot detect this state, this selector will not select the file.</p> | |||
<p><em>Since Ant 1.10.0</em></p> | |||
<h4 id="ownedBy">OwnedBy Selector</h4> | |||
<p>The <code><ownedBy></code> selector selects only files that are owned by the given | |||
user. Ant only invokes <code>java.nio.file.Files#getOwner</code> so if a file system | |||
doesn't support the operation this selector will not select the file.</p> | |||
user. Ant only invokes <code>java.nio.file.Files#getOwner</code> so if a file system doesn't | |||
support the operation this selector will not select the file.</p> | |||
<p><em>Since Ant 1.10.0</em></p> | |||
@@ -932,9 +927,9 @@ | |||
<p>The <code><scriptselector></code> element enables you to write a complex selection | |||
algorithm in any <a href="https://jakarta.apache.org/bsf" target="_top">Apache BSF</a> | |||
or <a href="https://jcp.org/aboutJava/communityprocess/maintenance/jsr223/223ChangeLog.html">JSR | |||
223</a> supported language. See the <a href="../Tasks/script.html">Script</a> task for an | |||
explanation of scripts and dependencies.</p> | |||
or <a href="https://jcp.org/aboutJava/communityprocess/maintenance/jsr223/223ChangeLog.html" | |||
target="_top">JSR 223</a> supported language. See the <a href="../Tasks/script.html">Script</a> | |||
task for an explanation of scripts and dependencies.</p> | |||
<p><em>Since Apache Ant 1.7</em></p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -985,12 +980,12 @@ | |||
the <a href="../Tasks/script.html">script</a> task on how to use this element.</p> | |||
<p>If no <var>src</var> attribute is supplied, the script must be nested inside the selector | |||
declaration.</p> | |||
<p>The embedded script is invoked for every test, with the bean <code>self</code> is bound | |||
to the selector. It has an attribute <var>selected</var> which can be set | |||
<p>The embedded script is invoked for every test, with the bean <code>self</code> is bound to | |||
the selector. It has an attribute <var>selected</var> which can be set | |||
using <code>setSelected(boolean)</code> to select a file.</p> | |||
<p>The following beans are configured for every script, alongside the classic set of | |||
project, properties, and targets.</p> | |||
<p>The following beans are configured for every script, alongside the classic set of project, | |||
properties, and targets.</p> | |||
<table> | |||
<tr> | |||
@@ -1065,8 +1060,8 @@ | |||
<h3 id="selectcontainers">Selector Containers</h3> | |||
<p>To create more complex selections, a variety of selectors that contain other selectors | |||
are available for your use. They combine the selections of their child selectors in various | |||
<p>To create more complex selections, a variety of selectors that contain other selectors are | |||
available for your use. They combine the selections of their child selectors in various | |||
ways.</p> | |||
<p>The selector containers are:</p> | |||
@@ -1078,21 +1073,21 @@ | |||
majority of its selectors select it.</li> | |||
<li><a href="#noneselect"><code><none></code></a>—select a file only if none | |||
of the contained selectors select it.</li> | |||
<li><a href="#notselect"><code><not></code></a>—can contain only one | |||
selector, and reverses what it selects and doesn't select.</li> | |||
<li><a href="#notselect"><code><not></code></a>—can contain only one selector, and | |||
reverses what it selects and doesn't select.</li> | |||
<li><a href="#orselect"><code><or></code></a>—selects a file if any one of the | |||
contained selectors selects it.</li> | |||
<li><a href="#selectorselect"><code><selector></code></a>—contains only one | |||
selector and forwards all requests to it without alteration, provided that | |||
any <code>"if"</code> or <code>"unless"</code> conditions are | |||
met. This is the selector to use if you want to define a reference. It is usable as an | |||
element of <code><project></code>. It is also the one to use if you want selection | |||
of files to be dependent on Ant property settings.</li> | |||
any <code>"if"</code> or <code>"unless"</code> conditions are met. This | |||
is the selector to use if you want to define a reference. It is usable as an element | |||
of <code><project></code>. It is also the one to use if you want selection of files to | |||
be dependent on Ant property settings.</li> | |||
</ul> | |||
<p>All selector containers can contain any other selector, including other containers, as an | |||
element. Using containers, the selector tags can be arbitrarily deep. Here is a complete | |||
list of allowable selector elements within a container:</p> | |||
element. Using containers, the selector tags can be arbitrarily deep. Here is a complete list of | |||
allowable selector elements within a container:</p> | |||
<ul> | |||
<li><code><and></code></li> | |||
@@ -1113,9 +1108,9 @@ | |||
<h4 id="andselect">And Selector</h4> | |||
<p>The <code><and></code> tag selects files that are selected by all of the elements | |||
it contains. It returns as soon as it finds a selector that does not select the file, so it | |||
is not guaranteed to check every selector.</p> | |||
<p>The <code><and></code> tag selects files that are selected by all of the elements it | |||
contains. It returns as soon as it finds a selector that does not select the file, so it is not | |||
guaranteed to check every selector.</p> | |||
<p>Here is an example of how to use the And Selector:</p> | |||
@@ -1132,9 +1127,9 @@ | |||
<h4 id="majorityselect">Majority Selector</h4> | |||
<p>The <code><majority></code> tag selects files provided that a majority of the | |||
contained elements also select it. Ties are dealt with as specified by | |||
the <var>allowtie</var> attribute.</p> | |||
<p>The <code><majority></code> tag selects files provided that a majority of the contained | |||
elements also select it. Ties are dealt with as specified by the <var>allowtie</var> | |||
attribute.</p> | |||
<table class="attr"> | |||
<tr> | |||
@@ -1144,8 +1139,8 @@ | |||
</tr> | |||
<tr> | |||
<td>allowtie</td> | |||
<td>Whether files should be selected if there are an even number of selectors selecting | |||
them as are not selecting them.</td> | |||
<td>Whether files should be selected if there are an even number of selectors selecting them | |||
as are not selecting them.</td> | |||
<td>No; default is <q>true</q></td> | |||
</tr> | |||
</table> | |||
@@ -1162,14 +1157,14 @@ | |||
</fileset></pre> | |||
<p>Selects all the HTML files which contain at least two of the three | |||
phrases <q>project</q>, <q>taskdef</q>, and <q>IntrospectionHelper</q> (this last phrase | |||
must match case exactly).</p> | |||
phrases <q>project</q>, <q>taskdef</q>, and <q>IntrospectionHelper</q> (this last phrase must | |||
match case exactly).</p> | |||
<h4 id="noneselect">None Selector</h4> | |||
<p>The <code><none></code> tag selects files that are not selected by any of the | |||
elements it contains. It returns as soon as it finds a selector that selects the file, so it | |||
is not guaranteed to check every selector.</p> | |||
<p>The <code><none></code> tag selects files that are not selected by any of the elements | |||
it contains. It returns as soon as it finds a selector that selects the file, so it is not | |||
guaranteed to check every selector.</p> | |||
<p>Here is an example of how to use the None Selector:</p> | |||
@@ -1204,9 +1199,9 @@ | |||
<h4 id="orselect">Or Selector</h4> | |||
<p>The <code><or></code> tag selects files that are selected by any one of the | |||
elements it contains. It returns as soon as it finds a selector that selects the file, so it | |||
is not guaranteed to check every selector.</p> | |||
<p>The <code><or></code> tag selects files that are selected by any one of the elements it | |||
contains. It returns as soon as it finds a selector that selects the file, so it is not | |||
guaranteed to check every selector.</p> | |||
<p>Here is an example of how to use the Or Selector:</p> | |||
@@ -1224,15 +1219,15 @@ | |||
<h4 id="selectorselect">Selector Reference</h4> | |||
<p>The <code><selector></code> tag is used to create selectors that can be reused | |||
through references. It is the only selector which can be used outside of any target, as an | |||
element of the <code><project></code> tag. It can contain only one other selector, but | |||
of course that selector can be a container.</p> | |||
<p>The <code><selector></code> tag is used to create selectors that can be reused through | |||
references. It is the only selector which can be used outside of any target, as an element of | |||
the <code><project></code> tag. It can contain only one other selector, but of course that | |||
selector can be a container.</p> | |||
<p>The <code><selector></code> tag can also be used to select files conditionally | |||
based on whether an Ant property exists or not. This functionality is realized using | |||
the <var>if</var> and <var>unless</var> attributes in exactly the same way they are used on | |||
targets or on the <code><include></code> and <code><exclude></code> tags within | |||
<p>The <code><selector></code> tag can also be used to select files conditionally based on | |||
whether an Ant property exists or not. This functionality is realized using the <var>if</var> | |||
and <var>unless</var> attributes in exactly the same way they are used on targets or on | |||
the <code><include></code> and <code><exclude></code> tags within | |||
a <code><patternset></code>.</p> | |||
<table class="attr"> | |||
@@ -1283,8 +1278,8 @@ | |||
</project></pre> | |||
<p>Zips up all the java files which have an up-to-date equivalent class file and javadoc | |||
file associated with them.</p> | |||
<p>Zips up all the java files which have an up-to-date equivalent class file and javadoc file | |||
associated with them.</p> | |||
<p>And an example of selecting files conditionally, based on whether properties are set:</p> | |||
@@ -1312,14 +1307,14 @@ | |||
<h3 id="customselect">Custom Selectors</h3> | |||
<p>You can write your own selectors and use them within the selector containers by | |||
specifying them within the <code><custom></code> tag.</p> | |||
<p>You can write your own selectors and use them within the selector containers by specifying | |||
them within the <code><custom></code> tag.</p> | |||
<p>First, you have to write your selector class in Java. The only requirement it must meet | |||
in order to be a selector is that it implements | |||
the <code>org.apache.tools.ant.types.selectors.FileSelector</code> interface, which contains | |||
a single method. See <a href="selectors-program.html">Programming Selectors in Ant</a> for | |||
more information.</p> | |||
<p>First, you have to write your selector class in Java. The only requirement it must meet in | |||
order to be a selector is that it implements | |||
the <code>org.apache.tools.ant.types.selectors.FileSelector</code> interface, which contains a | |||
single method. See <a href="selectors-program.html">Programming Selectors in Ant</a> for more | |||
information.</p> | |||
<p>Once that is written, you include it in your build file by using | |||
the <code><custom></code> tag.</p> | |||
@@ -1340,15 +1335,15 @@ | |||
<tr> | |||
<td>classpath</td> | |||
<td>The classpath to use in order to load the custom selector class. If | |||
neither <var>classpath</var> nor <var>classpathref</var> are specified, the class will | |||
be loaded from the classpath that Ant uses.</td> | |||
neither <var>classpath</var> nor <var>classpathref</var> are specified, the class will be | |||
loaded from the classpath that Ant uses.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>classpathref</td> | |||
<td>A reference to a classpath previously defined. If neither <var>classpathref</var> | |||
nor <var>classpath</var> are specified, the class will be loaded from the classpath that | |||
Ant uses.</td> | |||
nor <var>classpath</var> are specified, the class will be loaded from the classpath that Ant | |||
uses.</td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
@@ -26,20 +26,19 @@ | |||
<p><code>TarFileSet</code> has been a stand-alone type <em>since Apache Ant 1.7</em>.</p> | |||
<p>A <code><tarfileset></code> is a special form of | |||
a <code><<a href="fileset.html">fileset</a>></code> which can behave in 2 different | |||
ways:</p> | |||
a <code><<a href="fileset.html">fileset</a>></code> which can behave in 2 different ways:</p> | |||
<ul> | |||
<li>When the <var>src</var> attribute is used—or a nested resource collection has been | |||
specified, the tarfileset is populated with tar entries found in the file <var>src</var>.</li> | |||
<li>When the <var>dir</var> attribute is used, the tarfileset is populated with filesystem | |||
files found under <var>dir</var>.</li> | |||
<li>When the <var>dir</var> attribute is used, the tarfileset is populated with filesystem files | |||
found under <var>dir</var>.</li> | |||
</ul> | |||
<p><code><tarfileset></code> supports all attributes | |||
of <code><<a href="fileset.html">fileset</a>></code> in addition to those listed below. | |||
Note that tar archives in general don't contain entries with leading slashes so you shouldn't | |||
use include/exclude patterns that start with slashes either.</p> | |||
<p><em>Since Ant 1.7</em>, a tarfileset can be defined with the <var>id</var> attribute and | |||
referred to with the <var>refid</var> attribute.</p> | |||
of <code><<a href="fileset.html">fileset</a>></code> in addition to those listed below. Note | |||
that tar archives in general don't contain entries with leading slashes so you shouldn't use | |||
include/exclude patterns that start with slashes either.</p> | |||
<p><em>Since Ant 1.7</em>, a tarfileset can be defined with the <var>id</var> attribute and referred | |||
to with the <var>refid</var> attribute.</p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
<tbody> | |||
@@ -55,14 +54,13 @@ referred to with the <var>refid</var> attribute.</p> | |||
</tr> | |||
<tr> | |||
<td>fullpath</td> | |||
<td>the file described by the fileset is placed at that exact location in the | |||
archive.</td> | |||
<td>the file described by the fileset is placed at that exact location in the archive.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>src</td> | |||
<td>may be used in place of the <var>dir</var> attribute to specify a tar file whose | |||
contents will be extracted and included in the archive.</td> | |||
<td>may be used in place of the <var>dir</var> attribute to specify a tar file whose contents | |||
will be extracted and included in the archive.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
@@ -100,18 +98,16 @@ referred to with the <var>refid</var> attribute.</p> | |||
</tr> | |||
<tr> | |||
<td>erroronmissingarchive</td> | |||
<td>Specify what happens if the archive does not exist. If <q>true</q>, a build error | |||
will happen; if <q>false</q>, the fileset will be ignored/empty. | |||
<em>Since Ant 1.8.0</em></td> | |||
<td>Specify what happens if the archive does not exist. If <q>true</q>, a build error will | |||
happen; if <q>false</q>, the fileset will be ignored/empty. <em>Since Ant 1.8.0</em></td> | |||
<td>No; defaults to <q>true</q></td> | |||
</tr> | |||
<tr> | |||
<td>encoding</td> | |||
<td>The character encoding to use for filenames inside the zip file. For a list of | |||
possible values see | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html">Supported | |||
Encodings</a>. | |||
<em>Since Ant 1.9.5</em></td> | |||
<td>The character encoding to use for filenames inside the zip file. For a list of possible | |||
values see | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html" | |||
target="_top">Supported Encodings</a>. <em>Since Ant 1.9.5</em></td> | |||
<td>No; defaults to default JVM character encoding</td> | |||
</tr> | |||
</tbody> | |||
@@ -119,12 +115,12 @@ referred to with the <var>refid</var> attribute.</p> | |||
<p>The <var>fullpath</var> attribute can only be set for filesets that represent a single | |||
file. The <var>prefix</var> and <var>fullpath</var> attributes cannot both be set on the same | |||
fileset.</p> | |||
<p>When using the <var>src</var> attribute, <var>include</var> and <var>exclude</var> patterns | |||
may be used to specify a subset of the archive for inclusion in the archive as with | |||
the <var>dir</var> attribute.</p> | |||
<p>When using the <var>src</var> attribute, <var>include</var> and <var>exclude</var> patterns may | |||
be used to specify a subset of the archive for inclusion in the archive as with the <var>dir</var> | |||
attribute.</p> | |||
<p>Please note that currently only the <a href="../Tasks/tar.html">tar</a> task uses the | |||
permission and ownership attributes.</p> | |||
<p>Please note that currently only the <a href="../Tasks/tar.html">tar</a> task uses the permission | |||
and ownership attributes.</p> | |||
<h3>Parameters specified as nested elements</h3> | |||
@@ -143,11 +139,10 @@ permission and ownership attributes.</p> | |||
</tarfileset> | |||
</copy></pre> | |||
<p>downloads the archive <samp>some-archive.tar.bz2</samp>, uncompresses and extracts it on the | |||
fly, copies the contents of the <samp>lib</samp> directory into <samp>some-dir</samp> and | |||
discards the rest of the archive. File timestamps will be compared between the archive's | |||
entries and files inside the target directory, no files get overwritten unless they are | |||
out-of-date.</p> | |||
<p>downloads the archive <samp>some-archive.tar.bz2</samp>, uncompresses and extracts it on the fly, | |||
copies the contents of the <samp>lib</samp> directory into <samp>some-dir</samp> and discards the | |||
rest of the archive. File timestamps will be compared between the archive's entries and files | |||
inside the target directory, no files get overwritten unless they are out-of-date.</p> | |||
</body> | |||
</html> |
@@ -26,23 +26,22 @@ | |||
<h2 id="XMLCatalog">XMLCatalog</h2> | |||
<p>An XMLCatalog is a catalog of public resources such as DTDs or entities that are referenced | |||
in an XML document. Catalogs are typically used to make web references to resources point to a | |||
locally cached copy of the resource.</p> | |||
<p>An XMLCatalog is a catalog of public resources such as DTDs or entities that are referenced in an | |||
XML document. Catalogs are typically used to make web references to resources point to a locally | |||
cached copy of the resource.</p> | |||
<p>This allows the XML Parser, XSLT Processor or other consumer of XML documents to efficiently | |||
allow a local substitution for a resource available on the web.</p> | |||
<p><strong>Note:</strong> This task <em>uses, but does not depend on</em> external libraries not | |||
included in the Apache Ant distribution. | |||
See <a href="../install.html#librarydependencies">Library Dependencies</a> for more | |||
information.</p> | |||
included in the Apache Ant distribution. See <a href="../install.html#librarydependencies">Library | |||
Dependencies</a> for more information.</p> | |||
<p>This data type provides a catalog of resource locations based on | |||
the <a href="https://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html">OASIS | |||
XML Catalog standard</a>. The catalog entries are used both for Entity resolution and URI | |||
resolution, in accordance with the <code>org.xml.sax.EntityResolver</code> | |||
the <a href="https://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html" | |||
target="_top">OASIS XML Catalog standard</a>. The catalog entries are used both for Entity | |||
resolution and URI resolution, in accordance with the <code>org.xml.sax.EntityResolver</code> | |||
and <code>javax.xml.transform.URIResolver</code> interfaces as defined in | |||
the <a href="https://download.oracle.com/otn-pub/jcp/jaxp-1_6-mrel3-spec/JAXP1_6-FinalSpec.pdf">Java | |||
API for XML Processing (JAXP) Specification</a>.</p> | |||
the <a href="https://download.oracle.com/otn-pub/jcp/jaxp-1_6-mrel3-spec/JAXP1_6-FinalSpec.pdf" | |||
target="_top">Java API for XML Processing (JAXP) Specification</a>.</p> | |||
<p>For example, in a <code>web.xml</code> file, the DTD is referenced as:</p> | |||
<pre> | |||
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" | |||
@@ -75,64 +74,62 @@ the system classpath is used for this as well.</p> | |||
<p>XMLCatalogs can also be nested inside other XMLCatalogs. For example, a "superset" | |||
XMLCatalog could be made by including several nested XMLCatalogs that referred to other, | |||
previously defined XMLCatalogs.</p> | |||
<p>Resource locations can be specified either in-line or in external catalog file(s), or both. | |||
In order to use an external catalog file, the xml-commons resolver library | |||
(<samp>resolver.jar</samp>) must be in your path. External catalog files may be | |||
either <a href="https://oasis-open.org/committees/entity/background/9401.html">plain text | |||
format</a> or <a href="https://www.oasis-open.org/committees/entity/spec-2001-08-06.html">XML | |||
format</a>. If the xml-commons resolver library is not found in the classpath, external catalog | |||
files, specified in <code>catalogpath</code>, will be ignored and a warning will be logged. In | |||
this case, however, processing of inline entries will proceed normally.</p> | |||
<p>Resource locations can be specified either in-line or in external catalog file(s), or both. In | |||
order to use an external catalog file, the xml-commons resolver library (<samp>resolver.jar</samp>) | |||
must be in your path. External catalog files may be | |||
either <a href="https://oasis-open.org/committees/entity/background/9401.html" target="_top">plain | |||
text format</a> or <a href="https://www.oasis-open.org/committees/entity/spec-2001-08-06.html" | |||
target="_top">XML format</a>. If the xml-commons resolver library is not found in the classpath, | |||
external catalog files, specified in <code>catalogpath</code>, will be ignored and a warning will be | |||
logged. In this case, however, processing of inline entries will proceed normally.</p> | |||
<p>Currently, only <code><dtd></code> and <code><entity></code> elements may be | |||
specified inline; these roughly correspond to OASIS catalog entry types <code>PUBLIC</code> | |||
and <code>URI</code> respectively. By contrast, external catalog files may use any of the entry | |||
types defined in | |||
the <a href="https://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html">OASIS | |||
specification</a>.</p> | |||
the <a href="https://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html" | |||
target="_top">OASIS specification</a>.</p> | |||
<h3 id="ResolverAlgorithm">Entity/DTD/URI resolution algorithm</h3> | |||
<p>When an entity, DTD, or URI is looked up by the XML processor, the XMLCatalog searches its | |||
list of entries to see if any match. That is, it attempts to match the <var>publicId</var> | |||
attribute of each entry with the PublicID or URI of the entity to be resolved. Assuming a | |||
matching entry is found, XMLCatalog then executes the following steps:</p> | |||
<p>When an entity, DTD, or URI is looked up by the XML processor, the XMLCatalog searches its list | |||
of entries to see if any match. That is, it attempts to match the <var>publicId</var> attribute of | |||
each entry with the PublicID or URI of the entity to be resolved. Assuming a matching entry is | |||
found, XMLCatalog then executes the following steps:</p> | |||
<h4>1. Filesystem lookup</h4> | |||
<p>The <var>location</var> is first looked up in the filesystem. If the <var>location</var> is | |||
a relative path, the Ant project <var>basedir</var> attribute is used as the base directory. If | |||
the <var>location</var> specifies an absolute path, it is used as is. Once we have an absolute | |||
path in hand, we check to see if a valid and readable file exists at that path. If so, we are | |||
done. If not, we proceed to the next step.</p> | |||
<p>The <var>location</var> is first looked up in the filesystem. If the <var>location</var> is a | |||
relative path, the Ant project <var>basedir</var> attribute is used as the base directory. If | |||
the <var>location</var> specifies an absolute path, it is used as is. Once we have an absolute path | |||
in hand, we check to see if a valid and readable file exists at that path. If so, we are done. If | |||
not, we proceed to the next step.</p> | |||
<h4>2. Classpath lookup</h4> | |||
<p>The <var>location</var> is next looked up in the classpath. Recall that jar files are merely | |||
fancy zip files. For classpath lookup, the <var>location</var> is used as is (no base is | |||
prepended). We use a Classloader to attempt to load the resource from the classpath. For | |||
example, if <samp>hello.jar</samp> is in the classpath and it | |||
contains <samp>foo/bar/blat.dtd</samp> it will resolve an entity whose <var>location</var> | |||
is <samp>foo/bar/blat.dtd</samp>. Of course, it will <em>not</em> resolve an entity | |||
whose <var>location</var> is <code>blat.dtd</code>.</p> | |||
prepended). We use a Classloader to attempt to load the resource from the classpath. For example, | |||
if <samp>hello.jar</samp> is in the classpath and it contains <samp>foo/bar/blat.dtd</samp> it will | |||
resolve an entity whose <var>location</var> is <samp>foo/bar/blat.dtd</samp>. Of course, it | |||
will <em>not</em> resolve an entity whose <var>location</var> is <code>blat.dtd</code>.</p> | |||
<h4>3a. Apache xml-commons resolver lookup</h4> | |||
<p>What happens next depends on whether the resolver library from xml-commons is available on | |||
the classpath. If so, we defer all further attempts at resolving to it. The resolver library | |||
supports extremely sophisticated functionality like URL rewriting and so on, which can be | |||
accessed by making the appropriate entries in external catalog files (XMLCatalog does not yet | |||
provide inline support for all of the entries defined in | |||
the <a href="https://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html">OASIS | |||
standard</a>).</p> | |||
<p>What happens next depends on whether the resolver library from xml-commons is available on the | |||
classpath. If so, we defer all further attempts at resolving to it. The resolver library supports | |||
extremely sophisticated functionality like URL rewriting and so on, which can be accessed by making | |||
the appropriate entries in external catalog files (XMLCatalog does not yet provide inline support | |||
for all of the entries defined in | |||
the <a href="https://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html" | |||
target="_top">OASIS standard</a>).</p> | |||
<h4>3. URL-space lookup</h4> | |||
<p>Finally, we attempt to make a URL out of the <var>location</var>. At first this may seem | |||
like this would defeat the purpose of XMLCatalogs—why go back out to the internet? But in | |||
fact, this can be used to (in a sense) implement HTTP redirects, substituting one URL for | |||
another. The mapped-to URL might also be served by a local web server. If the URL resolves to | |||
a valid and readable resource, we are done. Otherwise, we give up. In this case, the XML | |||
processor will perform its normal resolution algorithm. Depending on the processor | |||
configuration, further resolution failures may or may not result in fatal (i.e. build-ending) | |||
errors.</p> | |||
<p>Finally, we attempt to make a URL out of the <var>location</var>. At first this may seem like | |||
this would defeat the purpose of XMLCatalogs—why go back out to the internet? But in fact, | |||
this can be used to (in a sense) implement HTTP redirects, substituting one URL for another. The | |||
mapped-to URL might also be served by a local web server. If the URL resolves to a valid and | |||
readable resource, we are done. Otherwise, we give up. In this case, the XML processor will | |||
perform its normal resolution algorithm. Depending on the processor configuration, further | |||
resolution failures may or may not result in fatal (i.e. build-ending) errors.</p> | |||
<h3>XMLCatalog attributes</h3> | |||
<table class="attr"> | |||
@@ -173,26 +170,25 @@ identical in their structure</p> | |||
</tr> | |||
<tr> | |||
<td>location</td> | |||
<td>The location of the local replacement to be used for the public identifier | |||
specified. This may be specified as a file name, resource name found on the classpath, or a | |||
URL. Relative paths will be resolved according to the base, which by default is the Ant | |||
<td>The location of the local replacement to be used for the public identifier specified. This | |||
may be specified as a file name, resource name found on the classpath, or a URL. Relative paths | |||
will be resolved according to the base, which by default is the Ant | |||
project <var>basedir</var>.</td> | |||
<td>Yes</td> | |||
</tr> | |||
</table> | |||
<h4>classpath</h4> | |||
<p>The classpath to use for <a href="#ResolverAlgorithm">entity resolution</a>. The | |||
nested <code><classpath></code> is a <a href="../using.html#path">path</a>-like | |||
structure.</p> | |||
nested <code><classpath></code> is a <a href="../using.html#path">path</a>-like structure.</p> | |||
<h4>catalogpath</h4> | |||
<p>The nested <code>catalogpath</code> element is a <a href="../using.html#path">path</a>-like | |||
structure listing catalog files to search. All files in this path are assumed to be OASIS | |||
catalog files, in | |||
either <a href="https://oasis-open.org/committees/entity/background/9401.html">plain text | |||
format</a> or <a href="https://www.oasis-open.org/committees/entity/spec-2001-08-06.html">XML | |||
structure listing catalog files to search. All files in this path are assumed to be OASIS catalog | |||
files, in either <a href="https://oasis-open.org/committees/entity/background/9401.html" | |||
target="_top">plain text format</a> | |||
or <a href="https://www.oasis-open.org/committees/entity/spec-2001-08-06.html" target="_top">XML | |||
format</a>. Entries specifying nonexistent files will be ignored. If the resolver library from | |||
xml-commons is not available in the classpath, all <code>catalogpath</code>s will be ignored and | |||
a warning will be logged.</p> | |||
xml-commons is not available in the classpath, all <code>catalogpath</code>s will be ignored and a | |||
warning will be logged.</p> | |||
<h3>Examples</h3> | |||
<p>Set up an XMLCatalog with a single DTD referenced locally in a user's home directory:</p> | |||
<pre> | |||
@@ -24,22 +24,21 @@ | |||
<h2 id="fileset">ZipFileSet</h2> | |||
<p>A <code><zipfileset></code> is a special form of | |||
a <code><<a href="fileset.html">fileset</a>></code> which can behave in 2 different | |||
ways:</p> | |||
a <code><<a href="fileset.html">fileset</a>></code> which can behave in 2 different ways:</p> | |||
<ul> | |||
<li>When the <var>src</var> attribute is used—or a nested resource collection has been | |||
specified (<em>since Apache Ant 1.7</em>), the zipfileset is populated with zip entries found | |||
in the file <var>src</var>.</li> | |||
<li>When the <var>dir</var> attribute is used, the zipfileset is populated with filesystem | |||
files found under <var>dir</var>.</li> | |||
specified (<em>since Apache Ant 1.7</em>), the zipfileset is populated with zip entries found in | |||
the file <var>src</var>.</li> | |||
<li>When the <var>dir</var> attribute is used, the zipfileset is populated with filesystem files | |||
found under <var>dir</var>.</li> | |||
</ul> | |||
<p><code><zipfileset></code> supports all attributes | |||
of <code><<a href="fileset.html">fileset</a>></code> in addition to those listed below. | |||
Note that zip archives in general don't contain entries with leading slashes so you shouldn't | |||
of <code><<a href="fileset.html">fileset</a>></code> in addition to those listed below. Note | |||
that zip archives in general don't contain entries with leading slashes so you shouldn't | |||
use <var>includes</var>/<var>excludes</var> patterns that start with slashes either.</p> | |||
<p><em>Since Ant 1.6</em>, a zipfileset can be defined with the <var>id</var> attribute and | |||
referred to with the <var>refid</var> attribute.</p> | |||
<p><em>Since Ant 1.6</em>, a zipfileset can be defined with the <var>id</var> attribute and referred | |||
to with the <var>refid</var> attribute.</p> | |||
<h3>Parameters</h3> | |||
<table class="attr"> | |||
@@ -61,37 +60,34 @@ referred to with the <var>refid</var> attribute.</p> | |||
</tr> | |||
<tr> | |||
<td>src</td> | |||
<td>may be used in place of the <var>dir</var> attribute to specify a zip file whose | |||
contents will be extracted and included in the archive.</td> | |||
<td>may be used in place of the <var>dir</var> attribute to specify a zip file whose contents | |||
will be extracted and included in the archive.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>filemode</td> | |||
<td>A 3 digit octal string, specify the user, group and other modes in the standard Unix | |||
fashion. Only applies to plain files. <em>Since Ant 1.5.2</em></td> | |||
fashion. Only applies to plain files. <em>Since Ant 1.5.2</em></td> | |||
<td>No; default is <q>644</q></td> | |||
</tr> | |||
<tr> | |||
<td>dirmode</td> | |||
<td>A 3 digit octal string, specify the user, group and other modes in the standard Unix | |||
fashion. Only applies to directories. <em>Since Ant 1.5.2</em></td> | |||
fashion. Only applies to directories. <em>Since Ant 1.5.2</em></td> | |||
<td>No; default is <q>755</q></td> | |||
</tr> | |||
<tr> | |||
<td>encoding</td> | |||
<td>The character encoding to use for filenames inside the zip file. For a list of | |||
possible values see | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html">Supported | |||
Encodings</a>. | |||
<td>The character encoding to use for filenames inside the zip file. For a list of possible | |||
values see | |||
the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html" | |||
target="_top">Supported Encodings</a>. | |||
<td>No; defaults to default JVM character encoding</td> | |||
</tr> | |||
<tr> | |||
<td>erroronmissingarchive</td> | |||
<td> | |||
Specify what happens if the archive does not exist. If <q>true</q>, a build error will | |||
happen; if <q>false</q>, the fileset will be ignored/empty. | |||
<em>Since Ant 1.8.0</em> | |||
</td> | |||
<td>Specify what happens if the archive does not exist. If <q>true</q>, a build error will | |||
happen; if <q>false</q>, the fileset will be ignored/empty. <em>Since Ant 1.8.0</em></td> | |||
<td>No; defaults to <q>true</q></td> | |||
</tr> | |||
</tbody> | |||
@@ -22,14 +22,13 @@ | |||
<body> | |||
<h2>Apache Ant API has not been generated</h2> | |||
<p>If you see this page online | |||
at <a href="https://ant.apache.org/">ant.apache.org</a>, it is not a bug, but | |||
on purpose. We do not provide an online version of the API docs, they | |||
are included with all our distributions.</p> | |||
<p>If you see this page online at <a target="_top" | |||
href="https://ant.apache.org/">ant.apache.org</a>, it is not a bug, but on purpose. We do not | |||
provide an online version of the API docs, they are included with all our distributions.</p> | |||
<p>Ant's manual and API documentation is part of | |||
the <a href="https://ant.apache.org/bindownload.cgi">binary</a> | |||
distributions or available as a | |||
separate <a href="https://ant.apache.org/manualdownload.cgi">archive</a>.</p> | |||
the <a href="https://ant.apache.org/bindownload.cgi" target="_top">binary</a> distributions or | |||
available as a separate <a href="https://ant.apache.org/manualdownload.cgi" | |||
target="_top">archive</a>.</p> | |||
</body> | |||
</html> |
@@ -25,22 +25,20 @@ | |||
<body> | |||
<h1 class="center"><img src="images/ant_logo_large.gif" width="190" height="120"></h1> | |||
<h1 class="center">Apache Ant™ 1.10.3 Manual</h1> | |||
<p>This is the manual for version 1.10.3 | |||
of <a target="_top" href="https://ant.apache.org/">Apache Ant</a>. If your version | |||
of Ant (as verified with <code>ant -version</code>) is older or newer | |||
than this version then this is not the correct manual set. Please | |||
use the documentation appropriate to your current version. Also, | |||
if you are using a version older than the most recent release, we | |||
recommend an upgrade to fix bugs as well as provide new functionality.</p> | |||
<p>This is the manual for version 1.10.3 of <a href="https://ant.apache.org/" target="_top">Apache Ant</a>. If your | |||
version of Ant (as verified with <code>ant -version</code>) is older or newer than this version then this is not the | |||
correct manual set. Please use the documentation appropriate to your current version. Also, if you are using a | |||
version older than the most recent release, we recommend an upgrade to fix bugs as well as provide new | |||
functionality.</p> | |||
<p>Ant's manual and API documentation is part of | |||
the <a href="https://ant.apache.org/bindownload.cgi">binary</a> | |||
distributions or available as a | |||
separate <a href="https://ant.apache.org/manualdownload.cgi">archive</a>. | |||
Manuals for older releases are available for | |||
download <a href="https://ant.apache.org/bindownload.cgi#Old Ant Releases">as well</a>.</p> | |||
<p>Ant's manual and API documentation is part of the <a href="https://ant.apache.org/bindownload.cgi" | |||
target="_top">binary</a> distributions or available as a | |||
separate <a href="https://ant.apache.org/manualdownload.cgi" target="_top">archive</a>. Manuals for older releases | |||
are available for download <a href="https://ant.apache.org/bindownload.cgi#Old Ant Releases" target="_top">as | |||
well</a>.</p> | |||
<p class="center">Apache Ant, Apache Ivy, Ant, Ivy, Apache, the Apache feather logo, and the Apache Ant project logos are trademarks of The Apache Software Foundation.</p> | |||
<p class="center">Apache Ant, Apache Ivy, Ant, Ivy, Apache, the Apache feather logo, and the Apache Ant project logos | |||
are trademarks of The Apache Software Foundation.</p> | |||
</body> | |||
</html> |
@@ -473,13 +473,13 @@ public class MyLogAdapter implements BuildListener { | |||
positively encouraged. Both changes to the existing source and new tasks can be incorporated back | |||
into the Ant codebase, which benefits all users and spreads the maintenance load around.</p> | |||
<p>Please consult the <a href="https://www.apache.org/foundation/getinvolved.html">Getting | |||
Involved</a> pages on the Apache web site for details on how to fetch the latest source and how to | |||
submit changes for reincorporation into the source tree.</p> | |||
<p>Please consult the <a href="https://www.apache.org/foundation/getinvolved.html" | |||
target="_top">Getting Involved</a> pages on the Apache web site for details on how to fetch the | |||
latest source and how to submit changes for reincorporation into the source tree.</p> | |||
<p>Ant also has some <a href="https://ant.apache.org/ant_task_guidelines.html">task guidelines</a> | |||
which provides some advice to people developing and testing tasks. Even if you intend to keep your | |||
tasks to yourself, you should still read this as it should be informative.</p> | |||
<p>Ant also has some <a href="https://ant.apache.org/ant_task_guidelines.html" target="_top">task | |||
guidelines</a> which provides some advice to people developing and testing tasks. Even if you intend | |||
to keep your tasks to yourself, you should still read this as it should be informative.</p> | |||
</body> | |||
</html> |
@@ -30,8 +30,8 @@ | |||
<h3>Developing with Apache Ant</h3> | |||
<ul class="inlinelist"> | |||
<li><a href="https://ant.apache.org/ant_in_anger.html">Ant in Anger</a> <small>(online)</small></li> | |||
<li><a href="https://ant.apache.org/ant_task_guidelines.html">Ant Task Guidelines</a> <small>(online)</small></li> | |||
<li><a href="https://ant.apache.org/ant_in_anger.html" target="_top">Ant in Anger</a> <small>(online)</small></li> | |||
<li><a href="https://ant.apache.org/ant_task_guidelines.html" target="_top">Ant Task Guidelines</a> <small>(online)</small></li> | |||
<li><a href="develop.html#writingowntask">Writing Your Own Task</a></li> | |||
<li><a href="base_task_classes.html">Tasks Designed for Extension</a></li> | |||
<li><a href="develop.html#buildevents">Build Events</a></li> | |||
@@ -25,45 +25,44 @@ | |||
<body> | |||
<h1 id="feedback">Feedback and Troubleshooting</h1> | |||
<p>If things do not work, especially simple things like <code>ant -version</code>, | |||
then something is wrong with your configuration. Before filing bug reports and | |||
emailing all the Apache Ant mailing lists</p> | |||
<p>If things do not work, especially simple things like <code>ant -version</code>, then something is | |||
wrong with your configuration. Before filing bug reports and emailing all the Apache Ant mailing | |||
lists</p> | |||
<ol> | |||
<li>Check your environment variables. Are <code>ANT_HOME</code> and <code>JAVA_HOME</code> correct? If | |||
they have quotes or trailing slashes, remove them.</li> | |||
<li>Unset <code>CLASSPATH</code>; if that is wrong things go horribly wrong. Ant does not | |||
need the <code>CLASSPATH</code> variable defined to anything to work.</li> | |||
<li>Make sure there are no versions of <samp>crimson.jar</samp> or other XML parsers in <samp>JAVA_HOME/jre/lib/ext</samp></li> | |||
<li>Check your environment variables. Are <code>ANT_HOME</code> and <code>JAVA_HOME</code> | |||
correct? If they have quotes or trailing slashes, remove them.</li> | |||
<li>Unset <code>CLASSPATH</code>; if that is wrong things go horribly wrong. Ant does not need | |||
the <code>CLASSPATH</code> variable defined to anything to work.</li> | |||
<li>Make sure there are no versions of <samp>crimson.jar</samp> or other XML parsers | |||
in <samp>JAVA_HOME/jre/lib/ext</samp></li> | |||
<li>Is your path correct? is Ant on it? What about <samp>JAVA_HOME/bin</samp>? have you tested | |||
this? If you are using Jikes, is it on the path? A CreateProcess error (especially | |||
with <code>error=2</code>) on Windows usually means executable not found on the path.</li> | |||
<li>Which version of ant are you running? Other applications distribute a copy | |||
-it may be being picked up by accident.</li> | |||
<li>If a task failing to run is from <samp>optional.jar</samp> in <samp>ANT_HOME/lib</samp>? Are there any | |||
libraries which it depends on missing?</li> | |||
<li>If a task doesn't do what you expect, run <code>ant -verbose</code> or <code>ant | |||
-debug</code> to see what is happening</li> | |||
<li>Which version of ant are you running? Other applications distribute a copy—it may be | |||
being picked up by accident.</li> | |||
<li>If a task failing to run is from <samp>optional.jar</samp> in <samp>ANT_HOME/lib</samp>? Are | |||
there any libraries which it depends on missing?</li> | |||
<li>If a task doesn't do what you expect, run <code>ant -verbose</code> or <code>ant -debug</code> | |||
to see what is happening</li> | |||
</ol> | |||
<p>If you can't fix your problem, start with the <a href="https://ant.apache.org/mail.html" target="_top">Ant | |||
User Mailing List</a>. These are other ant users who will help you learn to | |||
use ant. If they cannot fix it then someone may suggest filing a bug report, | |||
which will escalate the issue. Remember of course, that support, like all open | |||
source development tasks, is voluntary. If you haven't invested time in helping | |||
yourself by following the steps above, it is unlikely that anyone will invest | |||
the time in helping you.</p> | |||
<p>Also, if you don't understand something, the <a href="https://ant.apache.org/mail.html" target="_top">Ant | |||
User Mailing List</a> is the place to ask questions. Not the developer list, | |||
nor the individuals whose names appears in the source and documentation. If | |||
they answered all such emails, nobody would have any time to improve Ant.</p> | |||
<p>To provide feedback on this software, please subscribe to the <a href="https://ant.apache.org/mail.html" target="_top">Ant | |||
User Mailing List</a></p> | |||
<p>If you want to contribute to Ant or stay current with the latest | |||
development, join | |||
<p>If you can't fix your problem, start with the <a href="https://ant.apache.org/mail.html" | |||
target="_top">Ant User Mailing List</a>. These are other ant users who will help you learn to use | |||
ant. If they cannot fix it then someone may suggest filing a bug report, which will escalate the | |||
issue. Remember of course, that support, like all open source development tasks, is voluntary. If | |||
you haven't invested time in helping yourself by following the steps above, it is unlikely that | |||
anyone will invest the time in helping you.</p> | |||
<p>Also, if you don't understand something, the <a href="https://ant.apache.org/mail.html" | |||
target="_top">Ant User Mailing List</a> is the place to ask questions. Not the developer list, nor | |||
the individuals whose names appears in the source and documentation. If they answered all such | |||
emails, nobody would have any time to improve Ant.</p> | |||
<p>To provide feedback on this software, please subscribe to | |||
the <a href="https://ant.apache.org/mail.html" target="_top">Ant User Mailing List</a></p> | |||
<p>If you want to contribute to Ant or stay current with the latest development, join | |||
the <a href="https://ant.apache.org/mail.html" target="_top">Ant Development Mailing List</a></p> | |||
<p>A searchable archive can be found | |||
at <a href="https://marc.info" target="_top">https://marc.info</a>. Other | |||
archives will be documented online | |||
at <a href="https://ant.apache.org/mail.html#Archives" target="_top">Mailing Lists Archives</a></p> | |||
<p>A searchable archive can be found at <a href="https://marc.info" | |||
target="_top">https://marc.info</a>. Other archives will be documented online | |||
at <a href="https://ant.apache.org/mail.html#Archives" target="_top">Mailing Lists | |||
Archives</a></p> | |||
</body> | |||
</html> |
@@ -34,38 +34,40 @@ All the modern Java IDEs support Apache Ant almost out of the box. | |||
<ul> | |||
<li> | |||
<a href="Integration/jext-plugin.html">AntWork Plugin for the Jext Java Text Editor (unbundled)</a> | |||
<a href="Integration/jext-plugin.html">AntWork Plugin for the Jext Java Text Editor | |||
(unbundled)</a> | |||
</li> | |||
<li> | |||
<a href="http://jdee.sourceforge.net/">JDEE (Java Development Environment for Emacs)</a> | |||
has built-in text Ant integration: selection of target through text | |||
field, execution, hyperlink to compilation errors. Installation: built-in | |||
JDEE 2.2.8 or later. Configuration: through customize menu | |||
"Jde Build Function" | |||
<a href="http://jdee.sourceforge.net/" target="_top">JDEE (Java Development Environment for | |||
Emacs)</a> has built-in text Ant integration: selection of target through text field, execution, | |||
hyperlink to compilation errors. Installation: built-in JDEE 2.2.8 or later. Configuration: | |||
through customize menu "Jde Build Function" | |||
</li> | |||
<li> | |||
<a href="https://www.jetbrains.com/idea/">IDEA</a> has built-in | |||
GUI ANT integration: GUI selection of targets, execution, hyperlink to compilation errors | |||
<a href="https://www.jetbrains.com/idea/" target="_top">IDEA</a> has built-in GUI ANT | |||
integration: GUI selection of targets, execution, hyperlink to compilation errors | |||
</li> | |||
<li> | |||
<a href="http://ant.netbeans.org/">NetBeans</a> | |||
IDE uses Ant as the basis for its project system starting with the 4.0 release | |||
<a href="http://ant.netbeans.org/" target="_top">NetBeans</a> IDE uses Ant as the basis for its | |||
project system starting with the 4.0 release | |||
</li> | |||
<li> | |||
<a href="http://jedit.org/">jEdit</a> | |||
is an open source Java IDE with some great plugins for Java dev, a | |||
good XML editor and the Antfarm plugin to execute targets in a build file | |||
<a href="http://jedit.org/" target="_top">jEdit</a> is an open source Java IDE with some great | |||
plugins for Java dev, a good XML editor and the Antfarm plugin to execute targets in a build | |||
file | |||
</li> | |||
<li> | |||
<a href="https://eclipse.org/">Eclipse</a> | |||
is IBM's counterpoint to NetBeans; an open source IDE with Java and Ant support | |||
<a href="https://eclipse.org/" target="_top">Eclipse</a> is IBM's counterpoint to NetBeans; an | |||
open source IDE with Java and Ant support | |||
</li> | |||
<li> | |||
<a href="http://www.placidsystems.com/virtualant/">Virtual Ant</a> | |||
GUI allows you to work on a Virtual File System without dealing with the XML; plugs into Eclipse, Netbeans & IntelliJ | |||
<a href="http://www.placidsystems.com/virtualant/" target="_top">Virtual Ant</a> GUI allows you | |||
to work on a Virtual File System without dealing with the XML; plugs into Eclipse, Netbeans | |||
& IntelliJ | |||
</li> | |||
<li> | |||
<a href="https://www.ibm.com/developerworks/offers/wsad2.html">WebSphere Studio Application Developer</a> | |||
<a href="https://www.ibm.com/developerworks/offers/wsad2.html" target="_top">WebSphere Studio | |||
Application Developer</a> | |||
</li> | |||
</ul> | |||
@@ -169,21 +169,21 @@ target="_top">https://archive.apache.org/dist/ant/</a>. The files are organized | |||
<td><samp>ant-current-*.asc</samp></td> | |||
<td> | |||
Security file for checking the correctness of the zip file. This one is | |||
the <a href="https://en.wikipedia.org/wiki/Pretty_Good_Privacy" target="_blank">PGP</a> signature. | |||
the <a href="https://en.wikipedia.org/wiki/Pretty_Good_Privacy" target="_top">PGP</a> signature. | |||
</td> | |||
</tr> | |||
<tr> | |||
<td><samp>ant-current-*.md5</samp></td> | |||
<td> | |||
Security file for checking the correctness of the zip file. This one is | |||
the <a href="https://en.wikipedia.org/wiki/Md5" target="_blank">MD5</a> checksum. | |||
the <a href="https://en.wikipedia.org/wiki/Md5" target="_top">MD5</a> checksum. | |||
</td> | |||
</tr> | |||
<tr> | |||
<td><samp>ant-current-*.sha1</samp></td> | |||
<td> | |||
Security file for checking the correctness of the zip file. This one is | |||
the <a href="https://en.wikipedia.org/wiki/SHA-1" target="_blank">SHA1</a> checksum. | |||
the <a href="https://en.wikipedia.org/wiki/SHA-1" target="_top">SHA1</a> checksum. | |||
</td> | |||
</tr> | |||
<tr> | |||
@@ -241,7 +241,7 @@ The more up-to-date the version of Java, the more Ant tasks you get. | |||
<h3>Open Source Java Runtimes</h3> | |||
<p> | |||
The Ant team strongly supports users running Ant on <a target="_blank" href="http://openjdk.java.net/">OpenJDK</a> and | |||
The Ant team strongly supports users running Ant on <a href="http://openjdk.java.net/" target="_top">OpenJDK</a> and | |||
other open source Java runtimes, and so strives to have a product that works well on those platforms. | |||
</p> | |||
@@ -665,8 +665,8 @@ installed. See <a href="#installing">Installing Ant</a> for examples on how to d | |||
</p> | |||
<p> | |||
<strong>Note</strong>: The bootstrap process of Ant requires a greedy compiler like OpenJDK or Oracle's javac. It does not work | |||
with gcj or kjc. | |||
<strong>Note</strong>: The bootstrap process of Ant requires a greedy compiler like OpenJDK or Oracle's javac. It does | |||
not work with gcj or kjc. | |||
</p> | |||
<p> | |||
@@ -684,8 +684,8 @@ on how to do this. | |||
</p> | |||
<p> | |||
<em>Since Ant 1.7.0</em>, Ant has a hard dependency on JUnit. The <samp>fetch.xml</samp> build script will download JUnit | |||
automatically, but if you don't use this you must install it manually into <samp>lib/optional</samp> (download it | |||
<em>Since Ant 1.7.0</em>, Ant has a hard dependency on JUnit. The <samp>fetch.xml</samp> build script will download | |||
JUnit automatically, but if you don't use this you must install it manually into <samp>lib/optional</samp> (download it | |||
from <a href="https://junit.org/" target="_top">JUnit.org</a>) if you are using a source distribution of Ant. | |||
</p> | |||
@@ -708,7 +708,7 @@ The above action does the following: | |||
<li>If necessary it will bootstrap the Ant code. Bootstrapping involves the manual compilation of enough Ant code to be | |||
able to run Ant. The bootstrapped Ant is used for the remainder of the build steps.</li> | |||
<li>Invokes the bootstrapped Ant with the parameters passed to the build script. In this case, these parameters define | |||
an Ant property value and specify the "dist" target in Ant's own <samp>build.xml</samp> file.</li> | |||
an Ant property value and specify the <q>dist</q> target in Ant's own <samp>build.xml</samp> file.</li> | |||
<li>Create the <samp>ant.jar</samp> and <samp>ant-launcher.jar</samp> JAR files</li> | |||
<li>Create optional JARs for which the build had the relevant libraries. If a particular library is missing | |||
from <samp>lib/optional</samp>, then the matching ant-library JAR file will not be created. For | |||
@@ -876,7 +876,7 @@ these tasks available. Please refer to the <a href="#optionalTasks">Installing A | |||
and <a href="Tasks/telnet.html">telnet</a> tasks<br/> A minimum version of commons-net of 1.4.0 is needed to | |||
compile Ant, earlier versions did not support the full range of configuration options.<br/>jakarta-oro 2.0.8 is | |||
required together with commons-net 1.4.x at run time.<br/><strong>Note</strong>: do not use commons-net 3.2 | |||
because of <a href="https://issues.apache.org/jira/browse/NET-493">performance issues</a> | |||
because of <a href="https://issues.apache.org/jira/browse/NET-493" target="_top">performance issues</a> | |||
</td> | |||
<td><a href="https://commons.apache.org/net/" target="_top">https://commons.apache.org/net/</a></td> | |||
</tr> | |||
@@ -890,8 +890,7 @@ these tasks available. Please refer to the <a href="#optionalTasks">Installing A | |||
<td>javax.mail-api.jar</td> | |||
<td><a href="Tasks/mail.html">mail</a> task with MIME encoding, | |||
and <em><u>deprecated</u></em> <a href="Tasks/mimemail.html">mimemail</a> task</td> | |||
<td><a href="https://javaee.github.io/javamail/" | |||
target="_top">https://javaee.github.io/javamail/</a></td> | |||
<td><a href="https://javaee.github.io/javamail/" target="_top">https://javaee.github.io/javamail/</a></td> | |||
</tr> | |||
<tr> | |||
<td>activation.jar<br/>(included in Java 6 and later runtime)</td> | |||
@@ -903,8 +902,7 @@ these tasks available. Please refer to the <a href="#optionalTasks">Installing A | |||
<tr> | |||
<td>jdepend.jar</td> | |||
<td><a href="Tasks/jdepend.html">jdepend</a> task</td> | |||
<td><a href="https://github.com/clarkware/jdepend" | |||
target="_top">https://github.com/clarkware/jdepend</a></td> | |||
<td><a href="https://github.com/clarkware/jdepend" target="_top">https://github.com/clarkware/jdepend</a></td> | |||
</tr> | |||
<tr> | |||
<td>resolver.jar <strong>1.1 or later</strong></td> | |||
@@ -27,8 +27,8 @@ | |||
<h2 id="Overview">Overview</h2> | |||
<p>Apache Ant has two related features to allow the build process to be monitored: | |||
listeners and loggers.</p> | |||
<p>Apache Ant has two related features to allow the build process to be monitored: listeners and | |||
loggers.</p> | |||
<h3 id="Listeners">Listeners</h3> | |||
@@ -44,19 +44,16 @@ listeners and loggers.</p> | |||
<li>message logged</li> | |||
</ul> | |||
<p> | |||
These are used internally for various recording and housekeeping operations, | |||
however new listeners may registered on the command line through the <code>-listener</code> | |||
argument. | |||
</p> | |||
<p>These are used internally for various recording and housekeeping operations, however new | |||
listeners may registered on the command line through the <code>-listener</code> argument.</p> | |||
<h3 id="Loggers">Loggers</h3> | |||
<p>Loggers extend the capabilities of listeners and add the following features:</p> | |||
<ul> | |||
<li>Receives a handle to the standard output and error print streams and | |||
therefore can log information to the console or the <code>-logfile</code> specified file.</li> | |||
<li>Receives a handle to the standard output and error print streams and therefore can log | |||
information to the console or the <code>-logfile</code> specified file.</li> | |||
<li>Logging level (<code>-quiet</code>, <code>-verbose</code>, <code>-debug</code>) aware</li> | |||
<li>Emacs-mode aware</li> | |||
</ul> | |||
@@ -71,8 +68,8 @@ listeners and loggers.</p> | |||
</tr> | |||
<tr> | |||
<td><code><a href="#DefaultLogger">org.apache.tools.ant.DefaultLogger</a></code></td> | |||
<td>The logger used implicitly unless overridden with the | |||
<code>-logger</code> command-line switch.</td> | |||
<td>The logger used implicitly unless overridden with the <code>-logger</code> command-line | |||
switch.</td> | |||
<td>BuildLogger</td> | |||
</tr> | |||
<tr> | |||
@@ -82,8 +79,8 @@ listeners and loggers.</p> | |||
</tr> | |||
<tr> | |||
<td><code><a href="#MailLogger">org.apache.tools.ant.listener.MailLogger</a></code></td> | |||
<td>Extends DefaultLogger such that output is still generated | |||
the same, and when the build is finished an e-mail can be sent.</td> | |||
<td>Extends DefaultLogger such that output is still generated the same, and when the build is | |||
finished an e-mail can be sent.</td> | |||
<td>BuildLogger</td> | |||
</tr> | |||
<tr> | |||
@@ -93,9 +90,9 @@ listeners and loggers.</p> | |||
</tr> | |||
<tr> | |||
<td><code><a href="#Log4jListener">org.apache.tools.ant.listener.Log4jListener</a></code></td> | |||
<td>Passes events to Apache Log4j for highly customizable logging.<br/> | |||
<em><u>Deprecated</u></em>: Apache Log4j (1.x) is not developed any more. Last | |||
release is 1.2.17 from 26 May 2012 and contains vulnerability issues.</td> | |||
<td>Passes events to Apache Log4j for highly customizable | |||
logging.<br/><em><u>Deprecated</u></em>: Apache Log4j (1.x) is not developed any more. Last | |||
release is 1.2.17 from 26 May 2012 and contains vulnerability issues.</td> | |||
<td>BuildListener</td> | |||
</tr> | |||
<tr> | |||
@@ -115,13 +112,14 @@ listeners and loggers.</p> | |||
</tr> | |||
<tr> | |||
<td><code><a href="#SimpleBigProjectLogger">org.apache.tools.ant.listener.SimpleBigProjectLogger</a></code></td> | |||
<td>Prints the project name for subprojects only, otherwise like NoBannerLogger <em>Since Ant 1.8.1</em></td> | |||
<td>Prints the project name for subprojects only, otherwise like NoBannerLogger <em>Since Ant | |||
1.8.1</em></td> | |||
<td>BuildLogger</td> | |||
</tr> | |||
<tr> | |||
<td><code><a href="#ProfileLogger">org.apache.tools.ant.listener.ProfileLogger</a></code></td> | |||
<td>The default logger, with start times, end times and | |||
durations added for each task and target.</td> | |||
<td>The default logger, with start times, end times and durations added for each task and | |||
target.</td> | |||
<td>BuildLogger</td> | |||
</tr> | |||
</table> | |||
@@ -137,9 +135,9 @@ listeners and loggers.</p> | |||
<pre>ant -logger org.apache.tools.ant.NoBannerLogger</pre> | |||
<h3 id="MailLogger">MailLogger</h3> | |||
<p>The MailLogger captures all output logged through DefaultLogger (standard Ant | |||
output) and will send success and failure messages to unique e-mail lists, with | |||
control for turning off success or failure messages individually.</p> | |||
<p>The MailLogger captures all output logged through DefaultLogger (standard Ant output) and will | |||
send success and failure messages to unique e-mail lists, with control for turning off success or | |||
failure messages individually.</p> | |||
<p>Properties controlling the operation of MailLogger:</p> | |||
<table> | |||
@@ -161,19 +159,18 @@ control for turning off success or failure messages individually.</p> | |||
<tr> | |||
<td><code>MailLogger.user</code></td> | |||
<td>user name for SMTP auth</td> | |||
<td>Yes, if SMTP auth is required on your SMTP server<br/> | |||
the email message will be then sent using MIME and requires JavaMail</td> | |||
<td>Yes, if SMTP auth is required on your SMTP server<br/> the email message will be then sent | |||
using MIME and requires JavaMail</td> | |||
</tr> | |||
<tr> | |||
<td><code>MailLogger.password</code></td> | |||
<td>password for SMTP auth</td> | |||
<td>Yes, if SMTP auth is required on your SMTP server<br/> | |||
the email message will be then sent using MIME and requires JavaMail</td> | |||
<td>Yes, if SMTP auth is required on your SMTP server<br/> the email message will be then sent | |||
using MIME and requires JavaMail</td> | |||
</tr> | |||
<tr> | |||
<td><code>MailLogger.ssl</code></td> | |||
<td>on or true if SSL is needed<br/> | |||
This feature requires JavaMail</td> | |||
<td>on or true if SSL is needed<br/>This feature requires JavaMail</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
@@ -258,7 +255,8 @@ control for turning off success or failure messages individually.</p> | |||
</tr> | |||
<tr> | |||
<td><code>MailLogger.starttls.enable</code></td> | |||
<td>on or true if <code>STARTTLS</code> should be supported (requires JavaMail). <em>Since Ant 1.8.0</em></td> | |||
<td>on or true if <code>STARTTLS</code> should be supported (requires JavaMail). <em>Since Ant | |||
1.8.0</em></td> | |||
<td>No; default is <q>false</q></td> | |||
</tr> | |||
<tr> | |||
@@ -272,42 +270,35 @@ control for turning off success or failure messages individually.</p> | |||
<h3 id="AnsiColorLogger">AnsiColorLogger</h3> | |||
<p>The AnsiColorLogger adds color to the standard Ant output | |||
by prefixing and suffixing ANSI color code escape sequences to | |||
it. It is just an extension of <a href="#DefaultLogger">DefaultLogger</a> | |||
<p>The AnsiColorLogger adds color to the standard Ant output by prefixing and suffixing ANSI color | |||
code escape sequences to it. It is just an extension of <a href="#DefaultLogger">DefaultLogger</a> | |||
and hence provides all features that DefaultLogger does.</p> | |||
<p>AnsiColorLogger differentiates the output by assigning | |||
different colors depending upon the type of the message.</p> | |||
<p>If used with the <code>-logfile</code> option, the output file | |||
will contain all the necessary escape codes to | |||
display the text in colorized mode when displayed | |||
in the console using applications like <code>cat</code>, <code>more</code>, etc.</p> | |||
<p>This is designed to work on terminals that support ANSI | |||
color codes. It works on XTerm, ETerm, Win9x Console | |||
(with ANSI.SYS loaded.), etc.</p> | |||
<p><strong>Note</strong>: It doesn't work on WinNT and successors, | |||
even when a <code>COMMAND.COM</code> console loaded with ANSI.SYS is used.</p> | |||
<p>If the user wishes to override the default colors | |||
with custom ones, a file containing zero or more of the | |||
custom color key-value pairs must be created. The recognized keys | |||
and their default values are shown below:</p> | |||
<p>AnsiColorLogger differentiates the output by assigning different colors depending upon the type | |||
of the message.</p> | |||
<p>If used with the <code>-logfile</code> option, the output file will contain all the necessary | |||
escape codes to display the text in colorized mode when displayed in the console using applications | |||
like <code>cat</code>, <code>more</code>, etc.</p> | |||
<p>This is designed to work on terminals that support ANSI color codes. It works on XTerm, ETerm, Win9x Console (with | |||
ANSI.SYS loaded.), etc.</p> | |||
<p><strong>Note</strong>: It doesn't work on WinNT and successors, even when | |||
a <code>COMMAND.COM</code> console loaded with ANSI.SYS is used.</p> | |||
<p>If the user wishes to override the default colors with custom ones, a file containing zero or | |||
more of the custom color key-value pairs must be created. The recognized keys and their default | |||
values are shown below:</p> | |||
<pre> | |||
AnsiColorLogger.ERROR_COLOR=2;31 | |||
AnsiColorLogger.WARNING_COLOR=2;35 | |||
AnsiColorLogger.INFO_COLOR=2;36 | |||
AnsiColorLogger.VERBOSE_COLOR=2;32 | |||
AnsiColorLogger.DEBUG_COLOR=2;34</pre> | |||
<p>Each key takes as value a color combination defined as | |||
<q>Attribute;Foreground;Background</q>. In the above example, background | |||
value has not been used.</p> | |||
<p>Each key takes as value a color combination defined as <q>Attribute;Foreground;Background</q>. | |||
In the above example, background value has not been used.</p> | |||
<p>This file must be specified as the value of a system variable | |||
named <code>ant.logger.defaults</code> and passed as an argument using | |||
the <code>-D</code> option to the <code>java</code> command that | |||
invokes the Ant application. An easy way to achieve this is to | |||
add <code>-Dant.logger.defaults=</code><samp>/path/to/your/file</samp> | |||
to the <code>ANT_OPTS</code> environment variable. Ant's launching | |||
script recognizes this flag and will pass it to the <code>java</code> | |||
command appropriately.</p> | |||
named <code>ant.logger.defaults</code> and passed as an argument using the <code>-D</code> option to | |||
the <code>java</code> command that invokes the Ant application. An easy way to achieve this is to | |||
add <code>-Dant.logger.defaults=</code><samp>/path/to/your/file</samp> to the <code>ANT_OPTS</code> | |||
environment variable. Ant's launching script recognizes this flag and will pass it to | |||
the <code>java</code> command appropriately.</p> | |||
<p>Format:</p> | |||
<pre> | |||
AnsiColorLogger.*=Attribute;Foreground;Background | |||
@@ -344,34 +335,32 @@ Background is one of the following: | |||
<pre>ant -logger org.apache.tools.ant.listener.AnsiColorLogger</pre> | |||
<h3 id="Log4jListener">Log4jListener</h3> | |||
<p><em><u>Deprecated</u></em>: Apache Log4j (1) is not developed any more. Last | |||
release is 1.2.17 from 26 May 2012 and contains vulnerability issues.</p> | |||
<p>Passes build events to Log4j, using the full classname's of the generator of | |||
each build event as the category:</p> | |||
<p><em><u>Deprecated</u></em>: Apache Log4j (1) is not developed any more. Last release is 1.2.17 | |||
from 26 May 2012 and contains vulnerability issues.</p> | |||
<p>Passes build events to Log4j, using the full classname's of the generator of each build event as | |||
the category:</p> | |||
<ul> | |||
<li>build started / build finished—<code>org.apache.tools.ant.Project</code></li> | |||
<li>target started / target finished—<code>org.apache.tools.ant.Target</code></li> | |||
<li>task started / task finished—the fully qualified classname of the task</li> | |||
<li>message logged—the classname of one of the above, so if a task logs a | |||
message, its classname is the category used, and so on.</li> | |||
<li>message logged—the classname of one of the above, so if a task logs a message, its | |||
classname is the category used, and so on.</li> | |||
</ul> | |||
<p>All start events are logged as INFO. Finish events are either logged as | |||
INFO or ERROR depending on whether the build failed during that stage. Message | |||
events are logged according to their Ant logging level, mapping directly to a | |||
corresponding Log4j level.</p> | |||
<p>All start events are logged as INFO. Finish events are either logged as INFO or ERROR depending | |||
on whether the build failed during that stage. Message events are logged according to their Ant | |||
logging level, mapping directly to a corresponding Log4j level.</p> | |||
<pre>ant -listener org.apache.tools.ant.listener.Log4jListener</pre> | |||
<p>To use Log4j you will need the Log4j JAR file and a <samp>log4j.properties</samp> | |||
configuration file. Both should be placed somewhere in your Ant | |||
classpath. If the <samp>log4j.properties</samp> is in your project root folder you can | |||
add this with <code>-lib</code> option:</p> | |||
<p>To use Log4j you will need the Log4j JAR file and a <samp>log4j.properties</samp> configuration | |||
file. Both should be placed somewhere in your Ant classpath. If the <samp>log4j.properties</samp> | |||
is in your project root folder you can add this with <code>-lib</code> option:</p> | |||
<pre>ant -listener org.apache.tools.ant.listener.Log4jListener -lib .</pre> | |||
<p>If, for example, you wanted to capture the same information output to the | |||
console by the DefaultLogger and send it to a file named <samp>build.log</samp>, you | |||
could use the following configuration:</p> | |||
<p>If, for example, you wanted to capture the same information output to the console by the | |||
DefaultLogger and send it to a file named <samp>build.log</samp>, you could use the following | |||
configuration:</p> | |||
<pre> | |||
log4j.rootLogger=ERROR, LogFile | |||
@@ -385,22 +374,22 @@ log4j.appender.LogFile.layout=org.apache.log4j.PatternLayout | |||
log4j.appender.LogFile.layout.ConversionPattern=[%6r] %8c{1} : %m%n | |||
log4j.appender.LogFile.file=build.log</pre> | |||
<p>For more information about configuring Log4J see <a href="https://logging.apache.org/log4j/1.2/">its | |||
documentation page</a>.</p> | |||
<p>For more information about configuring Log4J see <a href="https://logging.apache.org/log4j/1.2/" | |||
target="_top">its documentation page</a>.</p> | |||
<h4>Using the Log4j 1.2 Bridge</h4> | |||
You could use the <a href="https://logging.apache.org/log4j/2.x/log4j-1.2-api/index.html">Log4j Bridge</a> | |||
if your application is written against the Log4j (1.x) API, but you want to use the Log4j 2.x runtime. | |||
For using the bridge with Ant you have to add | |||
<p>You could use the <a href="https://logging.apache.org/log4j/2.x/log4j-1.2-api/index.html" | |||
target="_top">Log4j Bridge</a> if your application is written against the Log4j (1.x) API, but you | |||
want to use the Log4j 2.x runtime. For using the bridge with Ant you have to add</p> | |||
<ul> | |||
<li><samp>log4j-1.2-api-${log4j.version}.jar</samp></li> | |||
<li><samp>log4j-api-${log4j.version}.jar</samp></li> | |||
<li><samp>log4j-core-${log4j.version}.jar</samp></li> | |||
<li><samp>log4j2.xml</samp></li> | |||
</ul> | |||
to your classpath, e.g. via the <code>-lib</code> option. | |||
(For using the bridge, Ant 1.9.10/1.10.2 or higher is required.) | |||
Translating the 1.x properties file into the 2.x xml syntax would result in | |||
<p>to your classpath, e.g. via the <code>-lib</code> option. (For using the bridge, Ant | |||
1.9.10/1.10.2 or higher is required.) Translating the 1.x properties file into the 2.x XML syntax | |||
would result in</p> | |||
<pre> | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<Configuration status="WARN"> | |||
@@ -423,40 +412,31 @@ Translating the 1.x properties file into the 2.x xml syntax would result in | |||
</Configuration></pre> | |||
<h3 id="XmlLogger">XmlLogger</h3> | |||
<p>Writes all build information out to an XML file | |||
named <samp>log.xml</samp>, or the value of | |||
the <code>XmlLogger.file</code> property if present, when used as a | |||
listener. When used as a logger, it writes all output to either the | |||
console or to the value of <code>-logfile</code>. Whether used as a | |||
listener or logger, the output is not generated until the build is | |||
complete, as it buffers the information in order to provide timing | |||
information for task, targets, and the project.</p> | |||
<p>By default the XML file creates a reference to an XSLT | |||
file <samp>log.xsl</samp> in the current directory; look | |||
in <samp>ANT_HOME/etc</samp> for one of these. You can set the | |||
property <code>ant.XmlLogger.stylesheet.uri</code> to provide a URI | |||
to a style sheet. This can be a relative or absolute file path, or | |||
an HTTP URL. If you set the property to the empty string, <q></q>, | |||
no XSLT transform is declared at all.</p> | |||
<p>Writes all build information out to an XML file named <samp>log.xml</samp>, or the value of | |||
the <code>XmlLogger.file</code> property if present, when used as a listener. When used as a logger, | |||
it writes all output to either the console or to the value of <code>-logfile</code>. Whether used as | |||
a listener or logger, the output is not generated until the build is complete, as it buffers the | |||
information in order to provide timing information for task, targets, and the project.</p> | |||
<p>By default the XML file creates a reference to an XSLT file <samp>log.xsl</samp> in the current | |||
directory; look in <samp>ANT_HOME/etc</samp> for one of these. You can set the | |||
property <code>ant.XmlLogger.stylesheet.uri</code> to provide a URI to a style sheet. This can be a | |||
relative or absolute file path, or an HTTP URL. If you set the property to the empty | |||
string, <q></q>, no XSLT transform is declared at all.</p> | |||
<pre>ant -listener org.apache.tools.ant.XmlLogger | |||
ant -logger org.apache.tools.ant.XmlLogger -verbose -logfile build_log.xml</pre> | |||
<h3 id="TimestampedLogger">TimestampedLogger</h3> | |||
<p> | |||
Acts like the default logger, except that the final success/failure message also includes | |||
the time that the build completed. For example: | |||
</p> | |||
<p>Acts like the default logger, except that the final success/failure message also includes the | |||
time that the build completed. For example:</p> | |||
<pre>BUILD SUCCESSFUL - at 16/08/05 16:24</pre> | |||
<p>To use this listener, use the command:</p> | |||
<pre>ant -logger org.apache.tools.ant.listener.TimestampedLogger</pre> | |||
<h3 id="BigProjectLogger">BigProjectLogger</h3> | |||
<p> | |||
This logger is designed to make examining the logs of a big build easier, | |||
especially those run under continuous integration tools. It | |||
</p> | |||
<p>This logger is designed to make examining the logs of a big build easier, especially those run | |||
under continuous integration tools. It</p> | |||
<ol> | |||
<li>When entering a child project, prints its name and directory</li> | |||
<li>When exiting a child project, prints its name</li> | |||
@@ -464,12 +444,9 @@ especially those run under continuous integration tools. It | |||
<li>Omits logging the names of all targets that have no direct task output</li> | |||
<li>Includes the build finished timestamp of the TimeStamp logger</li> | |||
</ol> | |||
<p> | |||
This is useful when using <code><subant></code> to build a large project | |||
from many smaller projects—the output shows which particular | |||
project is building. Here is an example in which "clean" is being called | |||
on all a number of child projects, only some of which perform work: | |||
</p> | |||
<p>This is useful when using <code><subant></code> to build a large project from many smaller | |||
projects—the output shows which particular project is building. Here is an example in which | |||
"clean" is being called on all a number of child projects, only some of which perform work:</p> | |||
<pre> | |||
====================================================================== | |||
Entering project "xunit" | |||
@@ -493,20 +470,16 @@ In /home/ant/components/junit | |||
Exiting project "junit" | |||
======================================================================</pre> | |||
<p> | |||
The entry and exit messages are very verbose in this example, but in | |||
a big project compiling or testing many child components, the messages | |||
are reduced to becoming clear delimiters of where different projects | |||
are in charge—or, more importantly, which project is failing. | |||
</p> | |||
<p>The entry and exit messages are very verbose in this example, but in a big project compiling or | |||
testing many child components, the messages are reduced to becoming clear delimiters of where | |||
different projects are in charge—or, more importantly, which project is failing.</p> | |||
<p>To use this listener, use the command:</p> | |||
<pre>ant -logger org.apache.tools.ant.listener.BigProjectLogger</pre> | |||
<h3 id="SimpleBigProjectLogger">SimpleBigProjectLogger</h3> | |||
<p><em>Since Ant 1.8.1</em></p> | |||
<p>Like <code>BigProjectLogger</code>, project-qualified target names | |||
are printed, useful for big builds with subprojects. Otherwise it is | |||
as quiet as <code>NoBannerLogger</code>:</p> | |||
<p>Like <code>BigProjectLogger</code>, project-qualified target names are printed, useful for big | |||
builds with subprojects. Otherwise it is as quiet as <code>NoBannerLogger</code>:</p> | |||
<pre> | |||
Buildfile: /sources/myapp/build.xml | |||
@@ -532,10 +505,9 @@ Total time: 1 second</pre> | |||
<h3 id="ProfileLogger">ProfileLogger</h3> | |||
<!-- This is the 'since' as described in the Loggers JavaDoc --> | |||
<p><em>Since Ant 1.8.0</em></p> | |||
<p>This logger stores the time needed for executing a task, target and | |||
the whole build and prints these information. The output contains a | |||
timestamp when entering the build, target or task and a timestamp | |||
and the needed time when exiting.</p> | |||
<p>This logger stores the time needed for executing a task, target and the whole build and prints | |||
these information. The output contains a timestamp when entering the build, target or task and a | |||
timestamp and the needed time when exiting.</p> | |||
<h4>Example</h4> | |||
Having that buildfile | |||
<pre> | |||
@@ -550,7 +522,8 @@ Having that buildfile | |||
<echo>another-echo-task</echo> | |||
</target> | |||
</project></pre> | |||
and executing with <code>ant -logger org.apache.tools.ant.listener.ProfileLogger anotherTarget</code> gives that output (with other timestamps and duration of course ;-): | |||
<p>and executing with <code>ant -logger org.apache.tools.ant.listener.ProfileLogger | |||
anotherTarget</code> gives that output (with other timestamps and duration of course ;-):</p> | |||
<pre> | |||
Buildfile: ...\build.xml | |||
@@ -588,22 +561,24 @@ Total time: 2 seconds</pre> | |||
<ul> | |||
<li> | |||
A listener or logger should not write to standard output or error in the <code>messageLogged()</code> method; | |||
Ant captures these internally and it will trigger an infinite loop. | |||
A listener or logger should not write to standard output or error in | |||
the <code>messageLogged()</code> method; Ant captures these internally and it will trigger an | |||
infinite loop. | |||
</li> | |||
<li> | |||
Logging is synchronous; all listeners and loggers are called one after the other, with the build blocking until | |||
the output is processed. Slow logging means a slow build. | |||
Logging is synchronous; all listeners and loggers are called one after the other, with the build | |||
blocking until the output is processed. Slow logging means a slow build. | |||
</li> | |||
<li>When a build is started, and <code>BuildListener.buildStarted(BuildEvent event)</code> is called, | |||
the project is not fully functional. The build has started, yes, and the <code>event.getProject()</code> method call | |||
returns the Project instance, but that project is initialized with JVM and Ant properties, nor has it | |||
parsed the build file yet. You cannot call <code>Project.getProperty()</code> for property lookup, or | |||
<li>When a build is started, and <code>BuildListener.buildStarted(BuildEvent event)</code> is | |||
called, the project is not fully functional. The build has started, yes, and | |||
the <code>event.getProject()</code> method call returns the Project instance, but that project | |||
is initialized with JVM and Ant properties, nor has it parsed the build file yet. You cannot | |||
call <code>Project.getProperty()</code> for property lookup, or | |||
<code>Project.getName()</code> to get the project name (it will return null). | |||
</li> | |||
<li> | |||
Classes that implement <code>org.apache.tools.ant.SubBuildListener</code> receive notifications when child projects | |||
start and stop. | |||
Classes that implement <code>org.apache.tools.ant.SubBuildListener</code> receive notifications | |||
when child projects start and stop. | |||
</li> | |||
</ul> | |||
@@ -27,100 +27,83 @@ | |||
<h2>Java versions</h2> | |||
<h3>Java 5</h3> | |||
<p> | |||
You may need a bigger stack than default, especially if you are using | |||
the built in XSLT engine. We recommend you use Apache Xalan; indeed, | |||
some tasks (JUnit report in XML, for example) may not work against the | |||
shipping XSL engine. | |||
You may need a bigger stack than default, especially if you are using the built in XSLT engine. We | |||
recommend you use Apache Xalan; indeed, some tasks (JUnit report in XML, for example) may not work | |||
against the shipping XSL engine. | |||
</p> | |||
<h2>Unix and Linux</h2> | |||
<ul> | |||
<li>You should use a GNU version of <code>tar</code> to untar the Apache | |||
Ant source tree, if you have downloaded this as a tar file. If you get | |||
weird errors about missing files, this is the problem.</li> | |||
<li>Ant does not preserve file permissions when a file is copied, | |||
moved or archived, because Java does not let it read or write the | |||
permissions. Use <code><chmod></code> to set permissions, and | |||
when creating a tar archive, use the <var>mode</var> attribute | |||
of <code><tarfileset></code> to set the permissions in the tar | |||
file, or <code><apply></code> the real tar program.</li> | |||
<li>Ant is not symbolic link aware in moves, deletes and when | |||
recursing down a tree of directories to build up a list of | |||
files. Unexpected things can happen.</li> | |||
<li>Linux on IA-64: apparently you need a larger heap than the default | |||
one (64M) to compile big projects. If you get out of heap errors, | |||
either increase the heap or use a forking javac. Better yet, use jikes | |||
for extra compilation speed.</li> | |||
<li>You should use a GNU version of <code>tar</code> to untar the Apache Ant source tree, if you | |||
have downloaded this as a tar file. If you get weird errors about missing files, this is the | |||
problem.</li> | |||
<li>Ant does not preserve file permissions when a file is copied, moved or archived, because Java | |||
does not let it read or write the permissions. Use <code><chmod></code> to set permissions, | |||
and when creating a tar archive, use the <var>mode</var> attribute | |||
of <code><tarfileset></code> to set the permissions in the tar file, | |||
or <code><apply></code> the real tar program.</li> | |||
<li>Ant is not symbolic link aware in moves, deletes and when recursing down a tree of directories | |||
to build up a list of files. Unexpected things can happen.</li> | |||
<li>Linux on IA-64: apparently you need a larger heap than the default one (64M) to compile big | |||
projects. If you get out of heap errors, either increase the heap or use a | |||
forking <code>javac</code>. Better yet, use jikes for extra compilation speed.</li> | |||
</ul> | |||
<h2>Microsoft Windows</h2> | |||
<p> | |||
Windows 9x (win95, win98, win98SE and winME) are not supported in Ant1.7, | |||
Windows 9x (win95, win98, win98SE and winME) are not supported <em>since Ant 1.7</em>. | |||
</p> | |||
<p> | |||
The Ant team has retired support for these products because they are | |||
outdated and can expose customers to security risks. We recommend that | |||
customers who are still running Windows 98 or Windows Me upgrade to a | |||
newer, more secure operating system, as soon as possible. | |||
The Ant team has retired support for these products because they are outdated and can expose | |||
customers to security risks. We recommend that customers who are still running Windows 98 or Windows | |||
ME upgrade to a newer, more secure operating system, as soon as possible. | |||
</p> | |||
<p> | |||
Customers who upgrade to Linux report improved security, richer | |||
functionality, and increased productivity. | |||
Customers who upgrade to Linux report improved security, richer functionality, and increased | |||
productivity. | |||
</p> | |||
<h2>Microsoft Windows 2K, XP and Server 2K03</h2> | |||
<p> | |||
Windows 9x (win95, win98, win98SE and winME) has a batch file system | |||
which does not work fully with long file names, so we recommend that | |||
ant and the JDK are installed into directories without spaces, and | |||
with 8.3 filenames. The Perl and Python launcher scripts do not | |||
suffer from this limitation. | |||
Windows 9x (win95, win98, win98SE and winME) has a batch file system which does not work fully with | |||
long file names, so we recommend that Ant and JDK are installed into directories without spaces, and | |||
with 8.3 filenames. The Perl and Python launcher scripts do not suffer from this limitation. | |||
</p> | |||
<p> | |||
All versions of Windows are usually case insensitive, although mounted | |||
file systems (Unix drives, ClearCase views) can be case sensitive | |||
underneath, confusing patternsets. | |||
All versions of Windows are usually case insensitive, although mounted file systems (Unix drives, | |||
ClearCase views) can be case sensitive underneath, confusing patternsets. | |||
</p> | |||
<p> | |||
Ant can often not delete a directory which is open in an Explorer | |||
window. There is nothing we can do about this short of spawning a | |||
program to kill the shell before deleting directories. Nor can files | |||
that are in use be overwritten. | |||
Ant can often not delete a directory which is open in an Explorer window. There is nothing we can | |||
do about this short of spawning a program to kill the shell before deleting directories. Nor can | |||
files that are in use be overwritten. | |||
</p> | |||
<p> | |||
Finally, if any Ant task fails with an <code>error=2</code>, it | |||
means that whatever native program Ant is trying to run, it is not | |||
on the path. | |||
Finally, if any Ant task fails with an <code>error=2</code>, it means that whatever native program | |||
Ant is trying to run, it is not on the path. | |||
</p> | |||
<h2>Microsoft Windows Vista</h2> | |||
<p> | |||
There are reports of problems with Windows Vista security bringing | |||
up dialog boxes asking if the user wants to run an untrusted | |||
executable during an Ant run, such as when the <signjar> task | |||
runs the <code>jarsigner.exe</code> program. This is beyond Ant's | |||
control, and stems from the OS trying to provide some illusion of | |||
security by being reluctant to run unsigned native executables. The | |||
latest Java versions appear to resolve this problem by having signed | |||
binaries. | |||
There are reports of problems with Windows Vista security bringing up dialog boxes asking if the | |||
user wants to run an untrusted executable during an Ant run, such as when the <signjar> task | |||
runs the <code>jarsigner.exe</code> program. This is beyond Ant's control, and stems from the OS | |||
trying to provide some illusion of security by being reluctant to run unsigned native executables. | |||
The latest Java versions appear to resolve this problem by having signed binaries. | |||
</p> | |||
<h2>Cygwin</h2> | |||
<p> | |||
Cygwin is not an operating system; rather it is an application suite | |||
running under Windows and providing some UNIX like functionality. Sun | |||
has not created any specific Java Development Kit or Java Runtime | |||
Environment for cygwin. See this | |||
link: <a href="http://www.inonit.com/cygwin/faq/">http://www.inonit.com/cygwin/faq/</a>. | |||
Only Windows path names are supported by JDK and JRE tools under | |||
Windows or cygwin. Relative path names such as "src/org/apache/tools" | |||
are supported, but Java tools do not | |||
understand <samp>/cygdrive/c</samp> to mean <samp>c:\</samp>. | |||
Cygwin is not an operating system; rather it is an application suite running under Windows and | |||
providing some UNIX like functionality. Sun has not created any specific Java Development Kit or | |||
Java Runtime Environment for cygwin. See this link: <a href="http://www.inonit.com/cygwin/faq/" | |||
target="_top">http://www.inonit.com/cygwin/faq/</a>. Only Windows path names are supported by JDK | |||
and JRE tools under Windows or cygwin. Relative path names such as <samp>src/org/apache/tools</samp> | |||
are supported, but Java tools do not understand <samp>/cygdrive/c</samp> to mean <samp>c:\</samp>. | |||
</p> | |||
<p> | |||
The utility <code>cygpath</code> (used industrially in | |||
the <code>ant</code> script to support cygwin) can convert cygwin path | |||
names to Windows. You can use the <code><exec></code> task in | |||
The utility <code>cygpath</code> (used industrially in the <code>ant</code> script to support | |||
cygwin) can convert cygwin path names to Windows. You can use the <code><exec></code> task in | |||
Ant to convert cygwin paths to Windows path, for instance like that: | |||
</p> | |||
<pre> | |||
@@ -132,42 +115,38 @@ Ant to convert cygwin paths to Windows path, for instance like that: | |||
<echo message="${windows.pathname}"/> | |||
</pre> | |||
<p> | |||
We get lots of support calls from Cygwin users. Either it is | |||
incredibly popular, or it is trouble. If you do use it, remember that | |||
Java is a Windows application, so Ant is running in a Windows process, | |||
not a Cygwin one. This will save us having to mark your bug reports as | |||
invalid. | |||
We get lots of support calls from Cygwin users. Either it is incredibly popular, or it is | |||
trouble. If you do use it, remember that Java is a Windows application, so Ant is running in a | |||
Windows process, not a Cygwin one. This will save us having to mark your bug reports as invalid. | |||
</p> | |||
<h2>Apple MacOS X/macOS</h2> | |||
<p> | |||
MacOS X a.k.a. macOS is the first of the Apple platforms that Ant | |||
supports completely; it is treated like any other Unix. | |||
MacOS X a.k.a. macOS is the first of the Apple platforms that Ant supports completely; it is treated | |||
like any other Unix. | |||
</p> | |||
<h2>Novell Netware</h2> | |||
<p> | |||
To give the same level of sophisticated control as Ant's startup | |||
scripts on other platforms, it was decided to make the main ant | |||
startup on NetWare be via a Perl Script, <code>runant.pl</code>. This | |||
is found in the <samp>bin</samp> directory (for | |||
instance—<samp>bootstrap\bin</samp> | |||
To give the same level of sophisticated control as Ant's startup scripts on other platforms, it was | |||
decided to make the main ant startup on NetWare be via a Perl Script, <code>runant.pl</code>. This | |||
is found in the <samp>bin</samp> directory (for instance—<samp>bootstrap\bin</samp> | |||
or <samp>dist\bin</samp>). | |||
</p> | |||
<p>One important item of note is that you need to set up the following to run Ant:</p> | |||
<ul> | |||
<li><code>CLASSPATH</code>—put <samp>ant.jar</samp> and any other needed jars on the system classpath.</li> | |||
<li><code>ANT_OPTS</code>—On NetWare, <code>ANT_OPTS</code> | |||
needs to include a parameter of the | |||
form, <code>-envCWD=<i>ANT_HOME</i></code>, | |||
with <code><i>ANT_HOME</i></code> being the fully expanded location | |||
of Ant, <strong>not</strong> an environment variable. This is due | |||
to the fact that the NetWare System Console has no notion of a | |||
current working directory.</li> | |||
<li><code>CLASSPATH</code>—put <samp>ant.jar</samp> and any other needed jars on the system | |||
classpath.</li> | |||
<li><code>ANT_OPTS</code>—On NetWare, <code>ANT_OPTS</code> needs to include a parameter of | |||
the form, <code>-envCWD=<i>ANT_HOME</i></code>, with <code><i>ANT_HOME</i></code> being the | |||
fully expanded location of Ant, <strong>not</strong> an environment variable. This is due to | |||
the fact that the NetWare System Console has no notion of a current working directory.</li> | |||
</ul> | |||
<p>It is suggested that you create up an ant.ncf that sets up these parameters, and calls <samp>perl ANT_HOME/dist/bin/runant.pl</samp></p> | |||
<p>The following is an example of such an NCF file (assuming Ant is installed in <samp>sys:/apache-ant/</samp>):</p> | |||
<p>It is suggested that you create up an <samp>ant.ncf</samp> that sets up these parameters, and | |||
calls <samp>perl ANT_HOME/dist/bin/runant.pl</samp></p> | |||
<p>The following is an example of such an NCF file (assuming Ant is installed | |||
in <samp>sys:/apache-ant/</samp>):</p> | |||
<pre> | |||
envset CLASSPATH=sys:/apache-ant/bootstrap/lib/ant.jar | |||
envset CLASSPATH=$CLASSPATH;sys:/apache-ant/lib/optional/junit.jar | |||
@@ -180,18 +159,16 @@ envset ANT_HOME=sys:/apache-ant/dist/lib | |||
perl sys:/apache-ant/dist/bin/runant.pl</pre> | |||
<p>Ant works on JVM version 1.3 or higher. You may have some luck | |||
running it on JVM 1.2, but serious problems have been found running | |||
Ant on JVM 1.1.7B. These problems are caused by JVM bugs that will | |||
not be fixed.</p> | |||
<p>Ant works on JVM version 1.3 or higher. You may have some luck running it on JVM 1.2, but | |||
serious problems have been found running Ant on JVM 1.1.7B. These problems are caused by JVM bugs | |||
that will not be fixed.</p> | |||
<p>JVM 1.3 is supported on Novell NetWare versions 5.1 and higher.</p> | |||
<h2>Other platforms</h2> | |||
<p> | |||
Support for other platforms is not guaranteed to be complete, as | |||
certain techniques to hide platform details from build files need to | |||
be written and tested on every particular platform. Contributions in | |||
this area are welcome. | |||
Support for other platforms is not guaranteed to be complete, as certain techniques to hide platform | |||
details from build files need to be written and tested on every particular platform. Contributions | |||
in this area are welcome. | |||
</p> | |||
</body> | |||
@@ -25,67 +25,61 @@ | |||
<body> | |||
<h1>Properties</h1> | |||
<p>Properties are key-value pairs where Apache Ant tries to | |||
expand <code>${key}</code> to <code>value</code> at runtime.</p> | |||
<p>There are many tasks that can set properties, the most common one | |||
is the <a href="Tasks/property.html">property</a> task. In | |||
addition properties can be defined | |||
via <a href="running.html">command line arguments</a> or similar | |||
mechanisms from outside of Ant.</p> | |||
<p>Normally property values can not be changed, once a property is | |||
set, most tasks will not allow its value to be modified. In | |||
general properties are of global scope, i.e. once they have been | |||
defined they are available for any task or target invoked | |||
subsequently—it is not possible to set a property in a child | |||
build process created via | |||
<p>Properties are key-value pairs where Apache Ant tries to expand <code>${key}</code> | |||
to <code>value</code> at runtime.</p> | |||
<p>There are many tasks that can set properties, the most common one is | |||
the <a href="Tasks/property.html">property</a> task. In addition properties can be defined | |||
via <a href="running.html">command line arguments</a> or similar mechanisms from outside of | |||
Ant.</p> | |||
<p>Normally property values can not be changed, once a property is set, most tasks will not allow | |||
its value to be modified. In general properties are of global scope, i.e. once they have been | |||
defined they are available for any task or target invoked subsequently—it is not possible | |||
to set a property in a child build process created via | |||
the <a href="Tasks/ant.html">ant</a>, <a href="Tasks/antcall.html">antcall</a> | |||
or <a href="Tasks/subant.html">subant</a> tasks and make it | |||
available to the calling build process, though.</p> | |||
or <a href="Tasks/subant.html">subant</a> tasks and make it available to the calling build | |||
process, though.</p> | |||
<p><em>Since Ant 1.8.0</em> the <a href="Tasks/local.html">local</a> | |||
task can be used to create properties that are locally scoped to a | |||
target or a <a href="Tasks/sequential.html">sequential</a> element | |||
like the one of the <a href="Tasks/macrodef.html">macrodef</a> | |||
task.</p> | |||
<p><em>Since Ant 1.8.0</em> the <a href="Tasks/local.html">local</a> task can be used to create | |||
properties that are locally scoped to a target or | |||
a <a href="Tasks/sequential.html">sequential</a> element like the one of | |||
the <a href="Tasks/macrodef.html">macrodef</a> task.</p> | |||
<h2 id="built-in-props">Built-in Properties</h2> | |||
<p>Ant provides access to all system properties as if they had been | |||
defined using a <code><property></code> task. For | |||
example, <samp>${os.name}</samp> expands to the name of the | |||
operating system.</p> | |||
<p>Ant provides access to all system properties as if they had been defined using | |||
a <code><property></code> task. For example, <samp>${os.name}</samp> expands to the name | |||
of the operating system.</p> | |||
<p>For a list of system properties, | |||
see <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#getProperties--">the javadoc of System.getProperties</a>. | |||
see <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#getProperties--" | |||
target="_top">the javadoc of System.getProperties</a>. | |||
</p> | |||
<p>In addition, Ant has some built-in properties:</p> | |||
<dl> | |||
<dt><code>basedir</code></dt> | |||
<dd>the absolute path of the project's basedir (as set | |||
with the <var>basedir</var> attribute of <a href="using.html#projects"><project></a>).</dd> | |||
<dd>the absolute path of the project's basedir (as set with | |||
the <var>basedir</var> attribute | |||
of <a href="using.html#projects"><project></a>).</dd> | |||
<dt><code>ant.file</code></dt> | |||
<dd>the absolute path of the buildfile.</dd> | |||
<dt><code>ant.version</code></dt> | |||
<dd>the version of Ant</dd> | |||
<dt><code>ant.project.name</code></dt> | |||
<dd>the name of the project that is currently executing; it is set | |||
in the <var>name</var> attribute of <project>.</dd> | |||
<dd>the name of the project that is currently executing; it is set in the <var>name</var> | |||
attribute of <project>.</dd> | |||
<dt><code>ant.project.default-target</code></dt> | |||
<dd>the name of the currently executing project's default target; | |||
it is set via the <var>default</var> attribute | |||
of <code><project></code>.</dd> | |||
<dd>the name of the currently executing project's default target; it is set via | |||
the <var>default</var> attribute of <code><project></code>.</dd> | |||
<dt><code>ant.project.invoked-targets</code></dt> | |||
<dd>a comma separated list of the targets that have been specified | |||
on the command line (the IDE, an <code><ant></code> task | |||
...) when invoking the current project.<br/> | |||
This property is set properly when the first target is executed. | |||
If you use it in the implicit target (directly under | |||
the <code><project></code> tag) the list will be empty if | |||
no target has been specified while it will contain the project's | |||
default target in this case for tasks nested into targets.</dd> | |||
<dd>a comma separated list of the targets that have been specified on the command line (the IDE, | |||
an <code><ant></code> task ...) when invoking the current project.<br/> This property | |||
is set properly when the first target is executed. If you use it in the implicit target | |||
(directly under the <code><project></code> tag) the list will be empty if no target has | |||
been specified while it will contain the project's default target in this case for tasks | |||
nested into targets.</dd> | |||
<dt><code>ant.java.version</code></dt> | |||
<dd>the JVM version Ant detected; currently it can hold the | |||
values <q>9</q>, <q>1.8</q>, <q>1.7</q>, <q>1.6</q>, <q>1.5</q>, <q>1.4</q>, <q>1.3</q> | |||
@@ -94,83 +88,69 @@ | |||
<dd>the absolute path of the <samp>ant.jar</samp> file.</dd> | |||
</dl> | |||
<p>There is also another property, but this is set by the launcher | |||
script and therefore maybe not set inside IDEs:</p> | |||
<p>There is also another property, but this is set by the launcher script and therefore maybe not | |||
set inside IDEs:</p> | |||
<dl> | |||
<dt><code>ant.home</code></dt> | |||
<dd>home directory of Ant</dd> | |||
</dl> | |||
<p>The following property is only set if Ant is started via the | |||
Launcher class (which means it may not be set inside IDEs | |||
either):</p> | |||
<p>The following property is only set if Ant is started via the Launcher class (which means it may | |||
not be set inside IDEs either):</p> | |||
<dl> | |||
<dt><code>ant.library.dir</code></dt> | |||
<dd>the directory that has been used to load Ant's | |||
jars from. In most cases this is <samp>ANT_HOME/lib</samp>.</dd> | |||
<dd>the directory that has been used to load Ant's jars from. In most cases this | |||
is <samp>ANT_HOME/lib</samp>.</dd> | |||
</dl> | |||
<h1 id="propertyHelper">PropertyHelpers</h1> | |||
<p>Ant's property handling is accomplished by an instance | |||
of <code>org.apache.tools.ant.PropertyHelper</code> associated | |||
with the current Project. You can learn more about this class by | |||
examining Ant's Java API. In Ant 1.8 the PropertyHelper class was | |||
much reworked and now itself employs a number of helper classes | |||
(actually instances of | |||
the <code>org.apache.tools.ant.PropertyHelper$Delegate</code> | |||
marker interface) to take care of discrete tasks such as property | |||
setting, retrieval, parsing, etc. This makes Ant's property | |||
of <code>org.apache.tools.ant.PropertyHelper</code> associated with the current Project. You | |||
can learn more about this class by examining Ant's Java API. In Ant 1.8 the PropertyHelper class | |||
was much reworked and now itself employs a number of helper classes (actually instances of | |||
the <code>org.apache.tools.ant.PropertyHelper$Delegate</code> marker interface) to take care of | |||
discrete tasks such as property setting, retrieval, parsing, etc. This makes Ant's property | |||
handling highly extensible; also of interest is the | |||
new <a href="Tasks/propertyhelper.html">propertyhelper</a> task | |||
used to manipulate the PropertyHelper and its delegates from the | |||
context of the Ant buildfile.</p> | |||
new <a href="Tasks/propertyhelper.html">propertyhelper</a> task used to manipulate the | |||
PropertyHelper and its delegates from the context of the Ant buildfile.</p> | |||
<p>There are three sub-interfaces of <code>Delegate</code> that may be | |||
useful to implement.</p> | |||
<p>There are three sub-interfaces of <code>Delegate</code> that may be useful to implement.</p> | |||
<ul> | |||
<li><code>org.apache.tools.ant.property.PropertyExpander</code> is | |||
responsible for finding the property name inside a string in the | |||
first place (the default extracts <samp>foo</samp> | |||
<li><code>org.apache.tools.ant.property.PropertyExpander</code> is responsible for finding the | |||
property name inside a string in the first place (the default extracts <samp>foo</samp> | |||
from <samp>${foo}</samp>). | |||
<p>This is the interface you'd implement if you wanted to invent | |||
your own property syntax—or allow nested property expansions | |||
since the default implementation doesn't balance braces | |||
(see <a href="https://git-wip-us.apache.org/repos/asf?p=ant-antlibs-props.git;a=blob;f=src/main/org/apache/ant/props/NestedPropertyExpander.java;hb=HEAD"><code>NestedPropertyExpander</code> | |||
in the <samp>props</samp> Antlib</a> for an example).</p> | |||
<p>This is the interface you'd implement if you wanted to invent your own property | |||
syntax—or allow nested property expansions since the default implementation doesn't | |||
balance braces | |||
(see <a href="https://git-wip-us.apache.org/repos/asf?p=ant-antlibs-props.git;a=blob;f=src/main/org/apache/ant/props/NestedPropertyExpander.java;hb=HEAD" | |||
target="_top"><code>NestedPropertyExpander</code> in the <samp>props</samp> Antlib</a> for | |||
an example).</p> | |||
</li> | |||
<li><code>org.apache.tools.ant.PropertyHelper$PropertyEvaluator</code> | |||
is used to expand <samp>${some-string}</samp> into | |||
an <code>Object</code>. | |||
<p>This is the interface you'd implement if you want to provide | |||
your own storage independent of Ant's project instance—the | |||
interface represents the reading end. An example for this | |||
would | |||
be <code>org.apache.tools.ant.property.LocalProperties</code> | |||
which implements storage | |||
for <a href="Tasks/local.html">local properties</a>.</p> | |||
<p>Another reason to implement this interface is if you wanted | |||
to provide your own "property protocol" like | |||
expanding <code>toString:foo</code> by looking up the project | |||
reference <samp>foo</samp> and invoking <code>toString()</code> on it | |||
(which is already implemented in Ant, see below).</p> | |||
<li><code>org.apache.tools.ant.PropertyHelper$PropertyEvaluator</code> is used to | |||
expand <samp>${some-string}</samp> into an <code>Object</code>. | |||
<p>This is the interface you'd implement if you want to provide your own storage independent | |||
of Ant's project instance—the interface represents the reading end. An example for | |||
this would be <code>org.apache.tools.ant.property.LocalProperties</code> which implements | |||
storage for <a href="Tasks/local.html">local properties</a>.</p> | |||
<p>Another reason to implement this interface is if you wanted to provide your own "property | |||
protocol" like expanding <code>toString:foo</code> by looking up the project | |||
reference <samp>foo</samp> and invoking <code>toString()</code> on it (which is already | |||
implemented in Ant, see below).</p> | |||
</li> | |||
<li><code>org.apache.tools.ant.PropertyHelper$PropertySetter</code> | |||
is responsible for setting properties. | |||
<li><code>org.apache.tools.ant.PropertyHelper$PropertySetter</code> is responsible for setting | |||
properties. | |||
<p>This is the interface you'd implement if you want to provide | |||
your own storage independent of Ant's project instance—the | |||
interface represents the reading end. An example for this | |||
would | |||
be <code>org.apache.tools.ant.property.LocalProperties</code> | |||
which implements storage | |||
for <a href="Tasks/local.html">local properties</a>.</p> | |||
<p>This is the interface you'd implement if you want to provide your own storage independent | |||
of Ant's project instance—the interface represents the reading end. An example for | |||
this would be <code>org.apache.tools.ant.property.LocalProperties</code> which implements | |||
storage for <a href="Tasks/local.html">local properties</a>.</p> | |||
</li> | |||
</ul> | |||
@@ -195,10 +175,9 @@ public class DefaultExpander implements PropertyExpander { | |||
} | |||
}</pre> | |||
<p>The logic that replaces <samp>${toString:<i>some-id</i>}</samp> with the | |||
stringified representation of the object with | |||
<var>id</var> <samp>some-id</samp> inside the current build is contained in a | |||
PropertyEvaluator similar to the following code:</p> | |||
<p>The logic that replaces <samp>${toString:<i>some-id</i>}</samp> with the stringified | |||
representation of the object with <var>id</var> <samp>some-id</samp> inside the current build is | |||
contained in a PropertyEvaluator similar to the following code:</p> | |||
<pre> | |||
public class ToStringEvaluator implements PropertyHelper.PropertyEvaluator { | |||
@@ -215,22 +194,17 @@ public class ToStringEvaluator implements PropertyHelper.PropertyEvaluator { | |||
<h1>Property Expansion</h1> | |||
<p>When Ant encounters a construct <samp>${some-text}</samp> the | |||
exact parsing semantics are subject to the configured property | |||
helper delegates.</p> | |||
<p>When Ant encounters a construct <samp>${some-text}</samp> the exact parsing semantics are | |||
subject to the configured property helper delegates.</p> | |||
<h2><code>$$</code> Expansion</h2> | |||
<p>In its default configuration Ant will expand the text <q>$$</q> | |||
to a single <q>$</q> and suppress the normal property expansion | |||
mechanism for the text immediately following it, | |||
i.e. <samp>$${key}</samp> expands to <samp>${key}</samp> and | |||
not <code>value</code> even though a property | |||
named <code>key</code> was defined and had the | |||
value <samp>value</samp>. This can be used to escape | |||
literal <q>$</q> characters and is useful in constructs that only | |||
look like property expansions or when you want to provide | |||
diagnostic output like in</p> | |||
<p>In its default configuration Ant will expand the text <q>$$</q> to a single <q>$</q> and | |||
suppress the normal property expansion mechanism for the text immediately following it, | |||
i.e. <samp>$${key}</samp> expands to <samp>${key}</samp> and not <code>value</code> even though | |||
a property named <code>key</code> was defined and had the value <samp>value</samp>. This can be | |||
used to escape literal <q>$</q> characters and is useful in constructs that only look like | |||
property expansions or when you want to provide diagnostic output like in</p> | |||
<pre><echo>$${builddir}=${builddir}</echo></pre> | |||
@@ -238,65 +212,50 @@ public class ToStringEvaluator implements PropertyHelper.PropertyEvaluator { | |||
<pre>${builddir}=build/classes</pre> | |||
<p>if the property <code>builddir</code> has the | |||
value <samp>build/classes</samp>.</p> | |||
<p>if the property <code>builddir</code> has the value <samp>build/classes</samp>.</p> | |||
<p>In order to maintain backward compatibility with older Ant | |||
releases, a single <q>$</q> character encountered apart from a | |||
property-like construct (including a matched pair of french | |||
braces) will be interpreted literally; that is, as <q>$</q>. The | |||
"correct" way to specify this literal character, however, is by | |||
using the escaping mechanism unconditionally, so that <q>$$</q> is | |||
obtained by specifying <q>$$$$</q>. Mixing the two approaches | |||
yields unpredictable results, as <q>$$$</q> results | |||
in <q>$$</q>.</p> | |||
<p>In order to maintain backward compatibility with older Ant releases, a single <q>$</q> | |||
character encountered apart from a property-like construct (including a matched pair of french | |||
braces) will be interpreted literally; that is, as <q>$</q>. The "correct" way to specify this | |||
literal character, however, is by using the escaping mechanism unconditionally, so | |||
that <q>$$</q> is obtained by specifying <q>$$$$</q>. Mixing the two approaches yields | |||
unpredictable results, as <q>$$$</q> results in <q>$$</q>.</p> | |||
<h2>Nesting of Braces</h2> | |||
<p>In its default configuration Ant will not try to balance braces | |||
in property expansions, it will only consume the text up to the | |||
first closing brace when creating a property name. I.e. when | |||
expanding something like <samp>${a${b}}</samp> it will be | |||
translated into two parts:</p> | |||
<p>In its default configuration Ant will not try to balance braces in property expansions, it will | |||
only consume the text up to the first closing brace when creating a property name. I.e. when | |||
expanding something like <samp>${a${b}}</samp> it will be translated into two parts:</p> | |||
<ol> | |||
<li>the expansion of property <samp>a${b</samp>—likely nothing | |||
useful.</li> | |||
<li>the literal text <samp>}</samp> resulting from the second | |||
closing brace</li> | |||
<li>the expansion of property <samp>a${b</samp>—likely nothing useful.</li> | |||
<li>the literal text <samp>}</samp> resulting from the second closing brace</li> | |||
</ol> | |||
<p>This means you can't use easily expand properties whose names are | |||
given by properties, but there | |||
are <a href="https://ant.apache.org/faq.html#propertyvalue-as-name-for-property">some | |||
workarounds</a> for older versions of Ant. With Ant 1.8.0 and the | |||
<a href="https://ant.apache.org/antlib/props/">the props Antlib</a> | |||
you can configure Ant to use | |||
the <code>NestedPropertyExpander</code> defined there if you need | |||
such a feature.</p> | |||
<p>This means you can't use easily expand properties whose names are given by properties, but | |||
there are <a href="https://ant.apache.org/faq.html#propertyvalue-as-name-for-property" | |||
target="_top">some workarounds</a> for older versions of Ant. With Ant 1.8.0 and | |||
the <a href="https://ant.apache.org/antlib/props/" target="_top">the props Antlib</a> you can | |||
configure Ant to use the <code>NestedPropertyExpander</code> defined there if you need such a | |||
feature.</p> | |||
<h2>Expanding a "Property Name"</h2> | |||
<p>In its most simple form <samp>${key}</samp> is supposed to look | |||
up a property named <code>key</code> and expand to the value of | |||
the property. Additional <code>PropertyEvaluator</code>s may | |||
result in a different interpretation of <code>key</code>, | |||
though.</p> | |||
<p>In its most simple form <samp>${key}</samp> is supposed to look up a property | |||
named <code>key</code> and expand to the value of the property. | |||
Additional <code>PropertyEvaluator</code>s may result in a different interpretation | |||
of <code>key</code>, though.</p> | |||
<p>The <a href="https://ant.apache.org/antlibs/props/">props Antlib</a> | |||
provides a few interesting evaluators but there are | |||
also a few built-in ones.</p> | |||
<p>The <a href="https://ant.apache.org/antlibs/props/" target="_top">props Antlib</a> provides a | |||
few interesting evaluators but there are also a few built-in ones.</p> | |||
<h3 id="toString">Getting the value of a Reference with | |||
<samp>${toString:}</samp></h3> | |||
<h3 id="toString">Getting the value of a Reference with <samp>${toString:}</samp></h3> | |||
<p>Any Ant type which has been declared with a reference can also | |||
its string value extracted by using the <samp>${toString:}</samp> | |||
operation, with the name of the reference listed after | |||
the <code>toString:</code> text. The <code>toString()</code> | |||
method of the Java class instance that is referenced is | |||
invoked—all built in types strive to produce useful and | |||
relevant output in such an instance.</p> | |||
<p>Any Ant type which has been declared with a reference can also its string value extracted by | |||
using the <samp>${toString:}</samp> operation, with the name of the reference listed after | |||
the <code>toString:</code> text. The <code>toString()</code> method of the Java class instance | |||
that is referenced is invoked—all built in types strive to produce useful and relevant | |||
output in such an instance.</p> | |||
<p>For example, here is how to get a listing of the files in a fileset,<p> | |||
@@ -304,49 +263,42 @@ public class ToStringEvaluator implements PropertyHelper.PropertyEvaluator { | |||
<fileset id="sourcefiles" dir="src" includes="**/*.java"/> | |||
<echo> sourcefiles = ${toString:sourcefiles} </echo></pre> | |||
<p>There is no guarantee that external types provide meaningful | |||
information in such a situation</p> | |||
<p>There is no guarantee that external types provide meaningful information in such a | |||
situation</p> | |||
<h3 id="ant.refid">Getting the value of a Reference with <samp>${ant.refid:}</samp></h3> | |||
<p>Any Ant type which has been declared with a reference can also be | |||
used as a property by using the <samp>${ant.refid:}</samp> | |||
operation, with the name of the reference listed after | |||
the <code>ant.refid:</code> text. The difference between this | |||
operation and <a href="#toString"><samp>${toString:}</samp></a> is | |||
that <samp>${ant.refid:}</samp> will expand to the referenced | |||
object itself. In most circumstances the <code>toString</code> | |||
method will be invoked anyway, for example if | |||
the <samp>${ant.refid:}</samp> is surrounded by other text.</p> | |||
<p>Any Ant type which has been declared with a reference can also be used as a property by using | |||
the <samp>${ant.refid:}</samp> operation, with the name of the reference listed after | |||
the <code>ant.refid:</code> text. The difference between this operation | |||
and <a href="#toString"><samp>${toString:}</samp></a> is that <samp>${ant.refid:}</samp> will | |||
expand to the referenced object itself. In most circumstances the <code>toString</code> method | |||
will be invoked anyway, for example if the <samp>${ant.refid:}</samp> is surrounded by other | |||
text.</p> | |||
<p>This syntax is most useful when using a task with attribute | |||
setters that accept objects other than String. For example, if | |||
the setter accepts a Resource object as in</p> | |||
<p>This syntax is most useful when using a task with attribute setters that accept objects other | |||
than String. For example, if the setter accepts a Resource object as in</p> | |||
<pre>public void setAttr(Resource r) { ... }</pre> | |||
<p>then the syntax can be used to pass in resource subclasses | |||
previously defined as references like</p> | |||
<p>then the syntax can be used to pass in resource subclasses previously defined as references | |||
like</p> | |||
<pre> | |||
<url url="http://ant.apache.org/" id="anturl"/> | |||
<my:task attr="${ant.refid:anturl}"/></pre> | |||
<h2 id="if+unless">If/Unless Attributes</h2> | |||
<p> | |||
The <code><target></code> element and various tasks (such | |||
as <code><fail></code>) and task elements (such | |||
as <code><test></code> in <code><junit></code>) | |||
support <var>if</var> and <var>unless</var> attributes which can | |||
be used to control whether the item is run or otherwise takes | |||
effect. | |||
The <code><target></code> element and various tasks (such as <code><fail></code>) | |||
and task elements (such as <code><test></code> in <code><junit></code>) | |||
support <var>if</var> and <var>unless</var> attributes which can be used to control whether the | |||
item is run or otherwise takes effect. | |||
</p> | |||
<p> | |||
In Ant 1.7.1 and earlier, these attributes could only be property | |||
names. The item was enabled if a property with that name was | |||
defined—even to be the empty string | |||
or <q>false</q>—and disabled if the property was not | |||
defined. For example, the following works but there is no way to | |||
override the file existence check negatively (only positively): | |||
In Ant 1.7.1 and earlier, these attributes could only be property names. The item was enabled | |||
if a property with that name was defined—even to be the empty string | |||
or <q>false</q>—and disabled if the property was not defined. For example, the following | |||
works but there is no way to override the file existence check negatively (only positively): | |||
</p> | |||
<pre> | |||
<target name="-check-use-file"> | |||
@@ -357,16 +309,14 @@ public class ToStringEvaluator implements PropertyHelper.PropertyEvaluator { | |||
</target> | |||
<target name="lots-of-stuff" depends="use-file,other-unconditional-stuff"/></pre> | |||
<p> | |||
<em>Since Ant 1.8.0</em>, you may instead use property expansion; | |||
a value of <q>true</q> (or <q>on</q> or <q>yes</q>) will enable | |||
the item, while <q>false</q> (or <q>off</q> or <q>no</q>) will | |||
disable it. Other values are still assumed to be property names | |||
and so the item is enabled only if the named property is defined. | |||
<em>Since Ant 1.8.0</em>, you may instead use property expansion; a value of <q>true</q> | |||
(or <q>on</q> or <q>yes</q>) will enable the item, while <q>false</q> (or <q>off</q> | |||
or <q>no</q>) will disable it. Other values are still assumed to be property names and so the | |||
item is enabled only if the named property is defined. | |||
</p> | |||
<p> | |||
Compared to the older style, this gives you additional | |||
flexibility, because you can override the condition from the | |||
command line or parent scripts: | |||
Compared to the older style, this gives you additional flexibility, because you can override the | |||
condition from the command line or parent scripts: | |||
</p> | |||
<pre> | |||
<target name="-check-use-file" <strong>unless="file.exists"</strong>> | |||
@@ -377,9 +327,8 @@ public class ToStringEvaluator implements PropertyHelper.PropertyEvaluator { | |||
</target> | |||
<target name="lots-of-stuff" depends="use-file,other-unconditional-stuff"/></pre> | |||
<p> | |||
Now <code>ant -Dfile.exists=false lots-of-stuff</code> will | |||
run <q>other-unconditional-stuff</q> but not <q>use-file</q>, as | |||
you might expect, and you can disable the condition from another | |||
Now <code>ant -Dfile.exists=false lots-of-stuff</code> will run <q>other-unconditional-stuff</q> | |||
but not <q>use-file</q>, as you might expect, and you can disable the condition from another | |||
script too: | |||
</p> | |||
<pre> | |||
@@ -387,12 +336,10 @@ public class ToStringEvaluator implements PropertyHelper.PropertyEvaluator { | |||
<param name="file.exists" value="false"/> | |||
</antcall></pre> | |||
<p> | |||
Similarly, an <var>unless</var> attribute disables the item if it | |||
is either the name of property which is defined, or if it | |||
evaluates to a <q>true</q>-like value. For example, the following | |||
allows you to define <code>skip.printing.message=true</code> | |||
in <samp>my-prefs.properties</samp> with the results you might | |||
expect: | |||
Similarly, an <var>unless</var> attribute disables the item if it is either the name of property | |||
which is defined, or if it evaluates to a <q>true</q>-like value. For example, the following | |||
allows you to define <code>skip.printing.message=true</code> in <samp>my-prefs.properties</samp> | |||
with the results you might expect: | |||
</p> | |||
<pre> | |||
<property file="my-prefs.properties"/> | |||
@@ -234,10 +234,10 @@ For csh/tcsh: | |||
<p> | |||
Any program that is executed with <code><java></code> without | |||
setting <var>fork</var>=<q>true</q> will pick up the Ant's | |||
settings. If you need different values, | |||
set <var>fork</var>=<q>false</q> and provide the values | |||
in <code><sysproperty></code> elements. | |||
setting <var>fork</var>=<q>true</q> will pick up the Ant's | |||
settings. If you need different values, | |||
set <var>fork</var>=<q>false</q> and provide the values | |||
in <code><sysproperty></code> elements. | |||
</p> | |||
<p> | |||
If you wish to have a forked process pick up the Ant's settings, use | |||
@@ -282,7 +282,8 @@ For csh/tcsh: | |||
<h4>Further reading</h4> | |||
<ul> | |||
<li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html">Java Networking Properties</a>.</li> | |||
<li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html" | |||
target="_top">Java Networking Properties</a>.</li> | |||
</ul> | |||
</body> | |||
@@ -404,10 +404,9 @@ properties are available via Project instance, I searched for them with a</p> | |||
for <var>srcencoding</var>, <var>destencoding</var> | |||
and <var>bundleencoding</var> | |||
in <a href="Tasks/translate.html">translate</a><br/> see JavaDoc | |||
of <a target="_blank" | |||
href="https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html">java.nio.charset.Charset</a> | |||
for more information about character sets (not used in Ant, but | |||
has nice docs). | |||
of <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html" | |||
target="_top">java.nio.charset.Charset</a> for more information | |||
about character sets (not used in Ant, but has nice docs). | |||
</td> | |||
</tr> | |||
<tr> | |||
@@ -416,7 +415,7 @@ properties are available via Project instance, I searched for them with a</p> | |||
<td>The specified path is added to the classpath if Jikes is used as compiler.</td> | |||
</tr> | |||
<tr> | |||
<td><code>MailLogger.properties.file, MailLogger.*</code></td> | |||
<td><code>MailLogger.properties.file</code>, <code>MailLogger.*</code></td> | |||
<td>filename (optional, defaults derived from Project instance)</td> | |||
<td>Name of the file holding properties for sending emails by | |||
the <a href="listeners.html#MailLogger">MailLogger</a>. Override | |||
@@ -172,10 +172,10 @@ documentation.</p> | |||
<tr> | |||
<td><a href="Tasks/jdepend.html">JDepend</a></td> | |||
<td><p>Invokes | |||
the <a href="http://www.clarkware.com/software/JDepend.html"> | |||
JDepend</a> parser. This parser "traverses a set of Java | |||
source-file directories and generates design-quality metrics for | |||
each Java package".</p></td> | |||
the <a href="http://www.clarkware.com/software/JDepend.html" | |||
target="_top">JDepend</a> parser. This parser "traverses a | |||
set of Java source-file directories and generates design-quality | |||
metrics for each Java package".</p></td> | |||
</tr> | |||
</table> | |||
@@ -520,8 +520,7 @@ documentation.</p> | |||
</tr> | |||
<tr> | |||
<td><a href="Tasks/replaceregexp.html"> | |||
ReplaceRegExp</a></td> | |||
<td><a href="Tasks/replaceregexp.html">ReplaceRegExp</a></td> | |||
<td><p>Replaces the occurrence of a given regular expression with | |||
a substitution pattern in a file or set of files.</p></td> | |||
</tr> | |||
@@ -788,23 +787,24 @@ documentation.</p> | |||
<tr> | |||
<td><a href="Tasks/jjdoc.html">JJDoc</a></td> | |||
<td><p>Invokes the <a href="https://javacc.org/">JJDoc</a> | |||
documentation generator for the JavaCC compiler-compiler. JJDoc | |||
takes a JavaCC parser specification and produces documentation | |||
for the BNF grammar. It can operate in three modes, determined | |||
by command line options. This task only invokes JJDoc if the | |||
grammar file is newer than the generated BNF grammar | |||
documentation.</p></td> | |||
<td><p>Invokes the <a href="https://javacc.org/" | |||
target="_top">JJDoc</a> documentation generator for the JavaCC | |||
compiler-compiler. JJDoc takes a JavaCC parser specification and | |||
produces documentation for the BNF grammar. It can operate in | |||
three modes, determined by command line options. This task only | |||
invokes JJDoc if the grammar file is newer than the generated BNF | |||
grammar documentation.</p></td> | |||
</tr> | |||
<tr> | |||
<td><a href="Tasks/jjtree.html">JJTree</a></td> | |||
<td><p>Invokes the <a href="https://javacc.org/">JJTree</a> | |||
preprocessor for the JavaCC compiler-compiler. It inserts | |||
parse-tree building actions at various places in the JavaCC | |||
source that it generates. The output of JJTree is run through | |||
JavaCC to create the parser. This task only invokes JJTree if the | |||
grammar file is newer than the generated JavaCC file.</p></td> | |||
<td><p>Invokes the <a href="https://javacc.org/" | |||
target="_top">JJTree</a> preprocessor for the JavaCC | |||
compiler-compiler. It inserts parse-tree building actions at | |||
various places in the JavaCC source that it generates. The output | |||
of JJTree is run through JavaCC to create the parser. This task | |||
only invokes JJTree if the grammar file is newer than the | |||
generated JavaCC file.</p></td> | |||
</tr> | |||
<tr> | |||
@@ -813,8 +813,7 @@ documentation.</p> | |||
</tr> | |||
<tr> | |||
<td><a href="Tasks/native2ascii.html"> | |||
Native2Ascii</a></td> | |||
<td><a href="Tasks/native2ascii.html">Native2Ascii</a></td> | |||
<td><p>Converts files from native encodings to ASCII with escaped | |||
Unicode. A common usage is to convert source files maintained in | |||
a native operating system encoding to ASCII, prior to | |||
@@ -919,8 +918,7 @@ documentation.</p> | |||
</tr> | |||
<tr> | |||
<td><a href="Tasks/propertyfile.html"> | |||
PropertyFile</a></td> | |||
<td><a href="Tasks/propertyfile.html">PropertyFile</a></td> | |||
<td><p>Creates or modifies property files. Useful when wanting to | |||
make unattended modifications to configuration files for | |||
application servers and applications. Typically used for things | |||
@@ -1050,8 +1048,7 @@ documentation.</p> | |||
</tr> | |||
<tr> | |||
<td><a href="Tasks/vss.html"> | |||
Microsoft Visual SourceSafe</a></td> | |||
<td><a href="Tasks/vss.html">Microsoft Visual SourceSafe</a></td> | |||
<td><p>Tasks to perform the Visual SourceSafe <em>vssget</em>, | |||
<em>vsslabel</em>, <em>vsshistory</em>, <em>vsscheckin</em>, | |||
<em>vsscheckout</em>, <em>vssadd</em>, <em>vsscp</em>, | |||
@@ -1084,9 +1081,10 @@ documentation.</p> | |||
<tr> | |||
<td><a href="Tasks/junit.html">Junit</a></td> | |||
<td><p>Runs tests from the <a href="https://junit.org">Junit</a> | |||
testing framework. This task has been tested with JUnit 3.0 and | |||
later; it won't work with versions prior to JUnit 3.0.</p></td> | |||
<td><p>Runs tests from the <a href="https://junit.org" | |||
target="_top">Junit</a> testing framework. This task has been | |||
tested with JUnit 3.0 and later; it won't work with versions | |||
prior to JUnit 3.0.</p></td> | |||
</tr> | |||
<tr> | |||
@@ -244,13 +244,13 @@ because</p> | |||
<li>it's from Apache ;-)</li> | |||
</ul> | |||
<p>We store our external libraries in a new directory <samp>lib</samp>. Log4J can | |||
be <a href="https://archive.apache.org/dist/logging/log4j/1.2.17/logging-log4j-1.2.17.zip">downloaded [1]</a> from | |||
Logging's Homepage. Create the <samp>lib</samp> directory and extract the <samp>log4j-1.2.17.jar</samp> into that | |||
directory. After that we have to modify our Java source file to use that library and our buildfile so that this library | |||
could be accessed during compilation and run.</p> | |||
<p>Working with Log4J is documented inside its manual. Here we use the <var>MyApp</var>-example from | |||
the <a href="https://logging.apache.org/log4j/1.2/manual.html">Short Manual [2]</a>. First we have to modify the java | |||
source to use the logging framework:</p> | |||
be <a href="https://archive.apache.org/dist/logging/log4j/1.2.17/logging-log4j-1.2.17.zip" target="_top">downloaded | |||
[1]</a> from Logging's Homepage. Create the <samp>lib</samp> directory and extract the <samp>log4j-1.2.17.jar</samp> | |||
into that directory. After that we have to modify our Java source file to use that library and our buildfile so that | |||
this library could be accessed during compilation and run.</p> | |||
<p>Working with Log4J is documented inside its manual. Here we use the <samp>MyApp</samp>-example from | |||
the <a href="https://logging.apache.org/log4j/1.2/manual.html" target="_top">Short Manual [2]</a>. First we have to | |||
modify the java source to use the logging framework:</p> | |||
<pre class="code"> | |||
package oata; | |||
@@ -413,9 +413,9 @@ junit instruction to our buildfile:</p> | |||
...</pre> | |||
<p>We reuse the path to our own jar file as defined in run-target by giving it an ID and making it globally available. | |||
The <code>printsummary=yes</code> lets us see more detailed information than just a "FAILED" or "PASSED" message. How | |||
much tests failed? Some errors? <var>printsummary</var> lets us know. The classpath is set up to find our classes. To | |||
run tests the <code>batchtest</code> here is used, so you could easily add more test classes in the future just by | |||
The <var>printsummary</var>=<q>yes</q> lets us see more detailed information than just a "FAILED" or "PASSED" message. | |||
How much tests failed? Some errors? <var>printsummary</var> lets us know. The classpath is set up to find our classes. | |||
To run tests the <code>batchtest</code> here is used, so you could easily add more test classes in the future just by | |||
naming them <code>*Test.java</code>. This is a common naming scheme.</p> | |||
<p>After a <code>ant junit</code> you'll get:</p> | |||
@@ -470,9 +470,11 @@ don't need the HTML report just for testing, e.g. if you are fixing an error or | |||
<h2 id="resources">Resources</h2> | |||
<ol class="refs"> | |||
<li><a href="https://archive.apache.org/dist/logging/log4j/1.2.17/logging-log4j-1.2.17.zip">https://archive.apache.org/dist/logging/log4j/1.2.17/logging-log4j-1.2.17.zip</a></li> | |||
<li><a href="https://logging.apache.org/log4j/1.2/manual.html">https://logging.apache.org/log4j/1.2/manual.html</a></li> | |||
<li><a href="https://junit.org/junit4">https://junit.org/junit4</a></li> | |||
<li><a href="https://archive.apache.org/dist/logging/log4j/1.2.17/logging-log4j-1.2.17.zip" | |||
target="_top">https://archive.apache.org/dist/logging/log4j/1.2.17/logging-log4j-1.2.17.zip</a></li> | |||
<li><a href="https://logging.apache.org/log4j/1.2/manual.html" | |||
target="_top">https://logging.apache.org/log4j/1.2/manual.html</a></li> | |||
<li><a href="https://junit.org/junit4" target="_top">https://junit.org/junit4</a></li> | |||
</ol> | |||
</body> | |||
@@ -322,8 +322,8 @@ the <code><path></code>. Filesets are easy if the files are all under a co | |||
the case, you have a problem. Another disadvantage is its speed: if you have only a few files in a huge directory | |||
structure, why not use a <code><filelist></code> instead? <code><path></code>s combines these datatypes in | |||
that way that a path contains other paths, filesets, dirsets and filelists. This is | |||
why <a href="http://ant-contrib.sourceforge.net/">Ant-Contrib [4]</a> <code><foreach></code> task is modified to | |||
support paths instead of filesets. So we want that, too.</p> | |||
why <a href="http://ant-contrib.sourceforge.net/" target="_top">Ant-Contrib [4]</a> <code><foreach></code> task is | |||
modified to support paths instead of filesets. So we want that, too.</p> | |||
<p>Changing from fileset to path support is very easy:</p> | |||
<em><strong>Change Java code from:</strong></em> | |||
@@ -659,8 +659,8 @@ After that it prints out the result (e.g. <samp>C:/ant-1.5.4/bin/ant.jar;C | |||
<li>create a patch file</li> | |||
<li>publishing that patch file</li> | |||
</ul> | |||
<p>The <a href="https://ant.apache.org/ant_task_guidelines.html">Ant Task Guidelines [6]</a> support additional | |||
information on that.</p> | |||
<p>The <a href="https://ant.apache.org/ant_task_guidelines.html" target="_top">Ant Task Guidelines [6]</a> support | |||
additional information on that.</p> | |||
<p>Now we will check the "Checklist before submitting a new task" described in that guideline.</p> | |||
<ul> | |||
@@ -762,7 +762,7 @@ after <code>git clone</code> (without our modifications).</p> | |||
<h3>Test on JDK 5</h3> | |||
<p>Ant 1.10 uses Java 8 for development, but Ant 1.9 is actively maintained, too. That means that Ant code must be able | |||
to run on a JDK 5. So we have to test that. You can download older JDKs | |||
from <a href="https://www.oracle.com/technetwork/java/archive-139210.html">Oracle [8]</a>.</p> | |||
from <a href="https://www.oracle.com/technetwork/java/archive-139210.html" target="_top">Oracle [8]</a>.</p> | |||
<p>Clean the <code>ANT_HOME</code> variable, delete the <samp>build</samp>, <samp>bootstrap</samp> and <samp>dist</samp> | |||
directories, and point <code>JAVA_HOME</code> to the JDK 5 home directory. Then create the patch with your commit, | |||
@@ -773,11 +773,11 @@ run <code>ant test</code> (like above).</p> | |||
<h3>Checkstyle</h3> | |||
<p>There are many things we have to ensure. Indentation with 4 spaces, blanks here and there, ... (all described in | |||
the <a href="https://ant.apache.org/ant_task_guidelines.html">Ant Task Guidelines [6]</a> which includes | |||
the <a href="https://www.oracle.com/technetwork/java/codeconvtoc-136057.html">Sun code style [9]</a>). Because there are | |||
so many things we would be happy to have a tool for do the checks. There is one: checkstyle. Checkstyle is available | |||
at <a href="http://checkstyle.sourceforge.net/"> Sourceforge [10]</a> and Ant provides with the <samp>check.xml</samp> a | |||
buildfile which will do the job for us.</p> | |||
the <a href="https://ant.apache.org/ant_task_guidelines.html" target="_top">Ant Task Guidelines [6]</a> which includes | |||
the <a href="https://www.oracle.com/technetwork/java/codeconvtoc-136057.html" target="_top">Sun code style | |||
[9]</a>). Because there are so many things we would be happy to have a tool for do the checks. There is one: | |||
checkstyle. Checkstyle is available at <a href="http://checkstyle.sourceforge.net/" target="_top">Sourceforge [10]</a> | |||
and Ant provides with the <samp>check.xml</samp> a buildfile which will do the job for us.</p> | |||
<p>Download it and put the <samp>checkstyle-*-all.jar</samp> into your <samp>%USERPROFILE%\.ant\lib</samp> directory. | |||
All jar's stored there are available to Ant so you haven't to add it to you <samp>%ANT_HOME%\lib</samp> directory (this | |||
@@ -796,9 +796,9 @@ will find the next error place much more easier without redoing the checkstyle.< | |||
run. Now our task isn't listed. That's fine :-)</p> | |||
<h3>Publish the task</h3> | |||
<p>Finally we publish that archive. As described in the <a href="https://ant.apache.org/ant_task_guidelines.html">Ant | |||
Task Guidelines [7]</a> we can announce it on the developer mailing list, create a BugZilla entry and open a GitHub pull | |||
request. For both we need some information:</p> | |||
<p>Finally we publish that archive. As described in the <a href="https://ant.apache.org/ant_task_guidelines.html" | |||
target="_top">Ant Task Guidelines [7]</a> we can announce it on the developer mailing list, create a BugZilla entry and | |||
open a GitHub pull request. For both we need some information:</p> | |||
<table> | |||
<tr> | |||
@@ -826,13 +826,14 @@ request. For both we need some information:</p> | |||
more difficult. But the advantage is that entries will not be forgotten (a report is generated once every weekend). So | |||
I will describe the process.</p> | |||
<p>First, you must have a BugZilla account. So open the <a href="https://issues.apache.org/bugzilla/">BugZilla Main Page | |||
[11]</a> and follow the link <a href="https://issues.apache.org/bugzilla/createaccount.cgi">Open a new Bugzilla account | |||
[12]</a> and the steps described there if you haven't one.</p> | |||
<p>First, you must have a BugZilla account. So open the <a href="https://issues.apache.org/bugzilla/" | |||
target="_top">BugZilla Main Page [11]</a> and follow the | |||
link <a href="https://issues.apache.org/bugzilla/createaccount.cgi" target="_top">Open a new Bugzilla account [12]</a> | |||
and the steps described there if you haven't one.</p> | |||
<ol> | |||
<li>From the BugZilla main page choose <a href="https://issues.apache.org/bugzilla/enter_bug.cgi">Enter a new bug report | |||
[13]</a></li> | |||
<li>From the BugZilla main page choose <a href="https://issues.apache.org/bugzilla/enter_bug.cgi" target="_top">Enter a | |||
new bug report [13]</a></li> | |||
<li>Choose "Ant" as product</li> | |||
<li>Version is the last "Alpha (nightly)" (at this time 1.10)</li> | |||
<li>Component is "Core tasks"</li> | |||
@@ -854,16 +855,21 @@ I will describe the process.</p> | |||
<li><a href="tutorial-writing-tasks.html">tutorial-writing-tasks.html</a></li> | |||
<li><a href="tutorial-tasks-filesets-properties.zip">tutorial-tasks-filesets-properties.zip</a></li> | |||
<li><a href="properties.html#built-in-props">properties.html#built-in-props</a></li> | |||
<li><a href="http://ant-contrib.sourceforge.net/">http://ant-contrib.sourceforge.net/</a></li> | |||
<li><a href="http://ant-contrib.sourceforge.net/" target="_top">http://ant-contrib.sourceforge.net/</a></li> | |||
<li><a href="Tasks/java.html">Tasks/java.html</a></li> | |||
<li><a href="https://ant.apache.org/ant_task_guidelines.html">https://ant.apache.org/ant_task_guidelines.html</a></li> | |||
<li><a href="https://github.com/apache/ant">https://github.com/apache/ant</a></li> | |||
<li><a href="https://www.oracle.com/technetwork/java/archive-139210.html">https://www.oracle.com/technetwork/java/archive-139210.html</a></li> | |||
<li><a href="https://www.oracle.com/technetwork/java/codeconvtoc-136057.html">https://www.oracle.com/technetwork/java/codeconvtoc-136057.html</a></li> | |||
<li><a href="http://checkstyle.sourceforge.net/">http://checkstyle.sourceforge.net/</a></li> | |||
<li><a href="https://issues.apache.org/bugzilla/">https://issues.apache.org/bugzilla/</a></li> | |||
<li><a href="https://issues.apache.org/bugzilla/createaccount.cgi">https://issues.apache.org/bugzilla/createaccount.cgi</a></li> | |||
<li><a href="https://issues.apache.org/bugzilla/enter_bug.cgi">https://issues.apache.org/bugzilla/enter_bug.cgi</a></li> | |||
<li><a href="https://ant.apache.org/ant_task_guidelines.html" | |||
target="_top">https://ant.apache.org/ant_task_guidelines.html</a></li> | |||
<li><a href="https://github.com/apache/ant" target="_top">https://github.com/apache/ant</a></li> | |||
<li><a href="https://www.oracle.com/technetwork/java/archive-139210.html" | |||
target="_top">https://www.oracle.com/technetwork/java/archive-139210.html</a></li> | |||
<li><a href="https://www.oracle.com/technetwork/java/codeconvtoc-136057.html" | |||
target="_top">https://www.oracle.com/technetwork/java/codeconvtoc-136057.html</a></li> | |||
<li><a href="http://checkstyle.sourceforge.net/" target="_top">http://checkstyle.sourceforge.net/</a></li> | |||
<li><a href="https://issues.apache.org/bugzilla/" target="_top">https://issues.apache.org/bugzilla/</a></li> | |||
<li><a href="https://issues.apache.org/bugzilla/createaccount.cgi" | |||
target="_top">https://issues.apache.org/bugzilla/createaccount.cgi</a></li> | |||
<li><a href="https://issues.apache.org/bugzilla/enter_bug.cgi" | |||
target="_top">https://issues.apache.org/bugzilla/enter_bug.cgi</a></li> | |||
</ol> | |||
</body> | |||
@@ -99,7 +99,7 @@ fail; <q>jar</q> requires the execution of some steps before. So the refactored | |||
</target> | |||
</project></pre> | |||
<p><code>ant.project.name</code> is one of the <a href="properties.html#built-in-props" target="_blank">build-in | |||
<p><code>ant.project.name</code> is one of the <a href="properties.html#built-in-props" target="_top">build-in | |||
properties [1]</a> of Ant.</p> | |||
<h2 id="write1">Write the Task</h2> | |||
@@ -117,7 +117,7 @@ attribute the <q>compile</q> is executed before).</p> | |||
<h2 id="use1">Use the Task</h2> | |||
<p>But after creating the jar we want to use our new Task. Therefore we need a new target <q>use</q>. Before we can use | |||
our new task we have to declare it with <a href="Tasks/taskdef.html" target="_blank"><code><taskdef></code> | |||
our new task we have to declare it with <a href="Tasks/taskdef.html" target="_top"><code><taskdef></code> | |||
[2]</a>. And for easier process we change the <var>default</var> attribute:</p> | |||
<pre class="code"> | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
@@ -724,9 +724,8 @@ of your custom task. Then set breakpoints in other methods. This will ensure t | |||
JVM.</p> | |||
<h2 id="resources">Resources</h2> | |||
<p>This tutorial and its resources are available | |||
via <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=22570">BugZilla [5]</a>. The ZIP provided there | |||
contains</p> | |||
<p>This tutorial and its resources are available via <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=22570" | |||
target="_top">BugZilla [5]</a>. The ZIP provided there contains</p> | |||
<ul> | |||
<li>this initial version of this tutorial</li> | |||
<li>the buildfile (last version)</li> | |||
@@ -746,7 +745,8 @@ the manual.</p> | |||
<li><a href="Tasks/taskdef.html">https://ant.apache.org/manual/Tasks/taskdef.html</a></li> | |||
<li><a href="develop.html#set-magic">https://ant.apache.org/manual/develop.html#set-magic</a></li> | |||
<li><a href="develop.html#nested-elements">https://ant.apache.org/manual/develop.html#nested-elements</a></li> | |||
<li><a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=22570">https://issues.apache.org/bugzilla/show_bug.cgi?id=22570</a></li> | |||
<li><a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=22570" | |||
target="_top">https://issues.apache.org/bugzilla/show_bug.cgi?id=22570</a></li> | |||
<li><a href="tutorial-writing-tasks-src.zip">tutorial-writing-tasks-src.zip</a></li> | |||
</ol> | |||
@@ -25,12 +25,10 @@ | |||
<body> | |||
<h1>Using Apache Ant</h1> | |||
<h2 id="buildfile">Writing a Simple Buildfile</h2> | |||
<p>Apache Ant's buildfiles are written in XML. Each buildfile contains one project | |||
and at least one (default) target. Targets contain task elements. | |||
Each task element of the buildfile can have an <var>id</var> attribute and | |||
can later be referred to by the value supplied to this. The value has | |||
to be unique. (For additional information, see the | |||
<a href="#tasks">Tasks</a> section below.)</p> | |||
<p>Apache Ant's buildfiles are written in XML. Each buildfile contains one project and at least one (default) | |||
target. Targets contain task elements. Each task element of the buildfile can have an <var>id</var> attribute and can | |||
later be referred to by the value supplied to this. The value has to be unique. (For additional information, see | |||
the <a href="#tasks">Tasks</a> section below.)</p> | |||
<h3 id="projects">Projects</h3> | |||
<p>A <em>project</em> has three attributes:</p> | |||
@@ -48,93 +46,69 @@ to be unique. (For additional information, see the | |||
<tr> | |||
<td>default</td> | |||
<td>the default target to use when no target is supplied.</td> | |||
<td>No; however, <em>since Ant 1.6.0</em>, | |||
every project includes an implicit target that contains any and | |||
all top-level tasks and/or types. This target will always be | |||
executed as part of the project's initialization, even when Ant is | |||
run with the <a href="running.html#options"><code>-projecthelp</code></a> option. | |||
<td>No; however, <em>since Ant 1.6.0</em>, every project includes an implicit target that contains any and all | |||
top-level tasks and/or types. This target will always be executed as part of the project's initialization, even | |||
when Ant is run with the <a href="running.html#options"><code>-projecthelp</code></a> option. | |||
</td> | |||
</tr> | |||
<tr> | |||
<td>basedir</td> | |||
<td>the base directory from which all path calculations are | |||
done. A relative path is resolved relative to the directory containing | |||
the buildfile. | |||
<td>the base directory from which all path calculations are done. A relative path is resolved relative to the | |||
directory containing the buildfile. | |||
</td> | |||
<td>No; defaults to the parent directory of the buildfile, | |||
unless overridden by the project's <var>basedir</var> or the <code>basedir</code> | |||
property</td> | |||
<td>No; defaults to the parent directory of the buildfile, unless overridden by the project's <var>basedir</var> or | |||
the <code>basedir</code> property</td> | |||
</tr> | |||
</table> | |||
<p>Optionally, a description for the project can be provided as a | |||
top-level <code><description></code> element (see the <a | |||
href="Types/description.html">description</a> type).</p> | |||
<p>Optionally, a description for the project can be provided as a top-level <code><description></code> element | |||
(see the <a href="Types/description.html">description</a> type).</p> | |||
<p>Each project defines one or more <em>targets</em>. | |||
A target is a set of <em>tasks</em> you want | |||
to be executed. When starting Ant, you can select which target(s) you | |||
want to have executed. When no target is given, | |||
the project's <var>default</var> is used.</p> | |||
<p>Each project defines one or more <em>targets</em>. A target is a set of <em>tasks</em> you want to be executed. When | |||
starting Ant, you can select which target(s) you want to have executed. When no target is given, the | |||
project's <var>default</var> is used.</p> | |||
<h3 id="targets">Targets</h3> | |||
<p>A target can depend on other targets. You might have a target for compiling, | |||
for example, and a target for creating a distributable. You can only build a | |||
distributable when you have compiled first, so the distribute target | |||
<p>A target can depend on other targets. You might have a target for compiling, for example, and a target for creating a | |||
distributable. You can only build a distributable when you have compiled first, so the distribute target | |||
<em>depends on</em> the compile target. Ant resolves these dependencies.</p> | |||
<p>It should be noted, however, that Ant's <var>depends</var> attribute | |||
only specifies the <em>order</em> in which targets should be executed—it | |||
does not affect whether the target that specifies the dependency(s) gets | |||
executed if the dependent target(s) did not (need to) run. | |||
</p> | |||
<p>It should be noted, however, that Ant's <var>depends</var> attribute only specifies the <em>order</em> in which | |||
targets should be executed—it does not affect whether the target that specifies the dependency(s) gets executed if | |||
the dependent target(s) did not (need to) run.</p> | |||
<p>More information can be found in the dedicated <a href="targets.html">manual page</a>.</p> | |||
<h3 id="tasks">Tasks</h3> | |||
<p>A task is a piece of code that can be executed.</p> | |||
<p>A task can have multiple attributes (or arguments, if you prefer). The value | |||
of an attribute might contain references to a property. These references will be | |||
resolved before the task is executed.</p> | |||
<p>A task can have multiple attributes (or arguments, if you prefer). The value of an attribute might contain references | |||
to a property. These references will be resolved before the task is executed.</p> | |||
<p>Tasks have a common structure:</p> | |||
<pre><<i>name</i> <var>attribute1</var>="<i>value1</i>" <var>attribute2</var>="<i>value2</i>" ... /></pre> | |||
<p>where <code><i>name</i></code> is the name of the task, | |||
<var>attributeN</var> is the attribute name, and | |||
<code><i>valueN</i></code> is the value for this attribute.</p> | |||
<p>There is a set of <a href="tasklist.html" target="navFrame">built-in tasks</a>, but it is also very | |||
easy to <a href="develop.html#writingowntask">write your own</a>.</p> | |||
<p>All tasks can have a <var>name</var> attribute. The value of | |||
this attribute will be used in the logging messages generated by | |||
Ant.</p> | |||
Tasks can be assigned an <var>id</var> attribute: | |||
<p>where <code><i>name</i></code> is the name of the task, <var>attributeN</var> is the attribute name, | |||
and <code><i>valueN</i></code> is the value for this attribute.</p> | |||
<p>There is a set of <a href="tasklist.html" target="navFrame">built-in tasks</a>, but it is also very easy | |||
to <a href="develop.html#writingowntask">write your own</a>.</p> | |||
<p>All tasks can have a <var>name</var> attribute. The value of this attribute will be used in the logging messages | |||
generated by Ant.</p> | |||
<p>Tasks can be assigned an <var>id</var> attribute:</p> | |||
<pre><<i>taskname</i> <var>id</var>="<i>taskID</i>" ... /></pre> | |||
where <code><i>taskname</i></code> is the name of the task, and <code><i>taskID</i></code> is | |||
a unique identifier for this task. | |||
You can refer to the | |||
corresponding task object in scripts or other tasks via this name. | |||
For example, in scripts you could do: | |||
<p>where <code><i>taskname</i></code> is the name of the task, and <code><i>taskID</i></code> is a unique identifier for | |||
this task. You can refer to the corresponding task object in scripts or other tasks via this name. For example, in | |||
scripts you could do:</p> | |||
<pre> | |||
<script ... > | |||
task1.setFoo("bar"); | |||
</script></pre> | |||
to set the <code>foo</code> attribute of this particular task instance. | |||
In another task (written in Java), you can access the instance via | |||
<code>project.getReference("task1")</code>. | |||
<p> | |||
Note 1: If <q>task1</q> has not been run yet, then | |||
it has not been configured (ie., no attributes have been set), and if it is | |||
going to be configured later, anything you've done to the instance may | |||
be overwritten. | |||
</p> | |||
<p> | |||
Note 2: Future versions of Ant will most likely <em>not</em> | |||
be backward-compatible with this behaviour, since there will likely be no | |||
task instances at all, only proxies. | |||
</p> | |||
<p>to set the <code>foo</code> attribute of this particular task instance. In another task (written in Java), you can | |||
access the instance via <code>project.getReference("task1")</code>.</p> | |||
<p>Note 1: If <q>task1</q> has not been run yet, then it has not been configured (ie., no attributes have been set), and | |||
if it is going to be configured later, anything you've done to the instance may be overwritten.</p> | |||
<p>Note 2: Future versions of Ant will most likely <em>not</em> be backward-compatible with this behaviour, since there | |||
will likely be no task instances at all, only proxies.</p> | |||
<h3 id="properties">Properties</h3> | |||
@@ -200,70 +174,49 @@ task instances at all, only proxies. | |||
</target> | |||
</project></pre> | |||
<p>Notice that we are declaring properties outside any target. <em>Since | |||
Ant 1.6</em>, all tasks can be declared outside targets (earlier version | |||
only allowed <code><property></code>, <code><typedef></code> and | |||
<code><taskdef></code>). When you do this they are evaluated before | |||
any targets are executed. Some tasks will generate build failures if | |||
they are used outside of targets as they may cause infinite loops | |||
otherwise (<code><antcall></code> for example).</p> | |||
<p> | |||
We have given some targets descriptions; this causes the <code>-projecthelp</code> | |||
invocation option to list them as public targets with the descriptions; the | |||
other target is internal and not listed. | |||
<p> | |||
Finally, for this target to work the source in the <samp>src</samp> subdirectory | |||
should be stored in a directory tree which matches the package names. Check the | |||
<code><javac></code> task for details. | |||
<p>Notice that we are declaring properties outside any target. <em>Since Ant 1.6</em>, all tasks can be declared outside | |||
targets (earlier version only allowed <code><property></code>, <code><typedef></code> | |||
and <code><taskdef></code>). When you do this they are evaluated before any targets are executed. Some tasks | |||
will generate build failures if they are used outside of targets as they may cause infinite loops otherwise | |||
(<code><antcall></code> for example).</p> | |||
<p>We have given some targets descriptions; this causes the <code>-projecthelp</code> invocation option to list them as | |||
public targets with the descriptions; the other target is internal and not listed.</p> | |||
<p>Finally, for this target to work the source in the <samp>src</samp> subdirectory should be stored in a directory tree | |||
which matches the package names. Check the <code><javac></code> task for details.</p> | |||
<h3 id="filters">Token Filters</h3> | |||
<p>A project can have a set of tokens that might be automatically expanded if | |||
found when a file is copied, when the filtering-copy behavior is selected in the | |||
tasks that support this. These might be set in the buildfile | |||
by the <a href="Tasks/filter.html">filter</a> task.</p> | |||
<p>Since this can potentially be a very harmful behavior, | |||
the tokens in the files <strong>must</strong> | |||
be of the form <code>@<var>token</var>@</code>, where | |||
<var>token</var> is the token name that is set | |||
in the <code><filter></code> task. This token syntax matches the syntax of other build systems | |||
that perform such filtering and remains sufficiently orthogonal to most | |||
programming and scripting languages, as well as with documentation systems.</p> | |||
<p><strong>Note</strong>: If a token with the format <code>@<var>token</var>@</code> | |||
is found in a file, but no | |||
filter is associated with that token, no changes take place; | |||
therefore, no escaping | |||
method is available—but as long as you choose appropriate names for your | |||
tokens, this should not cause problems.</p> | |||
<p><strong>Warning</strong>: If you copy binary files with filtering turned on, you can corrupt the | |||
files. This feature should be used with text files <em>only</em>.</p> | |||
<p>A project can have a set of tokens that might be automatically expanded if found when a file is copied, when the | |||
filtering-copy behavior is selected in the tasks that support this. These might be set in the buildfile by | |||
the <a href="Tasks/filter.html">filter</a> task.</p> | |||
<p>Since this can potentially be a very harmful behavior, the tokens in the files <strong>must</strong> be of the | |||
form <code>@<var>token</var>@</code>, where <var>token</var> is the token name that is set in | |||
the <code><filter></code> task. This token syntax matches the syntax of other build systems that perform such | |||
filtering and remains sufficiently orthogonal to most programming and scripting languages, as well as with documentation | |||
systems.</p> | |||
<p><strong>Note</strong>: If a token with the format <code>@<var>token</var>@</code> is found in a file, but no filter | |||
is associated with that token, no changes take place; therefore, no escaping method is available—but as long as | |||
you choose appropriate names for your tokens, this should not cause problems.</p> | |||
<p><strong>Warning</strong>: If you copy binary files with filtering turned on, you can corrupt the files. This feature | |||
should be used with text files <em>only</em>.</p> | |||
<h3 id="path">Path-like Structures</h3> | |||
<p>You can specify <code>PATH</code>- and <code>CLASSPATH</code>-type | |||
references using both <q>:</q> and <q>;</q> as separator | |||
characters. Ant will | |||
convert the separator to the correct character of the current operating | |||
system.</p> | |||
<p>Wherever path-like values need to be specified, a nested element can | |||
be used. This takes the general form of:</p> | |||
<p>You can specify <code>PATH</code>- and <code>CLASSPATH</code>-type references using both <q>:</q> and <q>;</q> as | |||
separator characters. Ant will convert the separator to the correct character of the current operating system.</p> | |||
<p>Wherever path-like values need to be specified, a nested element can be used. This takes the general form of:</p> | |||
<pre> | |||
<classpath> | |||
<pathelement path="${classpath}"/> | |||
<pathelement location="lib/helper.jar"/> | |||
</classpath></pre> | |||
<p>The <var>location</var> attribute specifies a single file or | |||
directory relative to the project's base directory (or an absolute | |||
filename), while the <var>path</var> attribute accepts colon- | |||
or semicolon-separated lists of locations. The <var>path</var> | |||
attribute is intended to be used with predefined paths—in any other | |||
case, multiple elements with <var>location</var> attributes should be | |||
preferred.</p> | |||
<p><em>Since Ant 1.8.2</em> the <var>location</var> attribute can also contain a | |||
wildcard in its last path component (i.e. it can end in a | |||
<q>*</q>) in order to support wildcard <code>CLASSPATH</code>s introduced | |||
with Java 6. Ant will not expand or evaluate the wildcards and the | |||
resulting path may not work as anything else but a <code>CLASSPATH</code>—or | |||
even as a <code>CLASSPATH</code> for JVM prior to Java 6.</p> | |||
<p>The <var>location</var> attribute specifies a single file or directory relative to the project's base directory (or | |||
an absolute filename), while the <var>path</var> attribute accepts colon- or semicolon-separated lists of | |||
locations. The <var>path</var> attribute is intended to be used with predefined paths—in any other case, multiple | |||
elements with <var>location</var> attributes should be preferred.</p> | |||
<p><em>Since Ant 1.8.2</em> the <var>location</var> attribute can also contain a wildcard in its last path component | |||
(i.e. it can end in a <q>*</q>) in order to support wildcard <code>CLASSPATH</code>s introduced with Java 6. Ant will | |||
not expand or evaluate the wildcards and the resulting path may not work as anything else but | |||
a <code>CLASSPATH</code>—or even as a <code>CLASSPATH</code> for JVM prior to Java 6.</p> | |||
<p>As a shortcut, the <code><classpath></code> tag | |||
supports <var>path</var> and | |||
<var>location</var> attributes of its own, so:</p> | |||
@@ -274,16 +227,11 @@ supports <var>path</var> and | |||
</pre> | |||
<p>can be abbreviated to:</p> | |||
<pre><classpath path="${classpath}"/></pre> | |||
<p>In addition, one or more | |||
<a href="Types/resources.html#collection">resource collections</a> | |||
can be specified as nested elements (these must consist of | |||
<a href="Types/resources.html#file">file</a>-type resources only). | |||
Additionally, it should be noted that although resource collections are | |||
processed in the order encountered, certain resource collection types | |||
such as <a href="Types/fileset.html">fileset</a>, | |||
<a href="Types/dirset.html">dirset</a> and | |||
<a href="Types/resources.html#files">files</a> | |||
are undefined in terms of order.</p> | |||
<p>In addition, one or more <a href="Types/resources.html#collection">resource collections</a> can be specified as | |||
nested elements (these must consist of <a href="Types/resources.html#file">file</a>-type resources only). Additionally, | |||
it should be noted that although resource collections are processed in the order encountered, certain resource | |||
collection types such as <a href="Types/fileset.html">fileset</a>, <a href="Types/dirset.html">dirset</a> | |||
and <a href="Types/resources.html#files">files</a> are undefined in terms of order.</p> | |||
<pre> | |||
<classpath> | |||
<pathelement path="${classpath}"/> | |||
@@ -297,33 +245,24 @@ are undefined in terms of order.</p> | |||
</dirset> | |||
<filelist refid="third-party_jars"/> | |||
</classpath></pre> | |||
<p>This builds a path that holds the value of <samp>${classpath}</samp>, | |||
followed by all jar files in the <samp>lib</samp> directory, | |||
the <samp>classes</samp> directory, all directories named | |||
<samp>classes</samp> under the <samp>apps</samp> subdirectory of | |||
<samp>${build.dir}</samp>, except those | |||
that have the text <code>Test</code> in their name, and | |||
the files specified in the referenced FileList.</p> | |||
<p>If you want to use the same path-like structure for several tasks, | |||
you can define them with a <code><path></code> element at the | |||
same level as <code><target></code>s, and reference them via their | |||
<p>This builds a path that holds the value of <samp>${classpath}</samp>, followed by all jar files in | |||
the <samp>lib</samp> directory, the <samp>classes</samp> directory, all directories named <samp>classes</samp> under | |||
the <samp>apps</samp> subdirectory of <samp>${build.dir}</samp>, except those that have the text <code>Test</code> in | |||
their name, and the files specified in the referenced FileList.</p> | |||
<p>If you want to use the same path-like structure for several tasks, you can define them with | |||
a <code><path></code> element at the same level as <code><target></code>s, and reference them via their | |||
<var>id</var> attribute—see <a href="#references">References</a> for an | |||
example.</p> | |||
<p>By default a path-like structure will re-evaluate all nested | |||
resource collections whenever it is used, which may lead to | |||
unnecessary re-scanning of the filesystem. <em>Since Ant 1.8.0</em>, path has | |||
an optional <var>cache</var> attribute, if it is set to <q>true</q>, the path | |||
instance will only scan its nested resource collections once and | |||
assume it doesn't change during the build anymore (the default | |||
for <var>cache</var> still is <q>false</q>). Even if you are using the | |||
path only in a single task it may improve overall performance to set | |||
<var>cache</var> to <q>true</q> if you are using complex nested | |||
constructs.</p> | |||
<p>A path-like structure can include a reference to another path-like | |||
structure (a path being itself a resource collection) | |||
via nested <code><path></code> elements:</p> | |||
<p>By default a path-like structure will re-evaluate all nested resource collections whenever it is used, which may lead | |||
to unnecessary re-scanning of the filesystem. <em>Since Ant 1.8.0</em>, path has an optional <var>cache</var> | |||
attribute, if it is set to <q>true</q>, the path instance will only scan its nested resource collections once and assume | |||
it doesn't change during the build anymore (the default for <var>cache</var> still is <q>false</q>). Even if you are | |||
using the path only in a single task it may improve overall performance to set <var>cache</var> to <q>true</q> if you | |||
are using complex nested constructs.</p> | |||
<p>A path-like structure can include a reference to another path-like structure (a path being itself a resource | |||
collection) via nested <code><path></code> elements:</p> | |||
<pre> | |||
<path id="base.path"> | |||
<pathelement path="${classpath}"/> | |||
@@ -337,21 +276,18 @@ via nested <code><path></code> elements:</p> | |||
<path refid="base.path"/> | |||
<pathelement location="testclasses"/> | |||
</path></pre> | |||
The shortcuts previously mentioned for <code><classpath></code> | |||
are also valid for <code><path></code>. For example: | |||
<p>The shortcuts previously mentioned for <code><classpath></code> are also valid | |||
for <code><path></code>. For example:</p> | |||
<pre> | |||
<path id="base.path"> | |||
<pathelement path="${classpath}"/> | |||
</path></pre> | |||
can be written as: | |||
<p>can be written as:</p> | |||
<pre><path id="base.path" path="${classpath}"/></pre> | |||
<h4 id="pathshortcut">Path Shortcut</h4> | |||
<p> | |||
<em>Since Ant 1.6</em>, there is a shortcut for converting paths to OS specific | |||
strings in properties. One can use the expression | |||
<samp>${toString:<em>pathreference</em>}</samp> to convert a path element | |||
reference to a string that can be used for a path argument. For example: | |||
</p> | |||
<p><em>Since Ant 1.6</em>, there is a shortcut for converting paths to OS specific strings in properties. One can use | |||
the expression <samp>${toString:<em>pathreference</em>}</samp> to convert a path element reference to a string that can | |||
be used for a path argument. For example:</p> | |||
<pre> | |||
<path id="lib.path.ref"> | |||
<fileset dir="lib" includes="*.jar"/> | |||
@@ -361,9 +297,8 @@ can be written as: | |||
</javac></pre> | |||
<h3 id="arg">Command-line Arguments</h3> | |||
<p>Several tasks take arguments that will be passed to another | |||
process on the command line. To make it easier to specify arguments | |||
that contain space characters, nested <code>arg</code> elements can be used.</p> | |||
<p>Several tasks take arguments that will be passed to another process on the command line. To make it easier to specify | |||
arguments that contain space characters, nested <code>arg</code> elements can be used.</p> | |||
<table class="attr"> | |||
<tr> | |||
<th>Attribute</th> | |||
@@ -372,28 +307,23 @@ that contain space characters, nested <code>arg</code> elements can be used.</p> | |||
</tr> | |||
<tr> | |||
<td>value</td> | |||
<td>a single command-line argument; can contain space | |||
characters.</td> | |||
<td>a single command-line argument; can contain space characters.</td> | |||
<td rowspan="5">Exactly one of these.</td> | |||
</tr> | |||
<tr> | |||
<td>file</td> | |||
<td class="left">The name of a file as a single command-line | |||
argument; will be replaced with the absolute filename of the file.</td> | |||
<td class="left">The name of a file as a single command-line argument; will be replaced with the absolute filename | |||
of the file.</td> | |||
</tr> | |||
<tr> | |||
<td>path</td> | |||
<td class="left">A string that will be treated as a path-like | |||
string as a single command-line argument; you can use <q>;</q> | |||
or <q>:</q> as | |||
path separators and Ant will convert it to the platform's local | |||
conventions.</td> | |||
<td class="left">A string that will be treated as a path-like string as a single command-line argument; you can | |||
use <q>;</q> or <q>:</q> as path separators and Ant will convert it to the platform's local conventions.</td> | |||
</tr> | |||
<tr> | |||
<td>pathref</td> | |||
<td class="left"><a href="#references">Reference</a> to a path | |||
defined elsewhere. Ant will convert it to the platform's local | |||
conventions.</td> | |||
<td class="left"><a href="#references">Reference</a> to a path defined elsewhere. Ant will convert it to the | |||
platform's local conventions.</td> | |||
</tr> | |||
<tr> | |||
<td>line</td> | |||
@@ -401,44 +331,38 @@ that contain space characters, nested <code>arg</code> elements can be used.</p> | |||
</tr> | |||
<tr> | |||
<td>prefix</td> | |||
<td>A fixed string to be placed in front of the | |||
argument. In the case of a line broken into parts, it will be | |||
placed in front of every part. <em>Since Ant 1.8.</em></td> | |||
<td>A fixed string to be placed in front of the argument. In the case of a line broken into parts, it will be placed | |||
in front of every part. <em>Since Ant 1.8.</em></td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>suffix</td> | |||
<td>A fixed string to be placed immediately after the | |||
argument. In the case of a line broken into parts, it will be | |||
<td>A fixed string to be placed immediately after the argument. In the case of a line broken into parts, it will be | |||
placed after every part. <em>Since Ant 1.8.</em></td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
<p>It is highly recommended to avoid the <var>line</var> version | |||
when possible. Ant will try to split the command line in a way | |||
similar to what a (Unix) shell would do, but may create something that | |||
is very different from what you expect under some circumstances.</p> | |||
<p>It is highly recommended to avoid the <var>line</var> version when possible. Ant will try to split the command line | |||
in a way similar to what a (Unix) shell would do, but may create something that is very different from what you expect | |||
under some circumstances.</p> | |||
<h4>Examples</h4> | |||
<pre><arg value="-l -a"/></pre> | |||
<p>is a single command-line argument containing a space character, | |||
<em>not</em> separate options <q>-l</q> and <q>-a</q>.</p> | |||
<p>is a single command-line argument containing a space character, <em>not</em> separate options <q>-l</q> | |||
and <q>-a</q>.</p> | |||
<pre><arg line="-l -a"/></pre> | |||
<p>This is a command line with two separate options, <q>-l</q> and <q>-a</q>.</p> | |||
<pre><arg path="/dir;/dir2:\dir3"/></pre> | |||
<p>is a single command-line argument with the value | |||
<code>\dir;\dir2;\dir3</code> on DOS-based systems and | |||
<code>/dir:/dir2:/dir3</code> on Unix(-like) systems.</p> | |||
<p>is a single command-line argument with the value <code>\dir;\dir2;\dir3</code> on DOS-based systems | |||
and <code>/dir:/dir2:/dir3</code> on Unix(-like) systems.</p> | |||
<h3 id="references">References</h3> | |||
<p>Any project element can be assigned an identifier using its | |||
<var>id</var> attribute. In most cases the element can subsequently | |||
be referenced by specifying the <var>refid</var> attribute on an | |||
element of the same type. This can be useful if you are going to | |||
replicate the same snippet of XML over and over again—using a | |||
<code><classpath></code> structure more than once, for example.</p> | |||
<p>Any project element can be assigned an identifier using its <var>id</var> attribute. In most cases the element can | |||
subsequently be referenced by specifying the <var>refid</var> attribute on an element of the same type. This can be | |||
useful if you are going to replicate the same snippet of XML over and over again—using | |||
a <code><classpath></code> structure more than once, for example.</p> | |||
<p>The following example:</p> | |||
<pre> | |||
<project ... > | |||
@@ -483,70 +407,56 @@ replicate the same snippet of XML over and over again—using a | |||
</javac> | |||
</target> | |||
</project></pre> | |||
<p>All tasks that use nested elements for | |||
<a href="Types/patternset.html">PatternSet</a>s, | |||
<a href="Types/fileset.html">FileSet</a>s, | |||
<a href="Types/zipfileset.html">ZipFileSet</a>s or | |||
<a href="#path">path-like structures</a> accept references to these structures | |||
as shown in the examples. Using <var>refid</var> on a task will ordinarily | |||
have the same effect (referencing a task already declared), but the user | |||
should be aware that the interpretation of this attribute is dependent on the | |||
implementation of the element upon which it is specified. Some tasks (the | |||
<a href="Tasks/property.html">property</a> task is a handy example) | |||
<p>All tasks that use nested elements | |||
for <a href="Types/patternset.html">PatternSet</a>s, <a href="Types/fileset.html">FileSet</a>s, <a href="Types/zipfileset.html">ZipFileSet</a>s | |||
or <a href="#path">path-like structures</a> accept references to these structures as shown in the | |||
examples. Using <var>refid</var> on a task will ordinarily have the same effect (referencing a task already declared), | |||
but the user should be aware that the interpretation of this attribute is dependent on the implementation of the element | |||
upon which it is specified. Some tasks (the <a href="Tasks/property.html">property</a> task is a handy example) | |||
deliberately assign a different meaning to <var>refid</var>.</p> | |||
<h3 id="external-tasks">Use of external tasks</h3> | |||
Ant supports a plugin mechanism for using third party tasks. For using them you | |||
have to do two steps: | |||
<p>Ant supports a plugin mechanism for using third party tasks. For using them you have to do two steps:</p> | |||
<ol> | |||
<li>place their implementation somewhere where Ant can find them.</li> | |||
<li>declare them.</li> | |||
</ol> | |||
Don't add anything to the <code>CLASSPATH</code> environment variable—this is often the | |||
reason for very obscure errors. Use Ant's own <a href="install.html#optionalTasks">mechanisms</a> | |||
for adding libraries: | |||
<p>Don't add anything to the <code>CLASSPATH</code> environment variable—this is often the reason for very obscure | |||
errors. Use Ant's own <a href="install.html#optionalTasks">mechanisms</a> for adding libraries:</p> | |||
<ul> | |||
<li>via command line argument <code>-lib</code></li> | |||
<li>adding to <code>${user.home}/.ant/lib</code></li> | |||
<li>adding to <code>${ant.home}/lib</code></li> | |||
</ul> | |||
For the declaration there are several ways: | |||
<p>For the declaration there are several ways:</p> | |||
<ul> | |||
<li>declare a single task per using instruction using | |||
<code><<a href="Tasks/taskdef.html">taskdef</a> name="taskname" | |||
classname="ImplementationClass"/></code> | |||
<br/> | |||
<code><taskdef name="for" classname="net.sf.antcontrib.logic.For"/> | |||
<for ... /></code> | |||
<code><<a href="Tasks/taskdef.html">taskdef</a> name="taskname" | |||
classname="ImplementationClass"/></code><br/> | |||
<code><taskdef name="for" classname="net.sf.antcontrib.logic.For"/> <for | |||
... /></code> | |||
</li> | |||
<li>declare a bundle of tasks using a <samp>properties</samp> file holding these | |||
taskname-ImplementationClass-pairs and <code><taskdef></code> | |||
<br/> | |||
<code><taskdef resource="net/sf/antcontrib/antcontrib.properties"/> | |||
<for ... /></code> | |||
<li>declare a bundle of tasks using a <samp>properties</samp> file holding these taskname–ImplementationClass | |||
pairs and <code><taskdef></code><br/> | |||
<code><taskdef resource="net/sf/antcontrib/antcontrib.properties"/> <for ... /></code> | |||
</li> | |||
<li>declare a bundle of tasks using | |||
an <a href="Types/antlib.html">xml file</a> holding these | |||
taskname-ImplementationClass-pairs and <code><taskdef></code> | |||
<br/> | |||
<code><taskdef resource="net/sf/antcontrib/antlib.xml"/> | |||
<for ... /></code> | |||
<li>declare a bundle of tasks using an <a href="Types/antlib.html">xml file</a> holding these | |||
taskname-ImplementationClass-pairs and <code><taskdef></code><br/> | |||
<code><taskdef resource="net/sf/antcontrib/antlib.xml"/> <for ... /></code> | |||
</li> | |||
<li>declare a bundle of tasks using an xml file named <samp>antlib.xml</samp>, XML namespace and | |||
<a href="Types/antlib.html#antlibnamespace"><code>antlib:</code> protocol handler</a> | |||
<br/> | |||
<code><project xmlns:ac="antlib:net.sf.antcontrib"/> | |||
<ac:for ... /></code> | |||
<li>declare a bundle of tasks using an xml file named <samp>antlib.xml</samp>, XML namespace | |||
and <a href="Types/antlib.html#antlibnamespace"><code>antlib:</code> protocol handler</a><br/> | |||
<code><project xmlns:ac="antlib:net.sf.antcontrib"/> <ac:for ... /></code> | |||
</li> | |||
</ul> | |||
If you need a special function, you should | |||
<ol> | |||
<li>have a look at this manual, because Ant provides lot of tasks</li> | |||
<li>have a look at the external task page <a href="https://ant.apache.org/external.html">online</a></li> | |||
<li>have a look at the external task <a href="https://wiki.apache.org/ant/AntExternalTaskdefs">wiki | |||
page</a></li> | |||
<li>ask on the <a href="https://ant.apache.org/mail.html#User%20List">Ant user</a> list</li> | |||
<li>have a look at the external task page <a href="https://ant.apache.org/external.html" target="_top">online</a></li> | |||
<li>have a look at the external task <a href="https://wiki.apache.org/ant/AntExternalTaskdefs" target="_top">wiki | |||
page</a></li> | |||
<li>ask on the <a href="https://ant.apache.org/mail.html#User%20List" target="_top">Ant user</a> list</li> | |||
<li><a href="tutorial-writing-tasks.html">implement</a> (and share) your own</li> | |||
</ol> | |||