<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>
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> -->
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"
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>
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
<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
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.