git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272967 13f79535-47bb-0310-9956-ffa450edef68master
@@ -128,6 +128,192 @@ Changes that could break older environments: | |||
-------------------------------------------- | |||
* Important: Single $ signs are no longer silently stripped! | |||
======= | |||
* Project.getBuildListeners now returns a clone of the listener | |||
list. Changes to the returned list will not affect the listeners | |||
currently attached to the Project. It also means that it is safe to | |||
iterate over the returned list if listeners are added or removed | |||
during the traversal. | |||
* <pvcs> default filenameformat has been different from Ant 1.4.1. | |||
Now it is different from 1.5beta1 and 1.5beta2. | |||
* Some messages that are printed during startup will not be | |||
written to the logfile specified via -logfile as they might destroy | |||
the format of the file for special BuildLoggers (like XmlLogger). | |||
Fixed bugs: | |||
----------- | |||
* <available> could fail to find files or directories that happen to | |||
start with the name of the project's basedir but are not children of | |||
the basedir. | |||
* Nested <property>'s inside <ant> can now be overriden by subsequent | |||
<ant> and <antcall> tasks. | |||
* <xslt>'s outputtype attribute wouldn't do anything. | |||
* <linecontains> filterreader could swallow lines. | |||
* <sequential> used to configure the tasks (set their attributes) | |||
before the first task has been executed. This means that properties | |||
that have been set by nested task seemed to be unset for the other | |||
tasks in the same <sequential> element. | |||
* <javac>'s sourcepath setting has been ignored by some compiler | |||
implementations. | |||
* <javadoc>'s packagelist attribute didn't work. | |||
* the plain mailer would always use port 25 in <mail>. | |||
* Ant's default logger could swallow empty lines. | |||
* ejbjar's iPlanet nested element now can process multiple descriptors. | |||
* IPlanetEjbc was looking in the wrong place for four iiop files. | |||
* <javac> would pass the -source switch to JDK 1.3's javac, even | |||
though it doesn't support it. | |||
Other changes: | |||
-------------- | |||
* <checksum> now uses a buffer (of configurable size). | |||
* The "Trying to override task definition" warning has been degraded | |||
to verbose level if the two task definitions only differ in the class | |||
loader instance that has loaded the definition. | |||
* Add a jvmargs to the ejbjar's weblogic element to allow additional | |||
arguments to be provided to the VM runnign ejbc. Document the | |||
jvmdebuglevel attribute which can be used to avoid warnings about | |||
interface classess being found on the classpath. Document the new | |||
<sysproperty> element which allows JVM properties to be defined. | |||
Added an outputdir attribute to allow the destination to be a | |||
directory into which the exploded jar is written. | |||
* ejbjar now supports Borland Enterprise Server 5 and Jonas 2.5 | |||
Changes from Ant 1.5beta1 to Ant 1.5beta2 | |||
========================================= | |||
Changes that could break older environments: | |||
-------------------------------------------- | |||
* Properties will now be expanded in mail message bodies. This means | |||
that one $ sign will be stripped if your mail message contains the text | |||
$$. | |||
* org.apache.tools.ant.taskdefs.Expand no longer extends MatchingTask. | |||
* Available#setFile now again uses a File argument as it did in 1.4, | |||
this may break environments that have been adapted to the String | |||
argument version present in 1.5beta1. | |||
Fixed bugs: | |||
----------- | |||
* When <move> attempts a rename, it deletes the destination file, if it | |||
exists, before renaming the source file. However, <move> was not | |||
checking if the destination file was actually a directory before | |||
trying to delete it. | |||
* Make CVS Tasks to work under Cygwin. | |||
* Fix LineContains to handle huge files elegantly without causing | |||
Stack Overflows. | |||
* if you ask for the "classic" compiler on Java1.4, you get upgraded to | |||
"modern" because there is no classic compiler any more. | |||
* the <http> condition was viewing 404 'not found' exceptions as success. Now | |||
it defaults to viewing any response >=400 as an error, and has an errorsBeginAt | |||
attribute you can use if you want a higher or lower value. | |||
* <get> throws a build exception on an http authorization error, unless you | |||
have set ignoreerrors to true. | |||
* <wsdltodotnet> was spelt in Wintel case: <WsdlToDotnet>. It is now lower | |||
case, though the old spelling is retained for anyone who used it. | |||
* Merging of Manifests in jar now works as documented. | |||
* paths that have been separated by colons would be incorrectly parsed | |||
on NetWare. | |||
* runant.pl now supports NetWare. | |||
* <tempfile> and <setproxy> tasks were in beta1, but not defined by | |||
default; They now are. <tempfile> fills a property with the name of a | |||
temporary file; <setproxy> lets you set the JVM's http, ftp and socks proxy | |||
settings. | |||
* <available classname="foo" ignoresystemclasses="true"> failed for | |||
JDK 1.1 and 1.2, even if the class could be found on the | |||
user-specified classpath. | |||
* <property environment=... /> now works on z/OS. | |||
* forked <javac> failed for the wrong reason on JDK 1.1 - Ant would | |||
use a temporary file to hold the names of the files to compile under | |||
some conditons, but 1.1 doesn't support this feature. Ant will no | |||
longer try this, but you may run into problems with the length of the | |||
command line now. | |||
* the refid attribute for <property>s nested into <ant> or <param>s | |||
nested into <antcall> didn't work. | |||
* <replaceregexp> didn't work for nested <fileset>s. | |||
* <javadoc> dropped sourcepath entries if no "interesting" .java | |||
source files could be found below them. This has been backwards | |||
incompatible and caused problems with custom doclets like xdoclet. | |||
* Using the doclet, docletpath or docletpathref attributes of | |||
<javadoc> may have caused NullPointerExceptions. | |||
* nested <filesets> of <javadoc> would include too much. | |||
* <dependset> will no longer choke on <targetfileset>s that point to | |||
non-existing directories. | |||
* <patch> didn't work at all. | |||
* <replace> and <replaceregexp> now fail if the file they are working | |||
on is locked. | |||
* <javadoc> would pick up the wrong executable in the combination JDK | |||
1.2 and AIX. | |||
Other changes: | |||
-------------- | |||
* z/OS now gets detected by the os condition. | |||
* <fileset> and <dirset> now have an optional followsymlink attribute | |||
that can prevent Ant from following symbolic links on some platforms. | |||
* BeanShell is now supported in the <script> task. | |||
* <ejbjar> under Weblogic attempts to use the ejbc20 compiler for 2.0 beans | |||
based on the deployment descriptor's DTD reference. Under weblogic 7.00 Beta | |||
this ejbc class has been deprecated. To avoid the deprecation warning use | |||
ejbcclass="weblogic.ejbc". | |||
* <ejbjar> will add a manifest to the generated jar based on the naming | |||
convention in use. This overrides the manifest specified in the | |||
<ejbjar> attribute | |||
Changes from Ant 1.4.1 to 1.5beta1 | |||
================================== | |||
Changes that could break older environments: | |||
-------------------------------------------- | |||
* Important: Single $ signs are no longer silently stripped! | |||
>>>>>>> 1.263.2.51 | |||
Before you panic that we have broken all your build files, we have kept | |||
the old "$$" -> "$" behaviour. So only build files which accidentally had | |||
a $ sign in a string that was being silently stripped may break. | |||
@@ -246,7 +432,11 @@ Other changes: | |||
are added to the generated EJB jars. A new attribute "dependency" can be | |||
defines which classes are added. The addition of classes now uses | |||
the Jakarta-BCEL library rather than reflection, meaning bean classes are | |||
no longer loaded into Ant's JVM. | |||
no longer loaded into Ant's JVM. The default dependency analyzer is known as | |||
the ancestor analyzer. It provides the same behaviour as the 1.4.1 version of | |||
<ejbjar>. If the BCEL library is not present, a warning will be issued stating | |||
the ancestor analyzer is not available. In this case <ejbjar> will continue | |||
to function but will not add super classes to the jar. | |||
* <available> has a new attribute named ignoreSystemClasses. | |||
@@ -186,6 +186,8 @@ | |||
unless="trax.present"/> | |||
<exclude name="${optional.package}/XsltTest.java" | |||
unless="trax.present"/> | |||
<exclude name="${ant.package}/types/XMLCatalogBuildFileTest.java" | |||
unless="trax.present"/> | |||
</patternset> | |||
<patternset id="needs.xalan1"> | |||
<exclude name="${optional.package}/XalanLiaison*.java" | |||
@@ -302,6 +304,7 @@ | |||
<exclude name="${optional.package}/splash/*.java" unless="swing.present" /> | |||
</patternset> | |||
<patternset id="teststhatfail"> | |||
<exclude name="${ant.package}/types/XMLCatalogTest.java"/> | |||
</patternset> | |||
<!-- | |||
@@ -1289,6 +1292,8 @@ | |||
unless="trax.impl.present"/> | |||
<exclude name="${optional.package}/XsltTest.java" | |||
unless="trax.impl.present"/> | |||
<exclude name="${ant.package}/types/XMLCatalogBuildFileTest.java" | |||
unless="trax.impl.present"/> | |||
<!-- needs BSF to work --> | |||
<exclude name="${optional.package}/XalanLiaisonTest.java" | |||
@@ -123,7 +123,10 @@ one mapper.</p> | |||
Under some operating systems, this gives access to facilities | |||
not normally available through the VM including, under Windows, | |||
being able to execute scripts, rather than their associated | |||
interpreter.</td> | |||
interpreter. If you want to specify the name of the | |||
executable as a relative path to the directory given by the | |||
dir attribute, it may become necessary to set vmlauncher to | |||
false as well.</td> | |||
<td align="center" valign="top">No, default is <i>true</i></td> | |||
</tr> | |||
</table> | |||
@@ -58,7 +58,7 @@ perform checksum verifications. | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">overwrite</td> | |||
<td valign="top">forceoverwrite</td> | |||
<td valign="top">Overwrite existing files even if the destination | |||
files are newer. Defaults to "no".</td> | |||
<td valign="top" align="center">No</td> | |||
@@ -73,6 +73,13 @@ perform checksum verifications. | |||
check against the generated checksum. | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">readbuffersize</td> | |||
<td valign="top">The size of the buffer )in bytes) to use when | |||
reading a file. Defaults to "8192" - you may get a | |||
better performance on big files if you increase this value.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
</table> | |||
<h3>Parameters specified as nested elements</h3> | |||
@@ -144,7 +151,7 @@ When working with more than one file, if condition and/or verifyproperty is used | |||
the result will be true only if the checksums matched correctly for all files being | |||
considered. | |||
<hr><p align="center">Copyright © 2001 Apache Software Foundation. All rights | |||
<hr><p align="center">Copyright © 2001-2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
@@ -43,13 +43,13 @@ directly. More FileSets can be specified using nested | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -45,7 +45,7 @@ supports all attributes of <code><fileset></code> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -57,7 +57,7 @@ supports all attributes of <code><fileset></code> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -112,7 +112,7 @@ recursively. All java files are copied, except for files with the name <code>Tes | |||
<p>copies the directory <code>${src}/resources</code> to <code>${dist}</code> | |||
recursively. All java files are copied, except for the files under the <code>mypackage/test</code> | |||
directory.</p> | |||
<hr><p align="center">Copyright © 2000-2001 Apache Software Foundation. All rights | |||
<hr><p align="center">Copyright © 2000-2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
@@ -94,7 +94,7 @@ in <strong>Directory-based Tasks</strong>, and see the | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top"><em>Deprecated.</em> Use <code><fileset></code>. | |||
Comma-separated list of patterns of | |||
Comma- or space-separated list of patterns of | |||
files that must be deleted. All files are relative to the directory | |||
specified in <code>dir</code>. | |||
</td> | |||
@@ -110,7 +110,7 @@ in <strong>Directory-based Tasks</strong>, and see the | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top"><em>Deprecated.</em> Use <code><fileset></code>. | |||
Comma-separated list of patterns of | |||
Comma- or space-separated list of patterns of | |||
files that must be excluded from the deletion list. | |||
All files are relative to the directory specified in <code>dir</code>. | |||
No files (except default excludes) are excluded when omitted.</td> | |||
@@ -28,7 +28,7 @@ the directory will be the current directory. | |||
</tr> | |||
<tr> | |||
<td valign="top">file</td> | |||
<td valign="top">The path to take the basename of.</td> | |||
<td valign="top">The path to take the dirname of.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
<tr> | |||
@@ -58,7 +58,7 @@ attributes of zipfilesets in a Zip or Jar task.)</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -70,7 +70,7 @@ attributes of zipfilesets in a Zip or Jar task.)</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -99,7 +99,10 @@ systems.</p> | |||
Under some operating systems, this gives access to facilities | |||
not normally available through the VM including, under Windows, | |||
being able to execute scripts, rather than their associated | |||
interpreter.</td> | |||
interpreter. If you want to specify the name of the | |||
executable as a relative path to the directory given by the | |||
dir attribute, it may become necessary to set vmlauncher to | |||
false as well.</td> | |||
<td align="center" valign="top">No, default is <i>true</i></td> | |||
</tr> | |||
</table> | |||
@@ -12,7 +12,7 @@ | |||
<p> | |||
Adjusts a text file to local conventions. | |||
</p> | |||
<p> | |||
The set of files to be adjusted can be refined with the | |||
<i>includes</i>, <i>includesfile</i>, <i>excludes</i>, | |||
@@ -27,7 +27,7 @@ | |||
tasks</a>, for details of file inclusion/exclusion patterns | |||
and their usage. | |||
</p> | |||
<p>This task forms an implicit <a href="../CoreTypes/fileset.html">FileSet</a> and | |||
supports all attributes of <code><fileset></code> | |||
(<code>dir</code> becomes <code>srcdir</code>) as well as the nested | |||
@@ -61,7 +61,7 @@ supports all attributes of <code><fileset></code> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -73,7 +73,7 @@ supports all attributes of <code><fileset></code> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -267,7 +267,7 @@ EOF characters are left alone if run on | |||
DOS systems, and are removed if run on Unix systems. | |||
You never know what editor a user will use to browse README's.</p> | |||
<hr> | |||
<p align="center">Copyright © 2000-2001 Apache Software Foundation. All rights | |||
<p align="center">Copyright © 2000-2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
@@ -88,7 +88,7 @@ being wrapped and continued on the next line. | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -100,7 +100,7 @@ being wrapped and continued on the next line. | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -119,7 +119,7 @@ invoking the compiler.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">Comma-separated list of files (may be specified using | |||
<td valign="top">Comma- or space-separated list of files (may be specified using | |||
wildcard patterns) that must be | |||
included; all <code>.java</code> files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
@@ -132,7 +132,7 @@ invoking the compiler.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">Comma-separated list of files (may be specified using | |||
<td valign="top">Comma- or space-separated list of files (may be specified using | |||
wildcard patterns) that must be excluded; no files (except default | |||
excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
@@ -305,13 +305,13 @@ invoking the compiler.</p> | |||
<td valign="top">Value of the <code>-source</code> command-line | |||
switch; will be ignored by all implementations except | |||
<code>modern</code> and <code>jikes</code>.<br> | |||
If you use this attribute together with <code>jikes</code>, you | |||
must make sure that your version of jikes supports the | |||
<code>-source</code> switch.<br> | |||
Legal values are <code>1.3</code> and <code>1.4</code> – by | |||
default, no <code>-source</code> argument will be used at | |||
all.</td> | |||
<code>javac1.4</code> (or <code>modern</code> when Ant is not | |||
running in a 1.3 VM) and <code>jikes</code>.<br> If you use this | |||
attribute together with <code>jikes</code>, you must make sure | |||
that your version of jikes supports the <code>-source</code> | |||
switch.<br> Legal values are <code>1.3</code> and <code>1.4</code> | |||
– by default, no <code>-source</code> argument will be used | |||
at all.</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
@@ -10,9 +10,14 @@ | |||
<h2><a name="mail">Mail</a></h2> | |||
<h3>Description</h3> | |||
<p>A task to send SMTP email. This task can send mail using either plain | |||
text, uu encoding or Mime format mail depending on what is available. | |||
text, UU encoding, or MIME format mail, depending on what is available. | |||
Attachments may be sent using nested | |||
<a href="../CoreTypes/fileset.html">fileset</a> elements.</p> | |||
<p><strong>Note:</strong> This task may depend on external libraries | |||
that are not included | |||
in the Ant distribution. See <a href="../install.html#librarydependencies"> | |||
Library Dependencies</a> for more information. | |||
</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
@@ -49,7 +54,8 @@ Attachments may be sent using nested | |||
</tr> | |||
<tr> | |||
<td valign="top">messagefile</td> | |||
<td valign="top">File to send as the body of the email.</td> | |||
<td valign="top">File to send as the body of the email. Property | |||
values in the file will be expanded.</td> | |||
</tr> | |||
<td valign="top">messagemimetype</td> | |||
<td valign="top">The content type of the message. The default is | |||
@@ -148,7 +154,9 @@ attributes:</p> | |||
</table> | |||
<p>If the <code>src</code> attribute is not specified, then text can be added | |||
inside the <code><message></code> element.</p> | |||
inside the <code><message></code> element. Property expansion will occur | |||
in the message, whether it is specified as an external file or as text within | |||
the <code><message></code> element.</p> | |||
<h3>Examples</h3> | |||
@@ -167,7 +175,7 @@ inside the <code><message></code> element.</p> | |||
<mail mailhost="smtp.myisp.com" mailport="1025" subject="Test build"> | |||
<from name="me@myisp.com"> | |||
<to name="all@xyz.com"> | |||
<message>A new nightly build has completed</message> | |||
<message>The ${buildname} nightly build has completed</message> | |||
<fileset dir="dist"> | |||
<includes name="**/*.zip"/> | |||
</fileset> | |||
@@ -177,7 +185,8 @@ inside the <code><message></code> element.</p> | |||
<p>Sends an eMail from <i>me@myisp.com</i> to <i>all@xyz.com</i> with a subject of | |||
<i>Test Build</i> and attaches any zip files from the dist directory. The | |||
task will attempt to use JavaMail and fall back to UU encoding or no encoding in | |||
that order depending on what support classes are available.</p> | |||
that order depending on what support classes are available. <code>${buildname}</code> | |||
will be replaced with the <code>buildname</code> property's value.</p> | |||
<hr> | |||
<p align="center">Copyright © 2000-2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
@@ -58,7 +58,7 @@ not nested into a section will be added to the "Main" section.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">value</td> | |||
<td valign="top">the name of the attribute.</td> | |||
<td valign="top">the value of the attribute.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
</table> | |||
@@ -77,7 +77,7 @@ href="#attribute">attribute</a> elements into sections.</p> | |||
<tr> | |||
<td valign="top">name</td> | |||
<td valign="top">the name of the section.</td> | |||
<td valign="top" align="center">No, if ommitted it will be assumed | |||
<td valign="top" align="center">No, if omitted it will be assumed | |||
to be the main section.</td> | |||
</tr> | |||
</table> | |||
@@ -9,7 +9,8 @@ | |||
<h2><a name="patch">Patch</a></h2> | |||
<h3>Description</h3> | |||
<p>Applies a diff file to originals.</p> | |||
<p>Applies a diff file to originals. ; requires "patch" to be | |||
on the execution path. </p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
@@ -11,11 +11,8 @@ | |||
<h3>Description</h3> | |||
<p>Sets a property (by name and value), or set of properties (from file or | |||
resource) in the project. Properties are case sensitive.</p> | |||
<p>When a property was set by the user, or was a property in a parent project | |||
(that started this project with the <a href="ant.html">ant task</a>), then this | |||
property cannot be set, and will be ignored. This means that properties set | |||
outside the current project always override the properties of the current | |||
project.</p> | |||
Properties are immutable: whoever sets a property first freezes it for the | |||
rest of the build; they are most definately not variable. | |||
<p>There are five ways to set properties:</p> | |||
<ul> | |||
<li>By supplying both the <i>name</i> and <i>value</i> attribute.</li> | |||
@@ -30,7 +27,7 @@ project.</p> | |||
Properties will be defined for every environment variable by | |||
prefixing the supplied name and a period to the name of the variable.</li> | |||
</ul> | |||
<p>Although combinations of the three ways are possible, only one should be used | |||
<p>Although combinations of these ways are possible, only one should be used | |||
at a time. Problems might occur with the order in which properties are set, for | |||
instance.</p> | |||
<p>The value part of the properties being set, might contain references to other | |||
@@ -85,10 +82,10 @@ href="../using.html#built-in-props">here</a>.</p> | |||
<td valign="top">the prefix to use when retrieving environment variables. Thus | |||
if you specify environment="myenv" you will be able to access OS-specific | |||
environment variables via property names "myenv.PATH" or | |||
"myenv.TERM". Note that if you supply a property name with a final | |||
"." it will not be doubled. ie environment="myenv." will still | |||
allow access of environment variables through "myenv.PATH" and | |||
"myenv.TERM". This functionality is currently only implemented | |||
"myenv.TERM". Note that if you supply a property name with a final | |||
"." it will not be doubled. ie environment="myenv." will still | |||
allow access of environment variables through "myenv.PATH" and | |||
"myenv.TERM". This functionality is currently only implemented | |||
on select platforms. Feel free to send patches to increase the number of platforms | |||
this functionality is supported on ;).<br> | |||
Note also that properties are case sensitive, even if the | |||
@@ -104,7 +101,7 @@ href="../using.html#built-in-props">here</a>.</p> | |||
<tr> | |||
<td valign="top">classpathref</td> | |||
<td valign="top">the classpath to use when looking up a resource, | |||
given as <a href="../using.html#references">reference</a> to a PATH defined | |||
given as <a href="../using.html#references">reference</a> to a <path> defined | |||
elsewhere..</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
@@ -70,7 +70,7 @@ must use a nested <code><replacetoken></code> element.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -82,7 +82,7 @@ must use a nested <code><replacetoken></code> element.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -90,7 +90,7 @@ please consult miniRMI's documentation to learn how to use it.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -102,7 +102,7 @@ please consult miniRMI's documentation to learn how to use it.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -119,6 +119,11 @@ and <b>abort</b> execution and transaction and fail task.</p> | |||
<td width="78%" valign="top">Execute task only if rdbms version match</td> | |||
<td width="10%" valign="top">No (no restriction)</td> | |||
</tr> | |||
<tr> | |||
<td width="12%" valign="top">caching</td> | |||
<td width="78%" valign="top">Should the task cache loaders and the driver?</td> | |||
<td width="10%" valign="top">No (default=true)</td> | |||
</tr> | |||
</table> | |||
<h3>Parameters specified as nested elements</h3> | |||
@@ -83,7 +83,7 @@ element which is used to perform Entity and URI resolution</p> | |||
<td valign="top">force</td> | |||
<td valign="top">Recreate target files, even if they are newer | |||
than their corresponding source files or the stylesheet.</td> | |||
<td valign="top" align="center">No</td> | |||
<td valign="top" align="center">No; default is false</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">processor</td> | |||
@@ -103,7 +103,7 @@ element which is used to perform Entity and URI resolution</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be included. | |||
<td valign="top">comma- or space-separated list of patterns of files that must be included. | |||
All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -115,7 +115,7 @@ element which is used to perform Entity and URI resolution</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be excluded. | |||
<td valign="top">comma- or space-separated list of patterns of files that must be excluded. | |||
No files (except default excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -58,7 +58,7 @@ or "bzip2".</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">basedir</td> | |||
<td valign="top">the directory from which to zip the files.</td> | |||
<td valign="top">the directory from which to tar the files.</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
<tr> | |||
@@ -71,7 +71,7 @@ or "bzip2".</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -83,7 +83,7 @@ or "bzip2".</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -121,7 +121,7 @@ attributes | |||
</tr> | |||
<tr> | |||
<td valign="top">mode</td> | |||
<td valign="top">An 3 digit octal string, specify the user, group and other modes in | |||
<td valign="top">A 3 digit octal string, specify the user, group and other modes in | |||
the standard Unix fashion</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
@@ -59,6 +59,13 @@ href="../develop.html#writingowntask">Writing your own task</a>".</p> | |||
<code>resource</code>.</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">classpathref</td> | |||
<td valign="top">Reference to a classpath to | |||
use when looking up <code>classname</code> or | |||
<code>resource</code>.</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">loaderRef</td> <td valign="top">the name of the loader that is | |||
used to load the class, constructed from the specified classpath. Use this to | |||
@@ -11,10 +11,12 @@ | |||
<h3>Description</h3> | |||
<p>Sets the <code>DSTAMP</code>, <code>TSTAMP</code>, and <code>TODAY</code> | |||
properties in the current project. The <code>DSTAMP</code> property is in the | |||
properties in the current project. By default, | |||
the <code>DSTAMP</code> property is in the | |||
format "yyyyMMdd", <code>TSTAMP</code> is in the | |||
format "hhmm", and <code>TODAY</code> is in the | |||
format "month day year".</p> | |||
format "MMMM dd yyyy". Use the nested <format> element | |||
to specify a different format.</p> | |||
<p>These properties can be used in the build-file, for instance, to create | |||
time-stamped filenames, or used to replace placeholder tags inside documents | |||
@@ -132,7 +134,7 @@ is suitable for use with the <touch> task. The standard properties are set | |||
<tstamp prefix="start"/> | |||
</pre> | |||
<p> | |||
Sets three properties with the standard formats, prefixed with "start.": | |||
Sets three properties with the standard formats, prefixed with "start.": | |||
<code>start.DSTAMP</code>, <code>start.TSTAMP</code>, and <code>start.TODAY</code>.</p> | |||
@@ -30,6 +30,12 @@ attributes of zipfilesets in a Zip or Jar task.)</p> | |||
<td valign="top">the WAR file to create.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">warfile</td> | |||
<td valign="top"><i>Deprecated<i> name of the file to create | |||
-use <tt>destfile</tt> instead.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">webxml</td> | |||
<td valign="top">The deployment descriptor to use (WEB-INF/web.xml).</td> | |||
@@ -60,7 +66,7 @@ attributes of zipfilesets in a Zip or Jar task.)</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -72,7 +78,7 @@ attributes of zipfilesets in a Zip or Jar task.)</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -51,7 +51,9 @@ Loads property values from a valid xml file. | |||
<h3>Examples</h3> | |||
<pre> <xmlproperty file="somefile.xml" /></pre> | |||
<p>Load contents of somefile.xml as Ant properties.</p> | |||
<p>Load contents of somefile.xml as Ant properties, | |||
generating the property names from the | |||
file's element and attribute names.</p> | |||
<pre> | |||
<root-tag myattr="true"> | |||
@@ -64,6 +64,11 @@ Java.</p> | |||
<td valign="top">the zip-file to create.</td> | |||
<td align="center" valign="top">Yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">zipfile</td> | |||
<td valign="top">the <i>deprecated</i> old name of destfile.</td> | |||
<td align="center" valign="top">Yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">basedir</td> | |||
<td valign="top">the directory from which to zip the files.</td> | |||
@@ -89,7 +94,7 @@ Java.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -101,7 +106,7 @@ Java.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -34,7 +34,7 @@ elements of <code><patternset></code> directly, as well as | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">A comma-separated list of patterns of directories that | |||
<td valign="top">A comma- or space-separated list of patterns of directories that | |||
must be included; all directories are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -46,7 +46,7 @@ elements of <code><patternset></code> directly, as well as | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">A comma-separated list of patterns of directories that | |||
<td valign="top">A comma- or space-separated list of patterns of directories that | |||
must be excluded; no directories are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -40,7 +40,7 @@ attributes.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma-separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included; all files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -52,7 +52,7 @@ attributes.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma-separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded; no files (except default excludes) are excluded when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -26,7 +26,7 @@ or the following attributes.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma-separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
</tr> | |||
<tr> | |||
@@ -37,7 +37,7 @@ or the following attributes.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma-separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded; no files (except default excludes) are excluded when omitted.</td> | |||
</tr> | |||
<tr> | |||
@@ -8,83 +8,96 @@ | |||
<body> | |||
<h2><a name="log">BorlandDeploy</a>Tool</h2> | |||
<p>by Benoit Moussaud (<a href="mailto:benoit.moussaud@criltelecom.com">benoit.moussaud@criltelecom.com</a>)</p> | |||
<h3>Description</h3> | |||
<p>The BorlandDeployTool is a vendor specific nested element for the Ejbjar optional task.</p> | |||
<p>BorlandDeploymentTool is dedicated to the Borland Application Server 4.5. It | |||
generates and compiles the stubs and skeletons for all ejb described into the | |||
Deployment Descriptor, builds the jar file including the support files and | |||
<p>BorlandDeploymentTool is dedicated to the Borland Application Server 4.5.x and Borland | |||
Enterprise Server 5.x. It generates and compiles the stubs and skeletons for all ejb described into the | |||
Deployment Descriptor, builds the jar file including the support files and | |||
verify whether the produced jar is valid or not.</p> | |||
<h3>Borland element</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63"><b>Attribute</b></td> | |||
<td valign="top" width="915"><b>Description</b></td> | |||
<td align="center" valign="top" width="62"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63">destdir</td> | |||
<td valign="top" width="915">The base directory into which the generated borland | |||
<td valign="top" width="915">The base directory into which the generated borland | |||
ready jar files are deposited</td> | |||
<td align="center" valign="middle" width="62">yes</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63">debug</td> | |||
<td valign="top" width="915">If true, turn on the debug mode for each borland | |||
<td valign="top" width="915">If true, turn on the debug mode for each borland | |||
tools (java2iiop, iastool ...) default = false</td> | |||
<td align="center" valign="middle" width="62">no</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63">verify</td> | |||
<td valign="top" width="915">If true, turn on the verification at the end | |||
<td valign="top" width="915">If true, turn on the verification at the end | |||
of the jar production (default = false)</td> | |||
<td align="center" valign="middle" width="62">no</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63">verifyargs</td> | |||
<td valign="top" width="915">extra parameter for verify command</td> | |||
<td align="center" valign="middle" width="62">no</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63">suffix</td> | |||
<td valign="top" width="915">String value appended to the basename of the | |||
<td valign="top" width="915">String value appended to the basename of the | |||
deployment descriptor to create the filename of the Borland EJB jar file.</td> | |||
<td align="center" valign="middle" width="62">No, defaults to '-ejb.jar'.</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63">basdtd</td> | |||
<td valign="top" width="915"><b>Deprecated</b>. Defines the location of the | |||
DTD which covers the Borland specific deployment descriptors. | |||
This should not be necessary if you have borland in your classpath. If you | |||
do not, you should use a nested | |||
<a href="ejb.html#ejbjar-dtd"><dtd></a> element, described | |||
<td valign="top" width="915"><b>Deprecated</b>. Defines the location of the | |||
DTD which covers the Borland specific deployment descriptors. | |||
This should not be necessary if you have borland in your classpath. If you | |||
do not, you should use a nested | |||
<a href="ejb.html#ejbjar-dtd"><dtd></a> element, described | |||
in the ejbjar task documentation.</td> | |||
<td align="center" valign="middle" width="62">no</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63">ejbdtd</td> | |||
<td valign="top" width="915"><b>Deprecated</b>. Defines the location of the | |||
ejb-jar DTD in the class hierarchy. This should not be necessary | |||
if you have borland in your classpath. If you do not, you should use a | |||
nested <a href="ejb.html#ejbjar-dtd"><dtd></a> element, | |||
<td valign="top" width="915"><b>Deprecated</b>. Defines the location of the | |||
ejb-jar DTD in the class hierarchy. This should not be necessary | |||
if you have borland in your classpath. If you do not, you should use a | |||
nested <a href="ejb.html#ejbjar-dtd"><dtd></a> element, | |||
described in the ejbjar task | |||
documentation. </td> | |||
<td align="center" valign="middle" width="62">no</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63">generateclient </td> | |||
<td valign="top" width="915">If true, turn on the generation of the corresponding | |||
<td valign="top" width="915">If true, turn on the generation of the corresponding | |||
ejbjar (default = false)</td> | |||
<td align="center" valign="middle" width="62">no</td> | |||
</tr> | |||
<tr> | |||
<td valign="top" width="63">version</td> | |||
<td valign="top" width="915">set the Borland Application Version. | |||
<ul> | |||
<li>4 means B.A.S (Borland Application Server) 4.x, target will add ejb-inprise.xml file</li> | |||
<li>5 means B.E.S (Borland Application Server) 5.x, target will add ejb-borland.xml file</li> | |||
</ul> | |||
</td> | |||
<td align="center" valign="middle" width="62">No, defaults to 4</td> | |||
</tr> | |||
</table> | |||
<h3>Examples</h3> | |||
<p>The following build.xml snippet is an example of how to use Borland element | |||
<p>The following build.xml snippet is an example of how to use Borland element | |||
into the ejbjar task</p> | |||
<pre> <ejbjar srcdir="${build.classes}" basejarname="vsmp" descriptordir="${rsc.dir}/hrmanager"> | |||
<borland destdir="lib" verify="on" generateclient="on"> | |||
<borland destdir="lib" verify="on" generateclient="on" version="5"> | |||
<classpath refid="classpath" /> | |||
</borland> | |||
</borland> | |||
<include name="**\ejb-jar.xml"/> | |||
<support dir="${build.classes}"> | |||
<include name="demo\*.class"/> | |||
@@ -92,7 +105,7 @@ | |||
</support> | |||
</ejbjar></pre> | |||
<pre>The borland element will generate into the lib dir an ejb jar file using the deployment descriptor placed into the ${rsc.dir}/hrmanager directory. | |||
The verify phase is turned on and the generate client phase as well. | |||
The verify phase is turned on and the generate client phase as well. | |||
</pre> | |||
<h3> </h3> | |||
@@ -8,48 +8,59 @@ | |||
<body> | |||
<h2><a name="log">BorlandGenerateClient</a></h2> | |||
<p>by Benoit Moussaud (<a href="mailto:benoit.moussaud@criltelecom.com">benoit.moussaud@criltelecom.com</a>)</p> | |||
<h3>Description</h3> | |||
<p>The BorlandGenerateClient is a task dedicated to Borland Application Server | |||
v 4.5. It offers to generate the client jar file corresponding to an ejb jar | |||
<p>The BorlandGenerateClient is a task dedicated to Borland Application Server | |||
v 4.5. It offers to generate the client jar file corresponding to an ejb jar | |||
file.</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63"><b>Attribute</b></td> | |||
<td valign="top" width="915"><b>Description</b></td> | |||
<td align="center" valign="top" width="62"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63">ejbjar</td> | |||
<td valign="top" width="915">ejb jar file</td> | |||
<td align="center" valign="middle" width="62">yes</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63">debug</td> | |||
<td valign="top" width="915">If true, turn on the debug mode for each borland | |||
<td valign="top" width="915">If true, turn on the debug mode for each borland | |||
tools (java2iiop, iastool ...) default = false</td> | |||
<td align="center" valign="middle" width="62">no</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td valign="top" width="63">clientjar</td> | |||
<td valign="top" width="915">client jar file name. If missing the client jar | |||
file name is build using the ejbjar file name: ejbjar = hellobean-ejb.jar | |||
<td valign="top" width="915">client jar file name. If missing the client jar | |||
file name is build using the ejbjar file name: ejbjar = hellobean-ejb.jar | |||
=> hellobean-ejbclient.jar</td> | |||
<td align="center" valign="middle" width="62">no</td> | |||
</tr> | |||
<tr> | |||
<td valign="top" width="63">mode</td> | |||
<td valign="top" width="915">choose the command launching mode. Two values: | |||
java or fork. default = java. Possibility to specify a classpath.</td> | |||
<td valign="top" width="915">choose the command launching mode. Two values: | |||
java or fork. default = fork. java is not supported for version=5.Possibility to specify a classpath.</td> | |||
<td align="center" valign="middle" width="62">no</td> | |||
</tr> | |||
<tr> | |||
<td valign="top" width="63">version</td> | |||
<td valign="top" width="915">set the Borland Application Version. | |||
<ul> | |||
<li>4 means B.A.S (Borland Application Server 4.x)</li> | |||
<li>5 means B.E.S (Borland Application Server 5.x)</li> | |||
</ul> | |||
</td> | |||
<td align="center" valign="middle" width="62">No, defaults to 4</td> | |||
</tr> | |||
</table> | |||
<h3>Examples</h3> | |||
<p>The following build.xml snippet is an example of how to use Borland element | |||
<p>The following build.xml snippet is an example of how to use Borland element | |||
into the ejbjar task using the java mode.</p> | |||
<pre> | |||
<blgenclient ejbjar="lib/secutest-ejb.jar" clientjar="lib/client.jar" debug="true" mode="java"> | |||
<blgenclient ejbjar="lib/secutest-ejb.jar" clientjar="lib/client.jar" debug="true" mode="fork"> version="5"> | |||
<classpath> | |||
<pathelement locacation="mymodule.jar"/> | |||
</classpath> | |||
@@ -57,7 +68,7 @@ | |||
</pre> | |||
<pre> </pre> | |||
<p align="center">Copyright © 2001 Apache Software Foundation. All rights | |||
<p align="center">Copyright © 2001-2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
@@ -90,7 +90,7 @@ | |||
<tr> | |||
<td valign="top">trace</td> | |||
<td valign="top"> | |||
Forces <b>all</b> rules to call traceIn/traceOut if set to "yes". | |||
Forces <b>all</b> rules to call traceIn/traceOut if set to "yes". | |||
The default is "no". | |||
</td> | |||
<td valign="top" align="center">No</td> | |||
@@ -98,7 +98,7 @@ | |||
<tr> | |||
<td valign="top">traceParser</td> | |||
<td valign="top"> | |||
Only forces parser rules to call traceIn/traceOut if set to "yes". | |||
Only forces parser rules to call traceIn/traceOut if set to "yes". | |||
The default is "no". | |||
</td> | |||
<td valign="top" align="center">No</td> | |||
@@ -106,7 +106,7 @@ | |||
<tr> | |||
<td valign="top">traceLexer</td> | |||
<td valign="top"> | |||
Only forces lexer rules to call traceIn/traceOut if set to "yes". | |||
Only forces lexer rules to call traceIn/traceOut if set to "yes". | |||
The default is "no". | |||
</td> | |||
<td valign="top" align="center">No</td> | |||
@@ -170,7 +170,7 @@ href="../using.html#arg">Command line arguments</a>.</p> | |||
</p> | |||
<hr> | |||
<p align="center">Copyright © 2000-2001 Apache Software Foundation. All rights | |||
<p align="center">Copyright © 2000-2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
@@ -13,7 +13,7 @@ | |||
similar to the <a href="../CoreTasks/jar.html">jar</a> or <a href="../CoreTasks/zip.html">zip</a> tasks. | |||
This task will work on Windows using the external cabarc tool (provided by Microsoft) | |||
which must be located in your executable path.</p> | |||
<p>To use this task on other platforms you need to download and compile libcabinet from | |||
<p>To use this task on other platforms you need to download and compile libcabinet from | |||
<a href="http://trill.cis.fordham.edu/~barbacha/cabinet_library/"> | |||
http://trill.cis.fordham.edu/~barbacha/cabinet_library/</a>.</p> | |||
<p>See the section on <a href="../dirtasks.html#directorybasedtasks">directory based | |||
@@ -61,7 +61,7 @@ supports all attributes of <code><fileset></code> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that | |||
<td valign="top">comma- or space-separated list of patterns of files that | |||
must be included. All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -73,7 +73,7 @@ supports all attributes of <code><fileset></code> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that | |||
<td valign="top">comma- or space-separated list of patterns of files that | |||
must be excluded. No files (except default excludes) are excluded | |||
when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
@@ -94,7 +94,7 @@ supports all attributes of <code><fileset></code> | |||
<h3>Examples</h3> | |||
<blockquote><pre> | |||
<cab cabfile="${dist}/manual.cab" | |||
basedir="htdocs/manual" | |||
basedir="htdocs/manual" | |||
/> | |||
</pre></blockquote> | |||
<p>cabs all files in the htdocs/manual directory into a file called | |||
@@ -122,7 +122,7 @@ directory api are archived, and files with the name todo.html are | |||
excluded. Output from the cabarc tool is displayed in the build | |||
output.</p> | |||
<hr> | |||
<p align="center">Copyright © 2000-2001 Apache Software Foundation. All rights | |||
<p align="center">Copyright © 2000-2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
@@ -45,7 +45,7 @@ Task to checkin a file | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>ccmdir</td> | |||
<td>path to the ccm executable file, required if it is not on the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
@@ -87,7 +87,7 @@ Task to perform a Checkout command to Continuus | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>ccmdir</td> | |||
<td>path to the ccm executable file, required if it is not on the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
@@ -123,7 +123,7 @@ Task to perform a check in default task command to Continuus | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>ccmdir</td> | |||
<td >path to the ccm executable file, required if it is not on the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
@@ -161,7 +161,7 @@ Task to perform an reconfigure command to Continuus. | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>ccmdir</td> | |||
<td >path to the ccm executable file, required if it is not on the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
@@ -196,7 +196,7 @@ Create a Continuus task. | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>ccmdir</td> | |||
<td >path to the ccm executable file, required if it is not on the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
@@ -231,7 +231,7 @@ Create a Continuus task. | |||
current user as the resolver for this task.</p> | |||
<hr> | |||
<p align="center">Copyright © 2001 Apache Software Foundation. All rights | |||
<p align="center">Copyright © 2001-2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
@@ -75,7 +75,7 @@ Also, dependency checking only works if destfile is set. | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when omitted.</td> | |||
</tr> | |||
<tr> | |||
@@ -112,7 +112,7 @@ Also, dependency checking only works if destfile is set. | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
</tr> | |||
<tr> | |||
@@ -47,9 +47,9 @@ In general these tasks are specific to the particular vendor's EJB Server.</p> | |||
<li><a href="http://www.jboss.org/" target="_top"> | |||
JBoss 2.1</a> and above EJB servers</li> | |||
<li><a href="http://www.bea.com" target="_top">Weblogic</a> | |||
4.5.1, 5.1, and 6.0 EJB servers</li> | |||
4.5.1 through to 7.0 EJB servers</li> | |||
<li><a href="http://www.objectweb.org/jonas/" target="_top">JOnAS</a> | |||
2.4 Open Source EJB server</li> | |||
2.4.x and 2.5 Open Source EJB server</li> | |||
<li><a href="http://www.ibm.com/websphere">IBM WebSphere</a> 4.0</li> | |||
</ul> | |||
Over time we expect further optional tasks to support additional EJB Servers. | |||
@@ -67,11 +67,11 @@ In general these tasks are specific to the particular vendor's EJB Server.</p> | |||
<tr><td><a href="BorlandEJBTasks.html">borland</a></td><td>Borland Application Server 4.5</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</td></tr> | |||
<tr><td><a href="#ejbjar_weblogic">weblogic</a></td><td>Weblogic 5.1 & 6.0</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="#wlrun">wlrun</a></td><td colspan="2">Weblogic 4.5.1, 5.1 & 6.0</td></tr> | |||
<tr><td><a href="#wlstop">wlstop</a></td><td colspan="2">Weblogic 4.5.1, 5.1 & 6.0</td></tr> | |||
<tr><td><a href="#wlrun">wlrun</a></td><td colspan="2">Weblogic 4.5.1 to 7.0</td></tr> | |||
<tr><td><a href="#wlstop">wlstop</a></td><td colspan="2">Weblogic 4.5.1 to 7.0</td></tr> | |||
</table> | |||
@@ -533,7 +533,7 @@ include: </p> | |||
<li>Weblogic 5.1/6.0 session/entity beans using the weblogic.ejbc tool</li> | |||
<li>IBM WebSphere 4.0</li> | |||
<li>TOPLink for WebLogic 2.5.1-enabled entity beans</li> | |||
<li><a href="http://www.objectweb.org/jonas/">JOnAS</a> 2.4 Open Source EJB server</li> | |||
<li><a href="http://www.objectweb.org/jonas/">JOnAS</a> 2.4.x and 2.5 Open Source EJB server</li> | |||
</ul> | |||
@@ -560,9 +560,12 @@ respect to the class files and 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 jakarta-bcel framework, to extract all dependent classes. This | |||
means, that beside the classes, that are mentioned in the deployment descriptor, also | |||
all classes, that these depend on, are automatically included in the jar file.</p> | |||
<p>The task uses the | |||
<a href="http://jakarta.apache.org/bcel"> jakarta-BCEL </a> framework | |||
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>Naming Convention</h3> | |||
@@ -636,34 +639,37 @@ beans in the jar. | |||
</ul> | |||
<a name="ejbjar_deps"><h3>Dependencies</h3></a> | |||
<p>In addition to the bean classes, ejbjar is able to ad additional classes to the generated | |||
<p>In addition to the bean classes, ejbjar is able to ad additional classes to the generated | |||
ejbjar. These classes are typically the support classes which are used by the bean's classes or as | |||
parameters to the bean's methods.</p> | |||
<p>In versions of Ant prior to 1.5, ejbjar used reflection and attempted to add the super | |||
classes and super interfaces of the bean classes. For this technique to work the bean | |||
<p>In versions of Ant prior to 1.5, ejbjar used reflection and attempted to add the 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>The ejbjar task in Ant 1.5 uses the jakarta-BCEL library to analyze the bean's class | |||
files directly, rather than loading them into the JVM. This also allows ejbjar to add all | |||
<p>The ejbjar task in Ant 1.5 uses the | |||
<a href="http://jakarta.apache.org/bcel"> jakarta-BCEL </a> library | |||
to analyze the bean's class | |||
files directly, rather than loading them into the JVM. This also allows ejbjar to add all | |||
of the required support classes for a bean and not just super classes. | |||
</p> | |||
<p>In Ant 1.5, a new attribute, <code>dependency</code> has been introduced to allow the | |||
buildfile to control what additional classes are added to the generated jar. It takes three | |||
<p>In Ant 1.5, a new attribute, <code>dependency</code> has been introduced to allow the | |||
buildfile to control what additional classes are added to the generated jar. It takes three | |||
possible values</p> | |||
<ul> | |||
<li><code>none</code> - only the bean classes and interfaces described in the bean's | |||
<li><code>none</code> - only the bean classes and interfaces described in the bean's | |||
descriptor are added to the jar.</li> | |||
<li><code>super</code> - this is the default value and replicates the original ejbjar | |||
<li><code>super</code> - this is the default value and replicates the original ejbjar | |||
behaviour where super classes and super interfaces are added to the jar</li> | |||
<li><code>full</code> - In this mode all classes used by the bean's classes and interfaces | |||
are added to the jar</li> | |||
</ul> | |||
<p>The <code>super</code> and <code>full</code> values require the jakarta-BCEL library | |||
<p>The <code>super</code> and <code>full</code> values require the | |||
<a href="http://jakarta.apache.org/bcel"> jakarta-BCEL </a> library | |||
to be available. If it is not, ejbjar will drop back to the behaviour corresponding to | |||
the value <code>none</code>.</p> | |||
the value <code>none</code>.</p> | |||
<h3>Parameters:</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
@@ -759,7 +765,7 @@ the value <code>none</code>.</p> | |||
<tr> | |||
<td valign="top">dependency</td> | |||
<td valign="top">This attribute controls which additional classes and interfaces | |||
are added to the jar. Please refer to the description | |||
are added to the jar. Please refer to the description | |||
<a href="#ejbjar_deps">above</a></td> | |||
<td valign="top" align="center">No.</td> | |||
</tr> | |||
@@ -1042,15 +1048,43 @@ define this as META-INF/Customer-weblogic-cmp-rdbms-jar.xml.</p> | |||
<td valign="top">Specifies the classname of the ejbc compiler. Normally ejbjar determines | |||
the appropriate class based on the DTD used for the EJB. The EJB 2.0 compiler | |||
featured in weblogic 6 has, however, been deprecated in version 7. When | |||
using with version 7 this attribute should be set to | |||
using with version 7 this attribute should be set to | |||
"weblogic.ejbc" to avoid the deprecation warning.</td> | |||
<td valign="top" align="center">No.</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">jvmargs</td> | |||
<td valign="top">Any additional arguments to be passed to the Virtual Machine | |||
running weblogic.ejbc tool. For example to set the memory size, | |||
this could be jvmargs="-Xmx128m" | |||
</td> | |||
<td valign="top" align="center">No.</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">jvmdebuglevel</td> | |||
<td valign="top">Sets the weblogic.StdoutSeverityLevel to use when running | |||
the Virtual Machine that executes ejbc. Set to 16 to avoid | |||
the warnings about EJB Home and Remotes being in the classpath | |||
</td> | |||
<td valign="top" align="center">No.</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">outputdir</td> | |||
<td valign="top">If set ejbc will be given this directory as the output | |||
desitination rather than a jar file. This allows for the | |||
generation of "exploded" jars. | |||
</td> | |||
<td valign="top" align="center">No.</td> | |||
</tr> | |||
</table> | |||
<p>The weblogic nested element itself supports two nested elements <classpath> and | |||
<wlclasspath> which are used to set the respective classpaths. These nested elements | |||
are useful when setting up class paths using reference Ids.</p> | |||
<p>The weblogic nested element supports three nested elements. The | |||
first two, <classpath> and <wlclasspath>, are used to set the | |||
respective classpaths. These nested elements are useful when setting up | |||
class paths using reference Ids. The last, <sysproperty>, allows | |||
Java system properties to be set during the compiler run. This turns out | |||
to be necessary for supporting CMP EJB compilation in all environments. | |||
</p> | |||
<h3>TOPLink for Weblogic element</h3> | |||
@@ -1305,7 +1339,7 @@ in the descriptor dir:</p> | |||
<websphere dbvendor="DB2UDBOS390_V6" | |||
ejbdeploy="true" | |||
oldCMP="false" | |||
tempdir="/tmp" | |||
tempdir="/tmp" | |||
destdir="${dist.server}"> | |||
<wasclasspath> | |||
<pathelement location="${was4.home}/deploytool/itp/plugins/org.eclipse.core.boot/boot.jar"/> | |||
@@ -1479,35 +1513,40 @@ local DTDs are found in the [iAS-install-directory]/dtd directory. | |||
<dtd publicId="-//Sun Microsystems, Inc.//DTD iAS Enterprise JavaBeans 1.0//EN" | |||
location="${ias.home}/APPS/IASEjb_jar_1_0.dtd"/> | |||
</ejbjar></pre> | |||
<h3><a name="ejbjar_jonas"> | |||
<h3>JOnAS (Java Open Application Server) element</h3> | |||
</a> | |||
</h3> | |||
<p>The <jonas> nested element is used to build JOnAS-specific stubs | |||
and skeletons thanks to the GenIC specific tool, and construct a JAR file | |||
which may be deployed to the JOnAS Application Server. The build process | |||
will always determine if the EJB stubs/skeletons and the EJB-JAR file are | |||
up to date, and it will do the minimum amount of work required. </p> | |||
<p>Like the WebLogic element, a naming convention for the EJB descriptors | |||
is most commonly used to specify the name for the completed JAR file. For | |||
example, if the EJB descriptor ejb/Account.xml (or ejb/Account-ejb-jar.xml ) | |||
is found in the descriptor directory, the jonas element will search for a | |||
JOnAS-specific EJB descriptor file named ejb/Account-jonas-ejb-jar.xml | |||
(if it isn't found, the task will fail) and a JAR file named ejb/Account.jar | |||
will be written in the destination directory. Note that when the EJB | |||
descriptors are added to the JAR file, they are automatically renamed | |||
META-INF/ejb-jar.xml and META-INF/jonas-ejb-jar.xml.<br><br> | |||
But if you prefer, you can use JOnAS convention naming and keep your | |||
XML file name : ejb/Account.xml and ejb/jonas-Account.xml, a JAR file named | |||
ejb/Account.jar will be written in the destination directory. | |||
</p> | |||
<p>Of course, this naming behaviour can be modified by specifying attributes | |||
in the ejbjar task (for example, basejarname, basenameterminator, and flatdestdir) | |||
as well as the iplanet element (for example, suffix). Refer to the appropriate | |||
documentation for more details.</p> | |||
<h3><a name="ejbjar_jonas">JOnAS (Java Open Application Server) element</a></h3> | |||
<p>The <jonas> nested element is used to build JOnAS-specific stubs and | |||
skeletons thanks to the <code>GenIC</code> specific tool, and construct a JAR | |||
file which may be deployed to the JOnAS Application Server. The build process | |||
will always determine if the EJB stubs/skeletons and the EJB-JAR file are up to | |||
date, and it will do the minimum amount of work required.</p> | |||
<p>Like the WebLogic element, a naming convention for the EJB descriptors is | |||
most commonly used to specify the name for the completed JAR file. For example, | |||
if the EJB descriptor <code>ejb/Account-ejb-jar.xml</code> is found in the | |||
descriptor directory, the <jonas> element will search for a JOnAS-specific | |||
EJB descriptor file named <code>ejb/Account-jonas-ejb-jar.xml</code> and a JAR | |||
file named <code>ejb/Account.jar</code> will be written in the destination | |||
directory. But the <jonas> element can also use the JOnAS naming | |||
convention. With the same example as below, the EJB descriptor can also be named | |||
<code>ejb/Account.xml</code> (no base name terminator here) in the descriptor | |||
directory. Then the <jonas> element will search for a JOnAS-specific EJB | |||
descriptor file called <code>ejb/jonas-Account.xml</code>. This convention do | |||
not follow strictly the ejb-jar naming convention recommendation but is | |||
supported for backward compatibility with previous version of JOnAS.</p> | |||
<p>Note that when the EJB descriptors are added to the JAR file, they are | |||
automatically renamed <code>META-INF/ejb-jar.xml</code> and | |||
<code>META-INF/jonas-ejb-jar.xml</code>.</p> | |||
<p>Of course, this naming behavior can be modified by specifying attributes in | |||
the ejbjar task (for example, basejarname, basenameterminator, and flatdestdir) | |||
as well as the iplanet element (for example, suffix). Refer to the appropriate | |||
documentation for more details.</p> | |||
<h3> Parameters:</h3> | |||
<table border="1" cellspacing="0" cellpadding="2"> | |||
<tbody> | |||
<tr> | |||
@@ -1518,148 +1557,121 @@ up to date, and it will do the minimum amount of work required. </p> | |||
<tr> | |||
<td valign="Top">destdir</td> | |||
<td valign="Top">The base directory into which the generated JAR files | |||
will be written. Each JAR file is written in directories which correspond | |||
to their location within the "descriptordir" namespace.</td> | |||
will be written. Each JAR file is written in directories which correspond | |||
to their location within the "<code>descriptordir</code>" namespace.</td> | |||
<td align="Center" valign="Top">Yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">jonasroot<br> | |||
</td> | |||
<td valign="Top">The root directory for JOnAS. <br> | |||
</td> | |||
<td valign="Top"> | |||
<div align="Center">Yes<br> | |||
</div> | |||
</td> | |||
<td valign="Top">jonasroot</td> | |||
<td valign="Top">The root directory for JOnAS.</td> | |||
<td valign="Top" align="Center">Yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">workdir<br> | |||
</td> | |||
<td valign="Top">The work directory to use. Specify where to place | |||
the generated files, before to add to the jar. The directory should be empty. | |||
If omitted, it defaults to a temporary directory.<br> | |||
</td> | |||
<td valign="Top"> | |||
<div align="Center">No<br> | |||
</div> | |||
</td> | |||
<td valign="Top">classpath</td> | |||
<td valign="Top">The classpath used when generating EJB stubs and | |||
skeletons. If omitted, the classpath specified in the "ejbjar" parent | |||
task will be used. If specified, the classpath elements will be prepended | |||
to the classpath specified in the parent "ejbjar" task (see also the ORB | |||
attribute documentation below). Note that nested "classpath" elements may | |||
also be used.</td> | |||
<td valign="Top" align="Center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">cleanworkdir<br> | |||
</td> | |||
<td valign="Top">Clean the working directory after work. | |||
If omitted, it defaults to false, but your jar will contain | |||
wrong files if you don't clean the workdir yourself.<br> | |||
Temporary working directory is always cleaned.<br> | |||
</td> | |||
<td valign="Top"> | |||
<div align="Center">No<br> | |||
</div> | |||
</td> | |||
<td valign="Top">keepgenerated</td> | |||
<td valign="Top"><code>true</code> if the intermediate Java | |||
source files generated by GenIC must be deleted or not. If | |||
omitted, it defaults to <code>false</code>.</td> | |||
<td align="Center" valign="Top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">classpath</td> | |||
<td valign="Top">The classpath used when generating EJB stubs and skeletons. | |||
If omitted, the classpath specified in the "ejbjar" parent task will | |||
be used. If specified, the classpath elements will be prepended to the | |||
classpath specified in the parent "ejbjar" task (see also the ORB | |||
attribute documentation below). Note that nested "classpath" elements | |||
may also be used.</td> | |||
<td valign="Top">nocompil</td> | |||
<td valign="Top"><code>true</code> if the generated source files | |||
must not be compiled via the java and rmi compilers. If omitted, | |||
it defaults to <code>false</code>.</td> | |||
<td align="Center" valign="Top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">keepgenerated</td> | |||
<td valign="Top">Indicates whether or not the Java source files which | |||
are generated by GenIC will be saved or automatically deleted. If "yes", the | |||
source files will be retained. If omitted, it defaults to "no". </td> | |||
<td valign="Top">novalidation</td> | |||
<td valign="Top"><code>true</code> if the XML deployment descriptors must | |||
be parsed without validation. If omitted, it defaults to <code>false</code>.</td> | |||
<td align="Center" valign="Top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">keepgeneric</td> | |||
<td valign="top">This controls whether the generic file used as input to | |||
GenIC is retained.</td> | |||
<td valign="top" align="center">No, defaults to false</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">secpropag</td> | |||
<td valign="top">Modify the RMI Skel. and Stub. to implement the | |||
implicit propagation of the security context (note that | |||
the transactional context is always provided). | |||
</td> | |||
<td valign="top" align="center">No, defaults to false.</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">orb<br> | |||
</td> | |||
<td>Choose your ORB : RMI, JEREMIE, DAVID, ... If omitted, it defaults | |||
to the one present in classpath. If specified, the corresponding JOnAS JAR is | |||
automatically added to the classpath. <br> | |||
</td> | |||
<td valign="Top">javac</td> | |||
<td valign="Top">Java compiler to use. If omitted, it defaults | |||
to the value of <code>build.compiler</code> property.</td> | |||
<td align="Center" valign="Top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">noGENIC<br> | |||
</td> | |||
<td valign="Top">If this attribute is set to true, JOnAS's GenIC will | |||
not be run on the EJB jar. Use this if you prefer to | |||
run GenIC at deployment time.</td> | |||
<td> | |||
<div align="Center">No</div> | |||
</td> | |||
<td valign="Top">javacopts</td> | |||
<td valign="Top">Options to pass to the java compiler.</td> | |||
<td align="Center" valign="Top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">suffix</td> | |||
<td>String value appended to the JAR filename when creating each JAR. | |||
If omitted, it defaults to ".jar". </td> | |||
<td valign="Top">rmicopts</td> | |||
<td valign="Top">Options to pass to the rmi compiler.</td> | |||
<td align="Center" valign="Top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">verbose<br> | |||
</td> | |||
<td valign="top">secpropag</td> | |||
<td valign="top"><code>true</code> if the RMI Skel. and | |||
Stub. must be modified to implement the implicit propagation of | |||
the security context (the transactional context is always | |||
provided). If omitted, it defaults to <code>false</code>.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">verbose</td> | |||
<td valign="Top">Indicates whether or not to use -verbose switch. If | |||
omitted, it defaults to "no".</td> | |||
<td valign="Top"> | |||
<div align="Center">No<br> | |||
</div> | |||
</td> | |||
omitted, it defaults to <code>false</code>.</td> | |||
<td align="Center" valign="Top">No</td> | |||
</tr> | |||
<td valign="Top">additionalargs</td> | |||
<td valign="Top">Add additional args to GenIC.</td> | |||
<td align="Center" valign="Top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">compiler<br> | |||
</td> | |||
<td valign="Top">This allows for the selection of a different compiler | |||
to be used for the compilation of the generated Java | |||
files. This could be set, for example, to Jikes to | |||
compile with the Jikes compiler. If this is not set | |||
and the <code>build.compiler</code> property is set | |||
to jikes, the Jikes compiler will be used. If this | |||
is not desired, the value "<code>default</code>" | |||
may be given to use the default compiler<br> | |||
</td> | |||
<td valign="Top"> | |||
<div align="Center">No<br> | |||
</div> | |||
</td> | |||
<td valign="Top">keepgeneric</td> | |||
<td valign="Top"><code>true</code> if the generic JAR file used as input | |||
to GenIC must be retained. If omitted, it defaults to <code>false</code>.</td> | |||
<td align="Center" valign="Top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">suffix</td> | |||
<td>String value appended to the JAR filename when creating each JAR. If | |||
omitted, it defaults to ".jar". </td> | |||
<td align="Center" valign="Top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">args<br> | |||
</td> | |||
<td valign="Top">Add additional args to GenIC.<br> | |||
</td> | |||
<td valign="Top"> | |||
<div align="Center">No<br> | |||
</div> | |||
</td> | |||
<td valign="Top">orb</td> | |||
<td>Choose your ORB : RMI, JEREMIE, DAVID. If omitted, it defaults to the | |||
one present in classpath. If specified, the corresponding JOnAS JAR is | |||
automatically added to the classpath.</td> | |||
<td align="Center" valign="Top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="Top">nogenic</td> | |||
<td valign="Top">If this attribute is set to <code>true</code>, | |||
JOnAS's GenIC will not be run on the EJB JAR. Use this if you | |||
prefer to run GenIC at deployment time. If omitted, it defaults | |||
to <code>false</code>.</td> | |||
<td align="Center" valign="Top">No</td> | |||
</tr> | |||
<tr> | |||
</tbody> | |||
</table> | |||
<p>As noted above, the jonas element supports additional <classpath> | |||
nested elements. </p> | |||
nested elements.</p> | |||
<h3>Examples</h3> | |||
<p>This example shows ejbjar being used to generate deployment jars using | |||
a JOnAS EJB container. This example requires the naming standard to be | |||
used for the deployment descriptors. Using this format will create a ejb | |||
jar file for each variation of '*-jar.xml' that is found in the | |||
deployment descriptor directory. </p> | |||
<p>This example shows ejbjar being used to generate deployment jars using a | |||
JOnAS EJB container. This example requires the naming standard to be used for | |||
the deployment descriptors. Using this format will create a EJB JAR file for | |||
each variation of '*-jar.xml' that is found in the deployment descriptor | |||
directory. </p> | |||
<pre> | |||
<ejbjar srcdir="${build.classes}" | |||
descriptordir="${descriptor.dir}"> | |||
@@ -1673,11 +1685,12 @@ deployment descriptor directory. </p> | |||
</support> | |||
</ejbjar> | |||
</pre> | |||
<p></p> | |||
<p>This example shows ejbjar being used to generate a single deployment jar | |||
using a JOnAS EJB container. This example does require the deployment | |||
descriptors to use the naming standard. This will create only one ejb jar | |||
file - 'TheEJBJar.jar'.</p> | |||
using a JOnAS EJB container. This example does require the deployment | |||
descriptors to use the naming standard. This will create only one ejb jar file - | |||
'TheEJBJar.jar'.</p> | |||
<pre> | |||
<ejbjar srcdir="${build.classes}" | |||
descriptordir="${descriptor.dir}" | |||
@@ -0,0 +1,119 @@ | |||
<html> | |||
<head> | |||
<meta http-equiv="Content-Language" content="en-us"> | |||
<title>jarlib-available Task</title> | |||
</head> | |||
<body> | |||
<h2><a name="jarlib-available">jarlib-available</a></h2> | |||
<h3>Description</h3> | |||
<p>Check whether an extension is present in a fileset or an extensionSet. | |||
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 | |||
Java2 Standard Edition package, in file | |||
<code>guide/extensions/versioning.html</code> or online at | |||
<a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html"> | |||
http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html</a>.</p> | |||
<p>See the Extension and ExtensionSet documentation for further details</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td valign="top"><b>Attribute</b></td> | |||
<td valign="top"><b>Description</b></td> | |||
<td align="center" valign="top"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">property</td> | |||
<td valign="top">The name of property to set if extensions is available.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">file</td> | |||
<td valign="top">The file to check for extension</td> | |||
<td valign="top" align="center">No, one of file, nested | |||
ExtensionSet or nested fileset must be present.</td> | |||
</tr> | |||
</table> | |||
<h3>Parameters specified as nested elements</h3> | |||
<h4>extension</h4> | |||
<p><a href="../OptionalTypes/extension.html">Extension</a> the extension | |||
to search for.</p> | |||
<h4>fileset</h4> | |||
<p><a href="../CoreTypes/fileset.html">FileSet</a>s are used to select | |||
sets of files to check for extension.</p> | |||
<h4>extensionSet</h4> | |||
<p><a href="../OptionalTypes/extensionset.html">ExtensionSet</a>s is the set | |||
of extensions to search for extension in.</p> | |||
<h3>Examples</h3> | |||
<p><b>Search for extension in single file</b></p> | |||
<pre> | |||
<jarlib-available property="myext.present" file="myfile.jar"> | |||
<extension | |||
extensionName="org.apache.tools.ant" | |||
specificationVersion="1.4.9" | |||
specificationVendor="Apache Software Foundation"/> | |||
</jarlib-available> | |||
</pre> | |||
<p><b>Search for extension in single file refencing external Extension</b></p> | |||
<pre> | |||
<extension id="myext" | |||
extensionName="org.apache.tools.ant" | |||
specificationVersion="1.4.9" | |||
specificationVendor="Apache Software Foundation"/> | |||
<jarlib-available property="myext.present" file="myfile.jar"> | |||
<extension refid="myext"/> | |||
</jarlib-available> | |||
</pre> | |||
<p><b>Search for extension in fileset</b></p> | |||
<pre> | |||
<extension id="myext" | |||
extensionName="org.apache.tools.ant" | |||
specificationVersion="1.4.9" | |||
specificationVendor="Apache Software Foundation"/> | |||
<jarlib-available property="myext.present"> | |||
<extension refid="myext"/> | |||
<fileset dir="lib"> | |||
<include name="*.jar"/> | |||
</fileset> | |||
</jarlib-available> | |||
</pre> | |||
<p><b>Search for extension in extensionSet</b></p> | |||
<pre> | |||
<extension id="myext" | |||
extensionName="org.apache.tools.ant" | |||
specificationVersion="1.4.9" | |||
specificationVendor="Apache Software Foundation"/> | |||
<jarlib-available property="myext.present"> | |||
<extension refid="myext"/> | |||
<extensionSet id="exts3"> | |||
<libfileset | |||
includeUrl="false" | |||
includeImpl="true" | |||
dir="lib"> | |||
<include name="*.jar"/> | |||
</libfileset> | |||
</extensionSet> | |||
</jarlib-available> | |||
</pre> | |||
<hr><p align="center">Copyright © 2002 Apache Software Foundation. | |||
All rights Reserved.</p> | |||
</body> | |||
</html> | |||
@@ -0,0 +1,65 @@ | |||
<html> | |||
<head> | |||
<meta http-equiv="Content-Language" content="en-us"> | |||
<title>jarlib-display Task</title> | |||
</head> | |||
<body> | |||
<h2><a name="jarlib-display">jarlib-display</a></h2> | |||
<h3>Description</h3> | |||
<p>Display the "Optional Package" and "Package Specification" information | |||
contained within the 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 | |||
Java2 Standard Edition package, in file | |||
<code>guide/extensions/versioning.html</code> or online at | |||
<a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html"> | |||
http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html</a>.</p> | |||
<p>See the Extension and ExtensionSet documentation for further details</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td valign="top"><b>Attribute</b></td> | |||
<td valign="top"><b>Description</b></td> | |||
<td align="center" valign="top"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">file</td> | |||
<td valign="top">The file to display extension information about.</td> | |||
<td valign="top" align="center">No, but one of file or fileset must be | |||
present.</td> | |||
</tr> | |||
</table> | |||
<h3>Parameters specified as nested elements</h3> | |||
<h4>fileset</h4> | |||
<p><a href="../CoreTypes/fileset.html">FileSet</a>s contain list of files to | |||
display Extension information about.</p> | |||
<h3>Examples</h3> | |||
<p><b>Display Extension info for a single file</b></p> | |||
<pre> | |||
<jarlib-display file="myfile.jar"> | |||
</pre> | |||
<p><b>Display Extension info for a fileset</b></p> | |||
<pre> | |||
<jarlib-display> | |||
<fileset dir="lib"> | |||
<include name="*.jar"/> | |||
</fileset> | |||
</jarlib-display> | |||
</pre> | |||
<hr><p align="center">Copyright © 2002 Apache Software Foundation. | |||
All rights Reserved.</p> | |||
</body> | |||
</html> | |||
@@ -0,0 +1,108 @@ | |||
<html> | |||
<head> | |||
<meta http-equiv="Content-Language" content="en-us"> | |||
<title>jarlib-manifest Task</title> | |||
</head> | |||
<body> | |||
<h2><a name="jarlib-manifest">jarlib-manifest</a></h2> | |||
<h3>Description</h3> | |||
<p>Task to generate a manifest that declares all the dependencies | |||
in manifest. The dependencies are determined by looking in the | |||
specified path and searching for Extension / "Optional Package" | |||
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 | |||
Java2 Standard Edition package, in file | |||
<code>guide/extensions/versioning.html</code> or online at | |||
<a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html"> | |||
http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html</a>.</p> | |||
<p>See the Extension and ExtensionSet documentation for further details</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td valign="top"><b>Attribute</b></td> | |||
<td valign="top"><b>Description</b></td> | |||
<td align="center" valign="top"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">destfile</td> | |||
<td valign="top">The file to generate Manifest into</td> | |||
<td valign="top" align="center">Yes.</td> | |||
</tr> | |||
</table> | |||
<h3>Parameters specified as nested elements</h3> | |||
<h4>extension</h4> | |||
<p><a href="../OptionalTypes/extension.html">Extension</a> the extension | |||
that this library implements.</p> | |||
<h4>depends</h4> | |||
<p><a href="../OptionalTypes/extensionset.html">ExtensionSet</a>s containing | |||
all dependencies for jar.</p> | |||
<h4>options</h4> | |||
<p><a href="../OptionalTypes/extensionset.html">ExtensionSet</a>s containing | |||
all optional dependencies for jar. (Optional dependencies will be used if | |||
present else they wilkl be ignored)</p> | |||
<h3>Examples</h3> | |||
<p><b>Basic Manifest generated for single Extension</b></p> | |||
<pre> | |||
<extension id="e1" | |||
extensionName="MyExtensions" | |||
specificationVersion="1.0" | |||
specificationVendor="Peter Donald" | |||
implementationVendorID="vv" | |||
implementationVendor="Apache" | |||
implementationVersion="2.0" | |||
implementationURL="http://somewhere.com"/> | |||
<jarlib-manifest destfile="myManifest.txt"> | |||
<extension refid="e1"/> | |||
</jarlib-manifest> | |||
</pre> | |||
<p><b>Search for extension in fileset</b></p> | |||
<p><b>A large example with required and optional dependencies</b></p> | |||
<pre> | |||
<extension id="e1" | |||
extensionName="MyExtensions" | |||
specificationVersion="1.0" | |||
specificationVendor="Peter Donald" | |||
implementationVendorID="vv" | |||
implementationVendor="Apache" | |||
implementationVersion="2.0" | |||
implementationURL="http://somewhere.com"/> | |||
<extensionSet id="option.ext"> | |||
<libfileset dir="lib/option"> | |||
<include name="**/*.jar"/> | |||
</libfileset> | |||
</extensionSet> | |||
<extensionSet id="depends.ext"> | |||
<libfileset dir="lib/required"> | |||
<include name="*.jar"/> | |||
</libfileset> | |||
</extensionSet> | |||
<jarlib-manifest destfile="myManifest.txt"> | |||
<extension refid="e1"/> | |||
<depends refid="depends.ext"/> | |||
<options refid="option.ext"/> | |||
</jarlib-manifest> | |||
</pre> | |||
<hr><p align="center">Copyright © 2002 Apache Software Foundation. | |||
All rights Reserved.</p> | |||
</body> | |||
</html> | |||
@@ -0,0 +1,196 @@ | |||
<html> | |||
<head> | |||
<meta http-equiv="Content-Language" content="en-us"> | |||
<title>jarlib-resolve Task</title> | |||
</head> | |||
<body> | |||
<h2><a name="jarlib-resolve">jarlib-resolve</a></h2> | |||
<h3>Description</h3> | |||
<p>Try to locate a jar to satisfy an extension and place | |||
location of jar into property. The task allows you to | |||
add a number of resolvers that are capable of locating a | |||
library for a specifc extension. Each resolver will be attempted | |||
in specified order until library is found or no resolvers are left. | |||
If no resolvers are left and failOnError is true then a BuildException | |||
will be 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 | |||
Java2 Standard Edition package, in file | |||
<code>guide/extensions/versioning.html</code> or online at | |||
<a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html"> | |||
http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html</a>.</p> | |||
<p>See the Extension and ExtensionSet documentation for further details</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td valign="top"><b>Attribute</b></td> | |||
<td valign="top"><b>Description</b></td> | |||
<td align="center" valign="top"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">property</td> | |||
<td valign="top">The name of property to set to library location.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">failOnError</td> | |||
<td valign="top">True if failure to locate library should result in build exception.</td> | |||
<td valign="top" align="center">No, defaults to true.</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">checkExtension</td> | |||
<td valign="top">True if librarys returned by nested resolvers should be checked to see if | |||
they supply extension.</td> | |||
<td valign="top" align="center">No, defaults to true.</td> | |||
</tr> | |||
</table> | |||
<h3>Parameters specified as nested elements</h3> | |||
<h4>extension</h4> | |||
<p><a href="../OptionalTypes/extension.html">Extension</a> the extension | |||
to resolve. Must be present</p> | |||
<h4>location</h4> | |||
<p>The location sub element allows you to look for a library in a | |||
location relative to project directory.</p> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td valign="top"><b>Attribute</b></td> | |||
<td valign="top"><b>Description</b></td> | |||
<td align="center" valign="top"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">location</td> | |||
<td valign="top">The pathname of library.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
</table> | |||
<h4>url</h4> | |||
<p>The url resolver allows you to download a library from a URL to a | |||
local file.</p> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td valign="top"><b>Attribute</b></td> | |||
<td valign="top"><b>Description</b></td> | |||
<td align="center" valign="top"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">url</td> | |||
<td valign="top">The URL to download.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">destfile</td> | |||
<td valign="top">The file to download URL into.</td> | |||
<td valign="top" align="center">No, But one of destfile or | |||
destdir must be present</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">destdir</td> | |||
<td valign="top">The directory in which to place downloaded file.</td> | |||
<td valign="top" align="center">No, But one of destfile or | |||
destdir must be present</td> | |||
</tr> | |||
</table> | |||
<h4>ant</h4> | |||
<p>The ant resolver allows you to run a ant build file to generate a library.</p> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td valign="top"><b>Attribute</b></td> | |||
<td valign="top"><b>Description</b></td> | |||
<td align="center" valign="top"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">antfile</td> | |||
<td valign="top">The build file.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">destfile</td> | |||
<td valign="top">The file that the ant build creates.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">target</td> | |||
<td valign="top">The target to run in build file.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
</table> | |||
<h3>Examples</h3> | |||
<p><b>Resolve Extension to file.</b> If file does not exist or file | |||
does not implement extension then throw an exception.</p> | |||
<pre> | |||
<extension id="dve.ext" | |||
extensionName="org.realityforge.dve" | |||
specificationVersion="1.2" | |||
specificationVendor="Peter Donald"/> | |||
<jarlib-resolve property="dve.library"> | |||
<extension refid="dve.ext"/> | |||
<location location="/opt/jars/dve.jar"/> | |||
</jarlib-resolve> | |||
</pre> | |||
<p><b>Resolve Extension to url.</b> If url does not exist or can not write | |||
to destfile or files does not implement extension then throw an exception.</p> | |||
<pre> | |||
<extension id="dve.ext" | |||
extensionName="org.realityforge.dve" | |||
specificationVersion="1.2" | |||
specificationVendor="Peter Donald"/> | |||
<jarlib-resolve property="dve.library"> | |||
<extension refid="dve.ext"/> | |||
<url url="http://www.realityforge.net/jars/dve.jar" destfile="lib/dve.jar"/> | |||
</jarlib-resolve> | |||
</pre> | |||
<p><b>Resolve Extension to file produce by ant build.</b> If file does not get produced | |||
or ant file is missing or build fails then throw an exception (Note does not check | |||
that library implements extension).</p> | |||
<pre> | |||
<extension id="dve.ext" | |||
extensionName="org.realityforge.dve" | |||
specificationVersion="1.2" | |||
specificationVendor="Peter Donald"/> | |||
<jarlib-resolve property="dve.library" checkExtension="false"> | |||
<extension refid="dve.ext"/> | |||
<ant antfile="../dve/build.xml" target="main" destfile="lib/dve.jar"/> | |||
</jarlib-resolve> | |||
</pre> | |||
<p><b>Resolve Extension via multiple methods.</b> First check local file to see if it implements | |||
extension. If it does not then try to build it from source in parralel directory. If that | |||
fails then finally try to download it from a website. If all steps fail then throw a build | |||
exception.</p> | |||
<pre> | |||
<extension id="dve.ext" | |||
extensionName="org.realityforge.dve" | |||
specificationVersion="1.2" | |||
specificationVendor="Peter Donald"/> | |||
<jarlib-resolve property="dve.library"> | |||
<extension refid="dve.ext"/> | |||
<location location="/opt/jars/dve.jar"/> | |||
<ant antfile="../dve/build.xml" target="main" destfile="lib/dve.jar"/> | |||
<url url="http://www.realityforge.net/jars/dve.jar" destfile="lib/dve.jar"/> | |||
</jarlib-resolve> | |||
</pre> | |||
<hr><p align="center">Copyright © 2002 Apache Software Foundation. | |||
All rights Reserved.</p> | |||
</body> | |||
</html> | |||
@@ -14,17 +14,17 @@ | |||
<p> | |||
It can be used to precompile JSP pages for fast initial invocation | |||
of JSP pages, deployment on a server without the full JDK installed, | |||
or simply to syntax check the pages without deploying them. | |||
of JSP pages, deployment on a server without the full JDK installed, | |||
or simply to syntax check the pages without deploying them. | |||
In most cases, a javac task is usually the next stage in the build process. | |||
The task does basic dependency checking to prevent unnecessary recompilation -this | |||
checking compares source and destination timestamps, and does not factor | |||
in class or taglib dependencies. | |||
in class or taglib dependencies, or <jsp:include> references. | |||
<p> | |||
The task needs jasper.jar and jasper-runtime.jar, which come with | |||
builds of Tomcat 4/Catalina from the | |||
By default the task uses the Jasper JSP compiler. This | |||
means the task needs jasper.jar and jasper-runtime.jar, which come with | |||
builds of Tomcat 4/Catalina from the | |||
<a href="http://jakarta.apache.org/tomcat/">Jakarta Tomcat project</a> | |||
@@ -59,6 +59,11 @@ The Task has the following attributes:<p> | |||
classes.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">compiler</td> | |||
<td valign="top">class name of a JSP compiler adapter</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">ieplugin</td> | |||
<td valign="top">Java Plugin classid for Internet Explorer.</td> | |||
@@ -74,7 +79,7 @@ The Task has the following attributes:<p> | |||
<td valign="top">classpath</td> | |||
<td valign="top">The classpath to use to run the jsp compiler. | |||
This can also be specified | |||
by the nested element <code>classpath</code> | |||
by the nested element <code>classpath</code> | |||
<a href="../using.html#path">Path</a>).</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -88,14 +93,14 @@ The Task has the following attributes:<p> | |||
<td valign="top">failonerror</td> | |||
<td valign="top">flag to control action on compile failures: default=yes</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
</tr> | |||
<tr> | |||
<td valign="top">uribase</td> | |||
<td valign="top"> | |||
The uri context of relative URI | |||
references in the JSP pages. If it does not | |||
The uri context of relative URI | |||
references in the JSP pages. If it does not | |||
exist then it is derived from the location of the file | |||
relative to the declared or derived value of <tt>uriroot.</tt> | |||
relative to the declared or derived value of <tt>uriroot.</tt> | |||
</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -103,10 +108,10 @@ The Task has the following attributes:<p> | |||
<td valign="top">uriroot</td> | |||
<td valign="top"> | |||
The root directory that uri files should be resolved | |||
against. | |||
against. | |||
</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
</tr> | |||
<tr> | |||
<td valign="top">compiler</td> | |||
<td valign="top"> | |||
@@ -122,11 +127,11 @@ The Task has the following attributes:<p> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
</table> | |||
<P>The <tt>mapped</tt> option will, if set to true, split the JSP text content into a | |||
one line per call format. There are comments above and below the mapped | |||
write calls to localize where in the JSP file each line of text comes | |||
from. This can lead to a minor performance degradation (but it is bound | |||
from. This can lead to a minor performance degradation (but it is bound | |||
by a linear complexity). Without this options all adjacent writes are | |||
concatenated into a single write.</P> | |||
@@ -134,45 +139,61 @@ concatenated into a single write.</P> | |||
If the Java Plug-in COM Class-ID you want to use changes then it can be | |||
specified here. This should not need to be altered.</P> | |||
<P><tt>uriroot</tt> specifies the root of the web | |||
application. This is where all absolute uris will be resolved from. | |||
If it is not specified then the first JSP page will be used to derive | |||
it. To derive it each parent directory of the first JSP page is | |||
searched for a <tt>WEB-INF</tt> directory, and the directory closest to | |||
the JSP page that has one will be used. If none can be found then the | |||
directory Jasperc was called from will be used. This only affects pages | |||
<P><tt>uriroot</tt> specifies the root of the web | |||
application. This is where all absolute uris will be resolved from. | |||
If it is not specified then the first JSP page will be used to derive | |||
it. To derive it each parent directory of the first JSP page is | |||
searched for a <tt>WEB-INF</tt> directory, and the directory closest to | |||
the JSP page that has one will be used. If none can be found then the | |||
directory Jasperc was called from will be used. This only affects pages | |||
translated from an explicitly declared JSP file -including references | |||
to taglibs</P> | |||
<P><tt>uribase</tt> is used to establish the uri context of | |||
relative URI references in the JSP pages. If it does not exist then it | |||
is derived from the location of the file relative to the declared or | |||
derived value of <tt>uriroot</tt>. This only affects pages | |||
is derived from the location of the file relative to the declared or | |||
derived value of <tt>uriroot</tt>. This only affects pages | |||
translated from an explicitly declared JSP file.</P> | |||
<h3>Parameters specified as nested elements</h3> | |||
This task is a <a href="../dirtasks.html">directory based task</a>, like | |||
<strong>javac</strong>, so the jsp files to be compiled are located as java | |||
files are by <strong>javac</strong>. That is, elements such as <tt>includes</tt> and | |||
<tt>excludes</tt> can be used directly inside the task declaration. | |||
files are by <strong>javac</strong>. That is, elements such as <tt>includes</tt> and | |||
<tt>excludes</tt> can be used directly inside the task declaration. | |||
<p> | |||
Elements specific to the jspc task are:- | |||
Elements specific to the jspc task are:- | |||
<h4>classpath</h4> | |||
The classpath used to compile the JSP pages, specified as for any other | |||
classpath. | |||
classpath. | |||
<h4>classpathref</h4> | |||
a reference to an existing classpath | |||
<h4>compilerclasspath</h4> | |||
The classpath used to locate an optional compiler adapter specified by | |||
The classpath used to locate an optional compiler adapter specified by | |||
<code>compiler</code> | |||
<h4>webapp</h4> | |||
Instructions to jasper to build an entire web application. | |||
The base directory must have a WEB-INF subdirectory beneath it. | |||
When used, the task hands off all dependency checking to the compiler. | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td valign="top"><b>Attribute</b></td> | |||
<td valign="top"><b>Description</b></td> | |||
<td align="center" valign="top"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">basedir</td> | |||
<td valign="top">the base directory of the web application</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
</table> | |||
<h3>Example</h3> | |||
<pre> | |||
<jspc srcdir="${basedir}/src/war" | |||
@@ -182,18 +203,18 @@ The classpath used to locate an optional compiler adapter specified by | |||
<include name="**/*.jsp" /> | |||
</jspc> | |||
</pre> | |||
Build all jsp pages under src/war into the destination /gensrc, in a | |||
Build all jsp pages under src/war into the destination /gensrc, in a | |||
package heirarchy beginning with com.i3sp.jsp. | |||
<pre> | |||
<jspc | |||
<jspc | |||
destdir="interim" | |||
verbose="1"> | |||
srcdir="src" | |||
package="com.i3sp.jsp" | |||
<include name="**/*.jsp" /> | |||
</jspc> | |||
<depends | |||
<depends | |||
srcdir="interim" | |||
destdir="build" | |||
cache="build/dependencies" | |||
@@ -206,14 +227,11 @@ package heirarchy beginning with com.i3sp.jsp. | |||
</pre> | |||
Generate jsp pages then javac them down to | |||
bytecodes. Include lib/taglib jar in the java compilation. | |||
Dependency checking is used to scrub the | |||
java files if class dependencies indicate it is needed. | |||
Dependency checking is used to scrub the | |||
java files if class dependencies indicate it is needed. | |||
<p><h4>Notes</h4> | |||
<p> At present, this task only supports the jasper compiler. In future, | |||
other compilers will be supported by setting the <tt>jsp.compiler</tt> property. | |||
<p> The jasper compiler option <code>-webapp</code> is not supported. Using | |||
the <code>package</code> attribute it is possible to identify the resulting | |||
Using the <code>package</code> attribute it is possible to identify the resulting | |||
java files and thus do full dependency checking - this task only rebuilds | |||
java files if their jsp file has been modified. | |||
<p> | |||
@@ -221,7 +239,7 @@ Jasper generates JSP pages against the JSP1.3 specification -an implementation o | |||
version 2.2 of the servlet specification is needed to compile or run the java code. | |||
<hr> | |||
<p align="center">Copyright © 2001 Apache Software Foundation. All rights | |||
<p align="center">Copyright © 2001-2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
@@ -14,13 +14,14 @@ the Ant distribution. See <a href="../install.html#librarydependencies"> | |||
Library Dependencies</a> for more information.</p> | |||
<h3>Requirements</h3> | |||
<p>The task will run with either <a href="http://xml.apache.org/xalan-j/">Xalan 2.x</a> | |||
or <a href="http://xml.apache.org/dist/xalan-j/old/xalan-j_1_2_2.zip">Xalan 1.2.2</a>.</p> | |||
<p>The task needs <a href="http://xml.apache.org/xalan-j/">Xalan 2.x</a>; | |||
although | |||
<a href="http://xml.apache.org/dist/xalan-j/old/xalan-j_1_2_2.zip">Xalan 1.2.2</a> | |||
does work, but as Xalan1 is not supported, we do not recommend this. | |||
</p> | |||
<p> | |||
Note:<i>For a framed format Xalan 1.2.2 will need Xerces(xerces.jar) as well as BSF(bsf.jar) | |||
that can be found in the distribution archive. Xerces will need to be before any other | |||
parser (such as the shipped version of Xerces, which is too new). It is *highly* recommended to use Xalan2 instead | |||
because Xalan1 is no more supported. | |||
If you do you use Xalan 1.2.2 you will need a compatible (older) version of Xerces. | |||
as well as BSF(bsf.jar). Again, using Xalan 2 is simpler and supported. | |||
</i></p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
@@ -2,9 +2,9 @@ | |||
<head><title>Native2Ascii Task</title></head> | |||
<body> | |||
<h2>Native2Ascii</h2> | |||
<h3>Description:</h3> | |||
<p> | |||
Converts files from native encodings to ASCII with escaped Unicode. | |||
A common usage is to convert source files maintained in a native | |||
@@ -20,12 +20,12 @@ | |||
For more information on file matching patterns, | |||
see the section on | |||
<a href="../dirtasks.html#directorybasedtasks">directory based tasks</a>. | |||
If no <em>encoding</em> is specified, | |||
If no <em>encoding</em> is specified, | |||
the default encoding for the JVM is used. | |||
If <em>ext</em> is specified, then output files are renamed | |||
to use it as a new extension. | |||
to use it as a new extension. | |||
More sophisticated file name translations can be achieved using a nested | |||
<em><mapper></em> element. By default an | |||
<em><mapper></em> element. By default an | |||
<a href="../CoreTypes/mapper.html#identity-mapper">identity mapper</a> will be used. | |||
If <em>dest</em> and <em>src</em> point to the same directory, | |||
the <em>ext</em> attribute or a nested <em><mapper></em> | |||
@@ -35,7 +35,7 @@ | |||
<p> | |||
This task forms an implicit <a href="../CoreTypes/fileset.html">File Set</a>, | |||
and supports all attributes of <code><fileset></code> | |||
(<code>dir</code> becomes <code>src</code>) as well as | |||
(<code>dir</code> becomes <code>src</code>) as well as | |||
nested <code><include></code>, <code><exclude></code>, | |||
and <code><patternset></code> elements. | |||
</p> | |||
@@ -83,7 +83,7 @@ | |||
</tr> | |||
<tr> | |||
<td>includes</td> | |||
<td>comma separated list of patterns of files that must be | |||
<td>comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
<td align="center">No</td> | |||
</tr> | |||
@@ -95,7 +95,7 @@ | |||
</tr> | |||
<tr> | |||
<td>excludes</td> | |||
<td>comma separated list of patterns of files that must be excluded. | |||
<td>comma- or space-separated list of patterns of files that must be excluded. | |||
No files (except default excludes) are excluded when omitted.</td> | |||
<td align="center">No</td> | |||
</tr> | |||
@@ -106,7 +106,7 @@ | |||
<td align="center">No</td> | |||
</tr> | |||
</table> | |||
<h3>Examples</h3> | |||
<pre> | |||
@@ -133,6 +133,6 @@ | |||
</p> | |||
</body> | |||
<hr> | |||
<p align="center">Copyright © 2000-2001 Apache Software Foundation. All rights | |||
<p align="center">Copyright © 2000-2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</html> |
@@ -116,7 +116,7 @@ or from the command line as<br> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when | |||
omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
@@ -141,7 +141,7 @@ or from the command line as<br> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -307,7 +307,7 @@ or from the command line as<br> | |||
</p> | |||
</blockquote> | |||
<hr> | |||
<p align="center">Copyright © 2000-2001 Apache Software Foundation. All rights | |||
<p align="center">Copyright © 2000-2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
@@ -137,6 +137,24 @@ tag expects the executables to be found using the PATH environment variable.</td | |||
newer than existing local files.</td> | |||
<td VALIGN=TOP WIDTH="10%">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="TOP">filenameformat</td> | |||
<td valign="TOP">The format of your folder names in a | |||
format suitable for <code>java.text.MessageFormat</code>. | |||
Index 1 of the format will be used as the file name. | |||
Defaults to <code>{0}-arc({1})</code>.</td> | |||
<td valign="TOP">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="TOP">linestart</td> | |||
<td valign="TOP">What a valid return value from PVCS looks like | |||
when it describes a file. Defaults to <code>"P:</code>. | |||
If you are not using an UNC name for your repository and the | |||
drive letter <code>P</code> is incorrect for your setup, you may | |||
need to change this value, UNC names will always be | |||
accepted.</td> | |||
<td valign="TOP">No</td> | |||
</tr> | |||
</table> | |||
<h3><a name="nested">Nested Elements</a></h3> | |||
@@ -230,6 +248,8 @@ repository from two projects using nested <pvcsproject> elements. | |||
Total time: 22 seconds</pre> | |||
<hr WIDTH="100%"> | |||
PVCS is a registered trademark of MERANT. | |||
<p align="center">Copyright © 2001-2002 Apache Software | |||
Foundation. All rights Reserved.</p> | |||
<p>PVCS is a registered trademark of MERANT.</p> | |||
</body> | |||
</html> |
@@ -13,13 +13,13 @@ | |||
task with a <a href="../CoreTypes/mapper.html#glob-mapper">glob mapper</a> instead.</i></p> | |||
<h3>Description</h3> | |||
<p>Renames files in the <code>srcDir</code> directory ending with the | |||
<code>fromExtension</code> string so that they end with the | |||
<code>toExtension</code> string. Files are only replaced if | |||
<code>fromExtension</code> string so that they end with the | |||
<code>toExtension</code> string. Files are only replaced if | |||
<code>replace</code> is true | |||
</p> | |||
<p>See the section on | |||
<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. | |||
inclusion/exclusion of files works, and how to write patterns. | |||
This task forms an implicit <a href="../CoreTypes/fileset.html">FileSet</a> and | |||
supports all attributes of <code><fileset></code> | |||
(<code>dir</code> becomes <code>srcDir</code>) as well as the nested | |||
@@ -41,7 +41,7 @@ supports all attributes of <code><fileset></code> | |||
</tr> | |||
<tr> | |||
<td valign="top">excludes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
excluded. No files (except default excludes) are excluded when | |||
omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
@@ -59,7 +59,7 @@ supports all attributes of <code><fileset></code> | |||
</tr> | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
<td valign="top">comma- or space-separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
@@ -100,7 +100,7 @@ supports all attributes of <code><fileset></code> | |||
</blockquote> | |||
<hr> | |||
<p align="center">Copyright © 2000-2001 Apache Software Foundation. All rights | |||
<p align="center">Copyright © 2000-2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
@@ -10,6 +10,10 @@ | |||
<h2><a name="test">Test</a></h2> | |||
<h3>Description</h3> | |||
<p>This is a primitive task to execute a unit test in the org.apache.testlet framework.</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 information. | |||
</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
@@ -25,11 +25,11 @@ | |||
</ul> | |||
<br> | |||
<h2><a name="intro">Introduction</a></h2> | |||
<p>These tasks provide an interface to the | |||
<p>These tasks provide an interface to the | |||
<a href="http://msdn.microsoft.com/ssafe/default.asp" target="_top">Microsoft Visual SourceSafe</a> SCM. | |||
The <code>org.apache.tools.ant.taskdefs.optional.vss</code> package consists of a simple framework to support | |||
vss functionality as well as some Ant tasks encapsulating frequently used vss commands. | |||
Although it is possible to use these commands on the desktop, | |||
The <code>org.apache.tools.ant.taskdefs.optional.vss</code> package consists of a simple framework to support | |||
vss functionality as well as some Ant tasks encapsulating frequently used vss commands. | |||
Although it is possible to use these commands on the desktop, | |||
they were primarily intended to be used by automated build systems.</p> | |||
<h2><a name="tasks">The Tasks</a></h2> | |||
@@ -77,7 +77,7 @@ they were primarily intended to be used by automated build systems.</p> | |||
<h2><a name="vssget">VssGet</a></h2> | |||
<h3>Description</h3> | |||
Task to perform GET commands to Microsoft Visual SourceSafe. | |||
<p>If you specify two or more attributes from version, date and | |||
<p>If you specify two or more attributes from version, date and | |||
label only one will be used in the order version, date, label.</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
@@ -88,16 +88,16 @@ label only one will be used in the order version, date, label.</p> | |||
</tr> | |||
<tr> | |||
<td>vsspath</td> | |||
<td>SourceSafe path which specifies the project/file(s) you wish to | |||
perform the action on. You should not specify the leading dollar-sign - | |||
<td>SourceSafe path which specifies the project/file(s) you wish to | |||
perform the action on. You should not specify the leading dollar-sign - | |||
it is prepended by Ant automatically.</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td>login</td> | |||
<td>username[,password] - The username and password needed to get access | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
login without a password. </td> | |||
<td>No</td> | |||
</tr> | |||
@@ -157,7 +157,7 @@ label only one will be used in the order version, date, label.</p> | |||
<blockquote> | |||
<pre> | |||
<vssget localPath="C:\mysrc\myproject" | |||
recursive="true" | |||
recursive="true" | |||
label="Release1" | |||
login="me,mypassword" | |||
vsspath="/source/aProject" | |||
@@ -165,7 +165,7 @@ label only one will be used in the order version, date, label.</p> | |||
</pre> | |||
</blockquote> | |||
<p>Does a get on the VSS-Project <i>$/source/myproject</i> using the username | |||
<i>me</i> and the password <i>mypassword</i>. It will recursively get the files | |||
<i>me</i> and the password <i>mypassword</i>. It will recursively get the files | |||
which are labeled <i>Release1</i> and write them to the local directory | |||
<i>C:\mysrc\myproject</i>. The local files will be writable.</p> | |||
<hr> | |||
@@ -186,16 +186,16 @@ project.</p> | |||
</tr> | |||
<tr> | |||
<td>vsspath</td> | |||
<td>SourceSafe path which specifies the project/file(s) you wish to | |||
perform the action on. You should not specify the leading dollar-sign - | |||
<td>SourceSafe path which specifies the project/file(s) you wish to | |||
perform the action on. You should not specify the leading dollar-sign - | |||
it is prepended by Ant automatically.</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td>login</td> | |||
<td>username[,password] - The username and password needed to get access | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
login without a password. </td> | |||
<td>No</td> | |||
</tr> | |||
@@ -242,7 +242,7 @@ project.</p> | |||
</pre> | |||
</blockquote> | |||
<p>Labels the current version of the VSS project <i>$/source/aProject</i> with | |||
the label <i>Release1</i> using the username <i>me</i> and the password | |||
the label <i>Release1</i> using the username <i>me</i> and the password | |||
<i>mypassword</i>. | |||
</p> | |||
<blockquote> | |||
@@ -265,23 +265,23 @@ the build) will fail. | |||
Task to perform HISTORY commands to Microsoft Visual SourceSafe. | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<tr> | |||
<th>Attribute</th> | |||
<th>Values</th> | |||
<th>Required</th> | |||
</tr> | |||
<tr> | |||
<td>vsspath</td> | |||
<td>SourceSafe path which specifies the project/file(s) you wish to | |||
perform the action on. You should not specify the leading dollar-sign - | |||
<td>SourceSafe path which specifies the project/file(s) you wish to | |||
perform the action on. You should not specify the leading dollar-sign - | |||
it is prepended by Ant automatically.</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td>login</td> | |||
<td>username[,password] - The username and password needed to get access | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
login without a password. </td> | |||
<td>No</td> | |||
</tr> | |||
@@ -296,53 +296,53 @@ Task to perform HISTORY commands to Microsoft Visual SourceSafe. | |||
<td>directory where <code>srssafe.ini</code> resides.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td>fromDate</td> | |||
<td>Start date for comparison</td> | |||
<td>See below</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td>toDate</td> | |||
<td>Start date for comparison</td> | |||
<td>See below</td> | |||
</tr> | |||
<tr> | |||
<td>dateFormat</td> | |||
<td>Format of dates in fromDate and toDate. Used when calculating dates with | |||
the numdays attribute. This string uses the formatting rules of SimpleDateFormat. | |||
<td>Format of dates in fromDate and toDate. Used when calculating dates with | |||
the numdays attribute. This string uses the formatting rules of SimpleDateFormat. | |||
Defaults to DateFormat.SHORT.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td>fromLabel</td> | |||
<td>Start label for comparison</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td>toLabel</td> | |||
<td>Start label for comparison</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td>numdays</td> | |||
<td>The number of days for comparison.</td> | |||
<td>See below</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td>output</td> | |||
<td>File to write the diff.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td>recursive</td> | |||
<td>true or false</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
</tr> | |||
<tr> | |||
<td>style</td> | |||
<td>brief, codediff, default or nofile. The default is default.</td> | |||
<td>No</td> | |||
</tr> | |||
</tr> | |||
</table> | |||
<h4>Specifying the time-frame</h4> | |||
@@ -359,7 +359,7 @@ Task to perform HISTORY commands to Microsoft Visual SourceSafe. | |||
<h3>Examples</h3> | |||
<blockquote> | |||
<pre> | |||
<vsshistory vsspath="/myProject" recursive="true" | |||
<vsshistory vsspath="/myProject" recursive="true" | |||
fromLabel="Release1" | |||
toLabel="Release2"/> | |||
</pre> | |||
@@ -368,20 +368,20 @@ Task to perform HISTORY commands to Microsoft Visual SourceSafe. | |||
<blockquote> | |||
<pre> | |||
<vsshistory vsspath="/myProject" recursive="true" | |||
<vsshistory vsspath="/myProject" recursive="true" | |||
fromDate="01.01.2001" | |||
toDate="31.03.2001"/> | |||
</pre> | |||
</blockquote> | |||
<p>Shows all changes between January 1st 2001 and March 31st 2001 (in Germany, date must be specified according to your locale).</p> | |||
<blockquote> | |||
<blockquote> | |||
<pre> | |||
<tstamp> | |||
<format property="to.tstamp" pattern="M-d-yy;h:mma" /> | |||
</tstamp> | |||
<vsshistory vsspath="/myProject" recursive="true" | |||
<vsshistory vsspath="/myProject" recursive="true" | |||
numDays="-14" | |||
dateFormat="M-d-yy;h:mma" | |||
toDate="${to.tstamp}"/> | |||
@@ -404,16 +404,16 @@ Task to perform CHECKIN commands to Microsoft Visual SourceSafe. | |||
</tr> | |||
<tr> | |||
<td>vsspath</td> | |||
<td>SourceSafe path which specifies the project/file(s) you wish to | |||
perform the action on. You should not specify the leading dollar-sign - | |||
<td>SourceSafe path which specifies the project/file(s) you wish to | |||
perform the action on. You should not specify the leading dollar-sign - | |||
it is prepended by Ant automatically.</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td>login</td> | |||
<td>username[,password] - The username and password needed to get access | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
login without a password. </td> | |||
<td>No</td> | |||
</tr> | |||
@@ -463,7 +463,7 @@ Task to perform CHECKIN commands to Microsoft Visual SourceSafe. | |||
comment="Modified by automatic build"/> | |||
</pre> | |||
</blockquote> | |||
<p>Checks in the file(s) named <i>test*</i> in the project <i>test</i> using | |||
<p>Checks in the file(s) named <i>test*</i> in the project <i>test</i> using | |||
the local directory <i>D:\build</i>.</p> | |||
<hr> | |||
@@ -472,7 +472,7 @@ the local directory <i>D:\build</i>.</p> | |||
<h2><a name="vsscheckout">VssCheckout</a></h2> | |||
<h3>Description</h3> | |||
Task to perform CHECKOUT commands to Microsoft Visual SourceSafe. | |||
<p>If you specify two or more attributes from version, date and | |||
<p>If you specify two or more attributes from version, date and | |||
label only one will be used in the order version, date, label.</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
@@ -483,16 +483,16 @@ label only one will be used in the order version, date, label.</p> | |||
</tr> | |||
<tr> | |||
<td>vsspath</td> | |||
<td>SourceSafe path which specifies the project/file(s) you wish to | |||
perform the action on. You should not specify the leading dollar-sign - | |||
<td>SourceSafe path which specifies the project/file(s) you wish to | |||
perform the action on. You should not specify the leading dollar-sign - | |||
it is prepended by Ant automatically.</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td>login</td> | |||
<td>username[,password] - The username and password needed to get access | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
login without a password. </td> | |||
<td>No</td> | |||
</tr> | |||
@@ -546,7 +546,7 @@ label only one will be used in the order version, date, label.</p> | |||
login="me,mypass"/> | |||
</pre> | |||
</blockquote> | |||
<p>Does a recursive checkout of the project test to the directory D:\build. | |||
<p>Does a recursive checkout of the project test to the directory D:\build. | |||
</p> | |||
<hr> | |||
@@ -570,8 +570,8 @@ Task to perform ADD commands to Microsoft Visual SourceSafe. | |||
<tr> | |||
<td>login</td> | |||
<td>username[,password] - The username and password needed to get access | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
login without a password. </td> | |||
<td>No</td> | |||
</tr> | |||
@@ -634,16 +634,16 @@ directory (see vsscp).</p> | |||
</tr> | |||
<tr> | |||
<td>vsspath</td> | |||
<td>SourceSafe path which specifies the project you wish to | |||
make the current project. You should not specify the leading dollar-sign - | |||
<td>SourceSafe path which specifies the project you wish to | |||
make the current project. You should not specify the leading dollar-sign - | |||
it is prepended by Ant automatically.</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td>login</td> | |||
<td>username[,password] - The username and password needed to get access | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
to VSS. Note that you may need to specify both (if you have a password) - | |||
Ant/VSS will hang if you leave the password out and VSS does not accept | |||
login without a password. </td> | |||
<td>No</td> | |||
</tr> | |||
@@ -0,0 +1,99 @@ | |||
<html> | |||
<head> | |||
<meta http-equiv="Content-Language" content="en-us"> | |||
<title>Extension Type</title> | |||
</head> | |||
<body> | |||
<h2><a name="fileset">ClassFileSet</a></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>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 | |||
Java2 Standard Edition package, in file | |||
<code>guide/extensions/versioning.html</code> or online at | |||
<a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html"> | |||
http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html</a>.</p> | |||
<h3>Attributes</h3> | |||
<p>The class fileset support the following attributes</a>: | |||
</p> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td valign="top"><b>Attribute</b></td> | |||
<td valign="top"><b>Description</b></td> | |||
<td align="center" valign="top"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">extensionName</td> | |||
<td valign="top">The name of extension</td> | |||
<td valign="top" align="center">yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">specificationVersion</td> | |||
<td valign="top">The version of extension specification (Must be in | |||
dewey decimal aka dotted decimal notation. 3.2.4)</td> | |||
<td valign="top" align="center">no</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">specificationVendor</td> | |||
<td valign="top">The specification vendor</td> | |||
<td valign="top" align="center">no</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">implementationVersion</td> | |||
<td valign="top">The version of extension implementation (Must be in | |||
dewey decimal aka dotted decimal notation. 3.2.4)</td> | |||
<td valign="top" align="center">no</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">implementationVendor</td> | |||
<td valign="top">The implementation vendor</td> | |||
<td valign="top" align="center">no</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">implementationVendorId</td> | |||
<td valign="top">The implementation vendor ID</td> | |||
<td valign="top" align="center">no</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">implementationURL</td> | |||
<td valign="top">The url from which to retrieve extension.</td> | |||
<td valign="top" align="center">no</td> | |||
</tr> | |||
</table> | |||
<h4>Examples</h4> | |||
<blockquote><pre> | |||
<extension id="e1" | |||
extensionName="MyExtensions" | |||
specificationVersion="1.0" | |||
specificationVendor="Peter Donald" | |||
implementationVendorID="vv" | |||
implementationVendor="Apache" | |||
implementationVersion="2.0" | |||
implementationURL="http://somewhere.com/myExt.jar"/> | |||
</pre></blockquote> | |||
<p>Fully specifiec extension object.</p> | |||
<blockquote><pre> | |||
<extension id="e1" | |||
extensionName="MyExtensions" | |||
specificationVersion="1.0" | |||
specificationVendor="Peter Donald" /> | |||
</pre></blockquote> | |||
<p>Extension object that just species the specification details.</p> | |||
<hr> | |||
<p align="center">Copyright © 2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
</html> | |||
@@ -0,0 +1,69 @@ | |||
<html> | |||
<head> | |||
<meta http-equiv="Content-Language" content="en-us"> | |||
<title>ExtensionSet Type</title> | |||
</head> | |||
<body> | |||
<h2><a name="fileset">ClassFileSet</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 | |||
Java2 Standard Edition package, in file | |||
<code>guide/extensions/versioning.html</code> or online at | |||
<a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html"> | |||
http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html</a>.</p> | |||
<h3>Nested Elements</h3> | |||
<h4>extension</h4> | |||
<p><a href="extension.html">Extension</a> object to add to set.</p> | |||
<h4>fileset</h4> | |||
<p><a href="../CoreTypes/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>fileset</h4> | |||
<p><a href="libfileset.html">LibFileSet</a>s 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> | |||
<blockquote><pre> | |||
<extension id="e1" | |||
extensionName="MyExtensions" | |||
specificationVersion="1.0" | |||
specificationVendor="Peter Donald" | |||
implementationVendorID="vv" | |||
implementationVendor="Apache" | |||
implementationVersion="2.0" | |||
implementationURL="http://somewhere.com/myExt.jar"/> | |||
<libfileset id="lfs" | |||
includeUrl="true" | |||
includeImpl="false" | |||
dir="tools/lib"> | |||
<include name="*.jar"/> | |||
</libfileset> | |||
<extensionSet id="exts"> | |||
<libfileset dir="lib"> | |||
<include name="*.jar"/> | |||
</libfileset> | |||
<libfileset refid="lfs"/> | |||
<extension refid="e1"/> | |||
</extensionSet> | |||
</pre></blockquote> | |||
<hr> | |||
<p align="center">Copyright © 2002 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
</html> | |||
@@ -24,6 +24,7 @@ | |||
<a href="CoreTypes/filterchain.html">FilterChains and FilterReaders</a><br> | |||
<a href="CoreTypes/filterset.html">FilterSet</a><br> | |||
<a href="CoreTypes/patternset.html">PatternSet</a><br> | |||
<a href="using.html#path">Path-like Structures</a><br> | |||
<a href="CoreTypes/selectors.html">Selectors</a><br> | |||
<a href="CoreTypes/xmlcatalog.html">XMLCatalog</a><br> | |||
@@ -36,7 +36,7 @@ | |||
<li>Roger Vaughn (<a href="mailto:rvaughn@seaconinc.com">rvaughn@seaconinc.com</a>)</li> | |||
<li>Dave Walend (<a href="mailto:dwalend@cs.tufts.edu">dwalend@cs.tufts.edu</a>)</li> | |||
<li>Phillip Wells (<a href="mailto:philwells@rocketmail.com">philwells@rocketmail.com</a>)</li> | |||
<li>Craeg Strong (<a href="mailto:cstrong@arielpartners.com">cstrong@arielpartners.com</a>)</li> | |||
<li>Craeg Strong (<a href="mailto:cstrong@arielpartners.com">cstrong@arielpartners.com</a>)</li> | |||
</ul> | |||
<center> | |||
@@ -5,7 +5,7 @@ | |||
<title>Apache Ant User Manual</title> | |||
</head> | |||
<frameset cols="25%,75%"> | |||
<frameset cols="26%,74%"> | |||
<frame src="toc.html" name="navFrame"> | |||
<frame src="cover.html" name="mainFrame"> | |||
</frameset> | |||
@@ -287,7 +287,7 @@ Installing Ant / Optional Tasks</a> section above.</p> | |||
<td><a href="http://www.junit.org/" target="_top">www.junit.org</a></td> | |||
</tr> | |||
<tr> | |||
<td>xerces.jar and xalan.jar</td> | |||
<td>xalan.jar</td> | |||
<td>junitreport task</td> | |||
<td><a href="http://xml.apache.org/" target="_top">xml.apache.org</a></td> | |||
</tr> | |||
@@ -23,6 +23,10 @@ | |||
<a href="OptionalTasks/echoproperties.html">Echoproperties</a><br> | |||
<a href="OptionalTasks/ftp.html">FTP</a><br> | |||
<a href="OptionalTasks/icontract.html">IContract</a><br> | |||
<a href="OptionalTasks/jarlib-available.html">jarlib-available</a><br> | |||
<a href="OptionalTasks/jarlib-display.html">jarlib-display</a><br> | |||
<a href="OptionalTasks/jarlib-manifest.html">jarlib-manifest</a><br> | |||
<a href="OptionalTasks/jarlib-resolve.html">jarlib-resolve</a><br> | |||
<a href="OptionalTasks/javacc.html">JavaCC</a><br> | |||
<a href="OptionalTasks/javah.html">Javah</a><br> | |||
<a href="OptionalTasks/jspc.html">JspC</a><br> | |||
@@ -15,34 +15,49 @@ running Ant from the command-line is simple: just type | |||
<code>ant</code>.</p> | |||
<p>When no arguments are specified, Ant looks for a <code>build.xml</code> | |||
file in the current directory and, if found, uses that file as the | |||
buildfile and runs the "default" target. | |||
If you use the <code>-find</code> option, | |||
Ant will search for a buildfile first in the current directory, then in | |||
the parent directory, and so on, until either a buildfile is found or the root | |||
of the filesystem has been reached. To make Ant use | |||
a buildfile other than <code>build.xml</code>, use the command-line | |||
option <code>-buildfile <i>file</i></code>, | |||
where <i>file</i> is the name of the buildfile you want to use.</p> | |||
<p>You can also set <a href="using.html#properties">properties</a> that | |||
override properties specified in the | |||
buildfile (see the <a href="CoreTasks/property.html">property</a> task). | |||
This can be done with | |||
build file and runs the target specified in the <code>default</code> | |||
attribute of the <code><project></code> tag. | |||
To make Ant use | |||
a build file other than <code>build.xml</code>, use the command-line | |||
option <nobr><code>-buildfile <i>file</i></code></nobr>, | |||
where <i>file</i> is the name of the build file you want to use.</p> | |||
If you use the <nobr><code>-find [<i>file</i>]</code></nobr> option, | |||
Ant will search for a build file first in the current directory, then in | |||
the parent directory, and so on, until either a build file is found or the root | |||
of the filesystem has been reached. By default, it will look for a build file | |||
called <code>build.xml</code>. To have it search for a build file other | |||
than <code>build.xml</code>, specify a file argument. | |||
<strong>Note:</strong> If you include any other flags or arguments | |||
on the command line after | |||
the <nobr><code>-find</code></nobr> flag, you must include the file argument | |||
for the <nobr><code>-find</code></nobr> flag, even if the name of the | |||
build file you want to find is <code>build.xml</code>. | |||
<p>You can also set <a href="using.html#properties">properties</a> on the | |||
command line. This can be done with | |||
the <nobr><code>-D<i>property</i>=<i>value</i></code></nobr> option, | |||
where <i>property</i> is the name of the property, | |||
and <i>value</i> is the value for that property. | |||
This can also be used to pass in the value of environment variables. | |||
Just pass <nobr><code>-DMYVAR=%MYVAR%</code></nobr> (Windows) or | |||
and <i>value</i> is the value for that property. If you specify a | |||
property that is also set in the build file | |||
(see the <a href="CoreTasks/property.html">property</a> task), | |||
the value specified on the | |||
command line will override the value specified in the | |||
build file. | |||
Defining properties on the command line can also be used to pass in | |||
the value of environment variables - just pass | |||
<nobr><code>-DMYVAR=%MYVAR%</code></nobr> (Windows) or | |||
<nobr><code>-DMYVAR=$MYVAR</code></nobr> (Unix) | |||
to Ant - you can then access | |||
these variables inside your buildfile as <code>${MYVAR}</code>. | |||
You can also access environment variables using the <a href="CoreTasks/property.html"> | |||
property</a> task. | |||
to Ant. You can then access | |||
these variables inside your build file as <code>${MYVAR}</code>. | |||
You can also access environment variables using the | |||
<a href="CoreTasks/property.html"> property</a> task's | |||
<code>environment</code> attribute. | |||
</p> | |||
<p>Options that affect the amount of logging output by Ant are: <nobr><code>-quiet</code></nobr>, | |||
<p>Options that affect the amount of logging output by Ant are: | |||
<nobr><code>-quiet</code></nobr>, | |||
which instructs Ant to print less | |||
information on the console when running; | |||
information to the console; | |||
<nobr><code>-verbose</code></nobr>, which causes Ant to print | |||
additional information to the console; and <nobr><code>-debug</code></nobr>, | |||
which causes Ant to print considerably more additional information. | |||
@@ -55,9 +70,10 @@ When omitted, the target that is specified in the | |||
used.</p> | |||
<p>The <nobr><code>-projecthelp</code></nobr> option prints out a list | |||
of the buildfile's targets, along with the | |||
text in the <code>description</code> attribute of the target, | |||
if one was specified, followed by a list of those targets without one.</p> | |||
of the build file's targets. Targets that include a | |||
<code>description</code> attribute are listed as "Main targets", | |||
those without a <code>description</code> are listed as | |||
"Subtargets", then the "Default" target is listed. | |||
<h3><a name="options">Command-line Options Summary</a></h3> | |||
<pre>ant [options] [target [target2 [target3] ...]] | |||
@@ -69,22 +85,22 @@ Options: | |||
-verbose be extra verbose | |||
-debug print debugging information | |||
-emacs produce logging information without adornments | |||
-logfile <file> use given file for log | |||
-logger <classname> the class which is to perform logging | |||
-listener <classname> add an instance of class as a project listener | |||
-buildfile <file> use given buildfile | |||
-logfile <file> write logging output to given file | |||
-logger <classname> the class that is to perform logging | |||
-listener <classname> add an instance of <i>classname</i> as a project listener | |||
-buildfile <file> use given build file | |||
-D<property>=<value> use value for given property | |||
-propertyfile <name> load all properties from file with -D | |||
properties taking precedence | |||
-inputhandler <class> the class which will handle input requests | |||
-find <file> search for buildfile towards the root of the | |||
filesystem and use it | |||
-propertyfile <file> load all properties from <i>file</i> (with -D taking precedence) | |||
-inputhandler <class> the class that will handle input requests | |||
-find [<file>] search for build.xml, or <i>file</i>, towards the root of the | |||
filesystem | |||
</pre> | |||
<p>For more information about <code>-logger</code> and | |||
<code>-listener</code> see the section <a | |||
href="listeners.html">Loggers & Listeners</a> | |||
<p>For more information about <code>-inputhandler</code> see the | |||
section <a href="inputhandler.html">InputHandler</a> | |||
<code>-listener</code> see | |||
<a href="listeners.html">Loggers & Listeners</a>. | |||
<p>For more information about <code>-inputhandler</code> see | |||
<a href="inputhandler.html">InputHandler</a>. | |||
<h3>Examples</h3> | |||
<blockquote> | |||
<pre>ant</pre> | |||
@@ -99,23 +115,23 @@ the default target.</p> | |||
<blockquote> | |||
<pre>ant -buildfile test.xml dist</pre> | |||
</blockquote> | |||
<p>runs Ant using the <code>test.xml</code> file in the current directory, on a | |||
target called <code>dist</code>.</p> | |||
<p>runs Ant using the <code>test.xml</code> file in the current directory, on | |||
the target called <code>dist</code>.</p> | |||
<blockquote> | |||
<pre>ant -buildfile test.xml -Dbuild=build/classes dist</pre> | |||
</blockquote> | |||
<p>runs Ant using the <code>test.xml</code> file in the current directory, on a | |||
target called <code>dist</code>, setting the <code>build</code> property to the | |||
value <code>build/classes</code>.</p> | |||
<p>runs Ant using the <code>test.xml</code> file in the current directory, on | |||
the target called <code>dist</code>, setting the <code>build</code> property | |||
to the value <code>build/classes</code>.</p> | |||
<h3><a name="files">Files</a></h3> | |||
<p>The Ant wrapper script for Unix will source (read and evaluate) the | |||
file <code>~/.antrc</code> before it does anything - the Windows batch | |||
file invokes <code>%HOME%\antrc_pre.bat</code> at the start and | |||
file <code>~/.antrc</code> before it does anything. On Windows, the Ant | |||
wrapper batch-file invokes <code>%HOME%\antrc_pre.bat</code> at the start and | |||
<code>%HOME%\antrc_post.bat</code> at the end. You can use these | |||
files to set/unset environment variables that should only be visible | |||
during the execution of Ant. See the next section for example.</p> | |||
files, for example, to set/unset environment variables that should only be | |||
visible during the execution of Ant. See the next section for examples.</p> | |||
<h3><a name="envvars">Environment Variables</a></h3> | |||
@@ -131,8 +147,11 @@ set):</p> | |||
the maximum Java heap size here.</li> | |||
<li><code>ANT_ARGS</code> - Ant command-line arguments. For example, | |||
set <code>ANT_ARGS</code> to point to a different logger and to | |||
include the <code>-find</code> flag.</li> | |||
set <code>ANT_ARGS</code> to point to a different logger, include a | |||
listener, and to include the <code>-find</code> flag.</li> | |||
<strong>Note:</strong> If you include <code>-find</code> | |||
in <code>ANT_ARGS</code>, you should include the name of the build file | |||
to find, even if the file is called <code>build.xml</code>. | |||
</ul> | |||
<h2><a name="viajava">Running Ant via Java</a></h2> | |||
@@ -45,6 +45,9 @@ | |||
<pathelement location="${build.dir}"/> | |||
</path> | |||
<property name="the.classpath" refid="xdoclet.classpath"/> | |||
<echo>the.classpath = ${the.classpath}</echo> | |||
<taskdef name="document" | |||
classname="xdoclet.doc.DocumentDocletTask" | |||
classpathref="xdoclet.classpath"/> | |||
@@ -71,7 +74,7 @@ | |||
classpathref="xdoclet.classpath"> | |||
<fileset dir="${src.dir}"> | |||
<include name="**/*.java" unless="class.name"/> | |||
<include name="**/${class.name}.java" if="class.name"/> | |||
<include name="**/*${class.name}*.java" if="class.name"/> | |||
</fileset> | |||
<!-- Generate XML task descriptor files --> | |||
@@ -79,9 +82,9 @@ | |||
destinationfile="{0}.xml"/> | |||
<!-- Generate XML datatype descriptor files --> | |||
<datatypes templateFile="${datatype_xdoc.template}" | |||
<!-- <datatypes templateFile="${datatype_xdoc.template}" | |||
destdir="${gen.dir}/datatypes" | |||
destinationfile="{0}.xml"/> | |||
destinationfile="{0}.xml"/> --> | |||
<!-- @todo - with some additional logic in these subtasks, they | |||
could be used similar to above instead of <template> --> | |||
@@ -91,14 +94,14 @@ | |||
destinationfile="task_defaults.properties"/> | |||
<!-- Generate datatype defaults.properties --> | |||
<template subTaskClassName="org.apache.tools.ant.xdoclet.DatatypeSubTask" | |||
<!-- <template subTaskClassName="org.apache.tools.ant.xdoclet.DatatypeSubTask" | |||
templateFile="${type.properties.template}" | |||
destinationfile="type_defaults.properties"/> | |||
destinationfile="type_defaults.properties"/> --> | |||
<!-- Generate to-do list --> | |||
<info destdir="${gen.dir}/todo/ant" | |||
<!-- <info destdir="${gen.dir}/todo/ant" | |||
header="To-do List" | |||
projectname="Ant"/> | |||
projectname="Ant"/> --> | |||
</xdocs> | |||
</target> | |||
@@ -69,6 +69,7 @@ import java.io.File; | |||
public class TaskSubTask extends TemplateSubTask { | |||
public final static String SUBTASK_NAME = "tasks"; | |||
public String getSubTaskName() { | |||
return SUBTASK_NAME; | |||
} | |||
@@ -104,15 +105,14 @@ public class TaskSubTask extends TemplateSubTask { | |||
return false; | |||
} | |||
/* Leave deprecated tasks in for now | |||
/* | |||
Tag[] tags = clazz.tags(); | |||
for (int i = 0; i < tags.length; i++) { | |||
if ("@deprecated".equals(tags[i].name())) { | |||
return false; | |||
} | |||
} | |||
*/ | |||
*/ | |||
if (hasExecuteMethod(clazz)) { | |||
return true; | |||
} | |||
@@ -53,19 +53,18 @@ | |||
*/ | |||
package org.apache.tools.ant.xdoclet; | |||
import com.sun.javadoc.ClassDoc; | |||
import com.sun.javadoc.MethodDoc; | |||
import com.sun.javadoc.Parameter; | |||
import com.sun.javadoc.Type; | |||
import com.sun.javadoc.*; | |||
import org.apache.tools.ant.IntrospectionHelper; | |||
import xdoclet.XDocletException; | |||
import xdoclet.XDocletTagSupport; | |||
import xdoclet.util.TypeConversionUtil; | |||
import xdoclet.tags.AbstractProgramElementTagsHandler; | |||
import java.util.ArrayList; | |||
import java.util.Arrays; | |||
import java.util.Collections; | |||
import java.util.Comparator; | |||
import java.util.Enumeration; | |||
import java.util.HashMap; | |||
import java.util.List; | |||
import java.util.Map; | |||
@@ -172,11 +171,9 @@ public class TaskTagsHandler extends XDocletTagSupport { | |||
String elementName = "<not a valid element>"; | |||
if (methodName.startsWith("addConfigured")) { | |||
elementName = methodName.substring(13, methodName.length()); | |||
} | |||
else if (methodName.startsWith("add")) { | |||
} else if (methodName.startsWith("add")) { | |||
elementName = methodName.substring(3, methodName.length()); | |||
} | |||
else if (methodName.startsWith("create")) { | |||
} else if (methodName.startsWith("create")) { | |||
elementName = methodName.substring(6, methodName.length()); | |||
} | |||
return elementName.toLowerCase(); | |||
@@ -201,9 +198,8 @@ public class TaskTagsHandler extends XDocletTagSupport { | |||
ClassDoc classDoc = null; | |||
String methodName = getCurrentMethod().name(); | |||
if (methodName.startsWith("addConfigured") || | |||
methodName.startsWith("add") || | |||
methodName.startsWith("create")) | |||
{ | |||
methodName.startsWith("add") || | |||
methodName.startsWith("create")) { | |||
classDoc = getCurrentMethod().returnType().asClassDoc(); | |||
if (classDoc == null) { | |||
Parameter[] params = getCurrentMethod().parameters(); | |||
@@ -219,12 +215,42 @@ public class TaskTagsHandler extends XDocletTagSupport { | |||
* Provides the Ant task name. | |||
* | |||
* @see #getTaskName(ClassDoc) | |||
* @doc:tag type="content" | |||
* @doc:tag type="content" | |||
*/ | |||
public String taskName() throws XDocletException { | |||
return getTaskName(getCurrentClass()); | |||
} | |||
private static String[] fluffPrefixes = { "set a","set the","sets a","sets the" }; | |||
public String shortMethodDescription() throws XDocletException { | |||
Tag[] tags = getCurrentMethod().firstSentenceTags(); | |||
String desc = null; | |||
if( tags != null && tags.length > 0 ) { | |||
desc = tags[0].text(); | |||
} | |||
if( desc == null || desc.length() == 0 ) | |||
{ | |||
desc = "no description"; | |||
} | |||
desc = desc.trim(); | |||
String descLower = desc.toLowerCase(); | |||
for (int i=0; i < fluffPrefixes.length; i++) { | |||
String prefix = fluffPrefixes[i].toLowerCase() + " "; | |||
if (descLower.startsWith(prefix)) { | |||
desc = desc.substring(prefix.length()); | |||
break; | |||
} | |||
} | |||
desc = desc.substring(0,1).toUpperCase() + desc.substring(1); | |||
return desc; | |||
} | |||
/** | |||
* Provides the Ant task name. | |||
* | |||
@@ -272,8 +298,7 @@ public class TaskTagsHandler extends XDocletTagSupport { | |||
null, false, XDocletTagSupport.FOR_CLASS, false); | |||
if (tagValue != null) { | |||
tagValue = tagValue.toLowerCase(); | |||
} | |||
else { | |||
} else { | |||
tagValue = DEFAULT_CATEGORY; | |||
} | |||
return tagValue; | |||
@@ -281,75 +306,61 @@ public class TaskTagsHandler extends XDocletTagSupport { | |||
/** | |||
* Returns true if the method corresponds to an Ant task attribute using | |||
* the rules from IntrospectionHelper | |||
* | |||
* @todo filter out deprecated methods | |||
* only filter org.apache.tools.ant.Task setters that are hidden | |||
* check that it returns void and only has single argument | |||
* incorporate rules for argument types from IntrospectionHelper | |||
* - i.e. not an array | |||
* - primitives/wrappers | |||
* - File | |||
* - Path | |||
* - EnumeratedAttribute | |||
* - Class with string constructor | |||
* @todo refactor to cache methods per class, and save some time | |||
*/ | |||
private boolean isAntAttribute(MethodDoc method) { | |||
String[] excludeList = new String[]{"setLocation", "setDescription", "setOwningTarget", "setRuntimeConfigurableWrapper", | |||
"setTaskName", "setTaskType", "setProject"}; | |||
for (int i = 0; i < excludeList.length; i++) { | |||
if (excludeList[i].equals(method.name())) { | |||
return true; | |||
} | |||
private MethodDoc[] getAttributeMethods(ClassDoc cur_class) throws XDocletException { | |||
// Use Ant's own introspection mechanism to gather the | |||
// attributes this class supports | |||
IntrospectionHelper is = null; | |||
try { | |||
is = IntrospectionHelper.getHelper(Class.forName(cur_class.qualifiedName())); | |||
} catch (ClassNotFoundException e) { | |||
throw new XDocletException(e,e.getMessage()); | |||
} | |||
return false; | |||
} | |||
private MethodDoc[] getAttributeMethods(ClassDoc cur_class) throws XDocletException { | |||
MethodDoc[] methods = getMethods(cur_class); | |||
List attributeMethods = new ArrayList(); | |||
Map nameTypeMap = new HashMap(); | |||
// Regroup the attributes, since IntrospectionHelper | |||
// doesn't give us the whole data structure directly | |||
Enumeration enum = is.getAttributes(); | |||
Properties attributeTypeMap = new Properties(); | |||
while (enum.hasMoreElements()) { | |||
String name = (String) enum.nextElement(); | |||
Class type = is.getAttributeType(name); | |||
attributeTypeMap.setProperty(name, type.getName()); | |||
// System.out.println(name + " = " + type.getName()); | |||
} | |||
for (int i = 0; i < methods.length; i++) { | |||
MethodDoc method = methods[i]; | |||
// We need to return MethodDoc[] from this method | |||
// so get all methods from the current class | |||
MethodDoc[] allMethods = getMethods(cur_class); | |||
if (!method.isPublic()) { | |||
// And now filter the MethodDoc's based | |||
// on what IntrospectionHelper says | |||
List attributeMethods = new ArrayList(); | |||
for (int i = 0; i < allMethods.length; i++) { | |||
MethodDoc method = allMethods[i]; | |||
String methodName = method.name(); | |||
if (!methodName.startsWith("set")) { | |||
continue; | |||
} | |||
if (!method.name().startsWith("set")) { | |||
String attributeName = methodName.substring(3).toLowerCase(); | |||
if ((method.parameters().length != 1) || (!method.isPublic())) { | |||
continue; | |||
} | |||
String attributeType = method.parameters()[0].typeName(); | |||
// if superclass is org.apache.tools.ant.Task then | |||
// remove some known unallowed properties | |||
if (isAntAttribute(method)) { | |||
String mapAttribute = attributeTypeMap.getProperty(attributeName); | |||
if (mapAttribute == null) { | |||
continue; | |||
} | |||
// ensure method only has one parameter | |||
Parameter[] params = method.parameters(); | |||
if (params.length != 1) { | |||
// inner classes are noted with $ in our map, but not | |||
// n the parameter type name. | |||
if (!attributeType.equals(mapAttribute.replace('$','.'))) { | |||
continue; | |||
} | |||
Parameter param = params[0]; | |||
// Screen out attribute setters if there are duplicates, | |||
// and only return the first non-String one | |||
// (this may or may not jive with IntrospectionHelper) | |||
MethodDoc oldMethod = (MethodDoc) nameTypeMap.get(method.name()); | |||
if (oldMethod == null) { | |||
nameTypeMap.put(method.name(), method); | |||
} | |||
else { | |||
if ("java.lang.String".equals(oldMethod.parameters()[0].typeName())) { | |||
attributeMethods.remove(oldMethod); | |||
nameTypeMap.put(method.name(), method); | |||
} | |||
} | |||
// System.out.println(methodName + " : " + attributeName + " : " + attributeType); | |||
attributeMethods.add(method); | |||
} | |||
@@ -361,47 +372,96 @@ public class TaskTagsHandler extends XDocletTagSupport { | |||
* @todo add checks for number parameters and appropriate return value | |||
* check for proper exception too? | |||
* method prefixes: add, create, addConfigured (but not addText) | |||
* | |||
* @todo add DynamicConfigurator (this should be noted in the template, not dealt with here) | |||
*/ | |||
private MethodDoc[] getElementMethods(ClassDoc cur_class) throws XDocletException { | |||
MethodDoc[] methods = getMethods(cur_class); | |||
List attributeMethods = new ArrayList(); | |||
// Use Ant's own introspection mechanism to gather the | |||
// elements this class supports | |||
IntrospectionHelper is = null; | |||
try { | |||
is = IntrospectionHelper.getHelper(Class.forName(cur_class.qualifiedName())); | |||
} catch (ClassNotFoundException e) { | |||
throw new XDocletException(e.getMessage()); | |||
} | |||
for (int i = 0; i < methods.length; i++) { | |||
if (! methods[i].isPublic()) { | |||
continue; | |||
} | |||
// Regroup the elements, since IntrospectionHelper | |||
// doesn't give us the whole data structure directly | |||
Enumeration enum = is.getNestedElements(); | |||
Properties elementTypeMap = new Properties(); | |||
while (enum.hasMoreElements()) { | |||
String name = (String) enum.nextElement(); | |||
Class type = is.getElementType(name); | |||
elementTypeMap.setProperty(name, type.getName()); | |||
// System.out.println(name + " = " + type.getName()); | |||
} | |||
String name = methods[i].name(); | |||
// We need to return MethodDoc[] from this method | |||
// so get all methods from the current class | |||
MethodDoc[] allMethods = getMethods(cur_class); | |||
// And now filter the MethodDoc's based | |||
// on what IntrospectionHelper says | |||
List elementMethods = new ArrayList(); | |||
for (int i = 0; i < allMethods.length; i++) { | |||
MethodDoc method = allMethods[i]; | |||
String methodName = method.name(); | |||
// Object create(), void add(Object), void addConfigured(Object) | |||
String elementName = null; | |||
boolean adder = false; // true if addXXX or addConfiguredXXX | |||
if (methodName.startsWith("create")) { | |||
elementName = methodName.substring(6).toLowerCase(); | |||
} | |||
// ensure if there are no parameters, there is a return type, | |||
// otherwise ensure there's only one parameter. | |||
Parameter[] params = methods[i].parameters(); | |||
if (params.length == 0) { | |||
if (methods[i].returnType().asClassDoc() == null) { | |||
continue; | |||
if (methodName.startsWith("add")) { | |||
int length = 3; | |||
if (methodName.startsWith("addConfigured")) { | |||
length = 13; | |||
} | |||
// only the "createXXX" method has zero params | |||
// the "addXXX" and "addConfiguredXXX" have 1 param | |||
if (!name.startsWith("create")) { | |||
elementName = methodName.substring(length).toLowerCase(); | |||
adder = true; | |||
} | |||
if (elementName == null) { | |||
continue; | |||
} | |||
System.out.println("elementName = " + elementName); | |||
String elementType = null; | |||
if (adder) { | |||
if (method.parameters().length != 1) { | |||
continue; | |||
} | |||
elementType = method.parameters()[0].typeName(); | |||
} else { | |||
elementType = method.returnType().qualifiedTypeName(); | |||
} | |||
else if (params.length != 1) { | |||
if (!method.isPublic()) { | |||
continue; | |||
} | |||
if ((name.startsWith("add") && !name.equals("addTask")) || | |||
name.startsWith("create")) { | |||
attributeMethods.add(methods[i]); | |||
String mapElementType = elementTypeMap.getProperty(elementName); | |||
System.out.println("elementType = " + elementType + " mapElementType = " + mapElementType); | |||
if (mapElementType == null) { | |||
continue; | |||
} | |||
// inner classes are noted with $ in our map, but not | |||
// the parameter type name. | |||
if (!elementType.equals(mapElementType.replace('$','.'))) { | |||
continue; | |||
} | |||
elementMethods.add(method); | |||
} | |||
return (MethodDoc[]) attributeMethods.toArray(new MethodDoc[0]); | |||
return (MethodDoc[]) elementMethods.toArray(new MethodDoc[0]); | |||
} | |||
/** | |||
* This is a slightly refactored (thank you IntelliJ) version of | |||
* some cut-and-paste from XDoclet code. It sorts all methods together | |||
@@ -413,13 +473,26 @@ public class TaskTagsHandler extends XDocletTagSupport { | |||
List methods = new ArrayList(); | |||
while (cur_class != null) { | |||
// hardcoded to stop when it hits Task, nothing there | |||
// or above that needs to be processed | |||
if (cur_class.qualifiedName().equals("org.apache.tools.ant.Task") || | |||
cur_class.qualifiedName().equals("org.apache.tools.ant.taskdefs.MatchingTask")) { | |||
break; | |||
} | |||
List curMethods = Arrays.asList(cur_class.methods()); | |||
for (int j = 0; j < curMethods.size(); j++) { | |||
MethodDoc method = (MethodDoc) curMethods.get(j); | |||
if (isDeprecated(method)) { | |||
continue; | |||
} | |||
if (shouldIgnore(method)) { | |||
continue; | |||
} | |||
String methodName = method.name(); | |||
if (method.containingClass() == cur_class) { | |||
if (already.containsKey(method) == false) { | |||
already.put(method, method); | |||
if (already.containsKey(methodName) == false) { | |||
already.put(methodName, method); | |||
methods.add(method); | |||
} | |||
} | |||
@@ -431,6 +504,36 @@ public class TaskTagsHandler extends XDocletTagSupport { | |||
return sortMethods(methods); | |||
} | |||
private boolean isDeprecated (MethodDoc method) { | |||
Tag[] tags = method.tags(); | |||
for (int i=0; i < tags.length; i++) { | |||
if (tags[i].name().equals("@deprecated")) { | |||
return true; | |||
} | |||
} | |||
return false; | |||
} | |||
/** | |||
* For now, lump attributes and elements together since we won't | |||
* have those tags on the same method. | |||
*/ | |||
private boolean shouldIgnore (MethodDoc method) throws XDocletException { | |||
String value = getTagValue(method, "ant:attribute", "ignore", -1, | |||
null, null, null, null, | |||
null, false, XDocletTagSupport.FOR_METHOD, false); | |||
if ("true".equals(value)) { | |||
return true; | |||
} | |||
value = getTagValue(method, "ant:element", "ignore", -1, | |||
null, null, null, null, | |||
null, false, XDocletTagSupport.FOR_METHOD, false); | |||
if ("true".equals(value)) { | |||
return true; | |||
} | |||
return false; | |||
} | |||
private MethodDoc[] sortMethods(List methods) { | |||
//sort methods | |||
Collections.sort(methods, | |||
@@ -1,6 +1,8 @@ | |||
<XDtTagDef:tagDef namespace="Ant" handler="org.apache.tools.ant.xdoclet.TaskTagsHandler"/> | |||
<task name="<XDtAnt:taskName/>" category="<XDtAnt:categoryName/>" | |||
classname="<XDtClass:fullClassName/>"> | |||
classname="<XDtClass:fullClassName/>" | |||
<XDtClass:ifHasClassTag tagName="deprecated">deprecated="true"</XDtClass:ifHasClassTag> | |||
<XDtType:ifIsOfType type="org.apache.tools.ant.taskdefs.MatchingTask">matchingTask="true"</XDtType:ifIsOfType>> | |||
<XDtMerge:merge file="{0}.xml" generateMergedFile="false"></XDtMerge:merge> | |||
@@ -13,7 +15,9 @@ | |||
<attributes> | |||
<XDtAnt:forAllAttributes> | |||
<attribute name="<XDtMethod:propertyName/>" type="<XDtParameter:forAllMethodParams><XDtParameter:methodParamType/></XDtParameter:forAllMethodParams>"> | |||
<attribute name="<XDtMethod:propertyName/>" type="<XDtParameter:forAllMethodParams><XDtParameter:methodParamType/></XDtParameter:forAllMethodParams>" | |||
<XDtMethod:ifHasMethodTag tagName="deprecated">deprecated="true"</XDtMethod:ifHasMethodTag>> | |||
<short-description><![CDATA[<XDtAnt:shortMethodDescription/>]]></short-description> | |||
<description><![CDATA[ | |||
<XDtMethod:methodComment no-comment-signs="true"/> | |||
]]></description> | |||
@@ -23,23 +27,15 @@ | |||
<elements> | |||
<XDtAnt:forAllElements> | |||
<element name="<XDtAnt:elementName/>" type="<XDtAnt:elementType/>"> | |||
<element name="<XDtAnt:elementName/>" type="<XDtAnt:elementType/>" | |||
<XDtMethod:ifHasMethodTag tagName="deprecated">deprecated="true"</XDtMethod:ifHasMethodTag> | |||
<XDtClass:pushClass value="<XDtAnt:elementType/>"> | |||
<XDtClass:ifIsClassAbstract>abstract="true"</XDtClass:ifIsClassAbstract>> | |||
</XDtClass:pushClass> | |||
<short-description><![CDATA[<XDtAnt:shortMethodDescription/>]]></short-description> | |||
<description> | |||
<![CDATA[<XDtMethod:methodComment no-comment-signs="true"/>]]> | |||
</description> | |||
<XDtClass:pushClass value="<XDtAnt:elementType/>"> | |||
<XDtAnt:ifHasAttributes> | |||
<attributes> | |||
<XDtAnt:forAllAttributes> | |||
<attribute name="<XDtMethod:propertyName/>" type="<XDtParameter:forAllMethodParams><XDtParameter:methodParamType/></XDtParameter:forAllMethodParams>"> | |||
<description><![CDATA[ | |||
<XDtMethod:methodComment no-comment-signs="true"/> | |||
]]></description> | |||
</attribute> | |||
</XDtAnt:forAllAttributes> | |||
</attributes> | |||
</XDtAnt:ifHasAttributes> | |||
</XDtClass:pushClass> | |||
</element> | |||
</XDtAnt:forAllElements> | |||
@@ -48,7 +44,7 @@ | |||
<!-- @todo: wrap setCurrentMethod inside AntTagsHandler --> | |||
<!-- @todo: create a XDtAnt:description wrapper for methodComment --> | |||
<XDtMethod:setCurrentMethod name="addText" parameters="java.lang.String"> | |||
<body> | |||
<body <XDtMethod:ifHasMethodTag tagName="deprecated">deprecated="true"</XDtMethod:ifHasMethodTag>> | |||
<description><![CDATA[ | |||
<XDtMethod:methodComment no-comment-signs="true"/> | |||
]]></description> | |||
@@ -1,5 +1,5 @@ | |||
Manifest-Version: 1.0 | |||
Main-Class: org.apache.tools.ant.Main | |||
Class-Path: jaxp.jar parser.jar crimson.jar optional.jar xalan.jar | |||
Class-Path: xml-apis.jar xercesImpl.jar optional.jar xalan.jar | |||
@@ -93,4 +93,50 @@ | |||
<property name="testprop" refid="inheritable" /> | |||
</ant> | |||
</target> | |||
<target name="test-property-override-inheritall-start"> | |||
<property name="test" value="1" /> | |||
<ant antfile="ant.xml" | |||
target="test-property-override-inheritall-level-2" | |||
inheritall="true"> | |||
<property name="test" value="2" /> | |||
</ant> | |||
</target> | |||
<target name="test-property-override-inheritall-level-2"> | |||
<property name="test" value="3" /> | |||
<ant antfile="ant.xml" | |||
target="test-property-override-inheritall-level-3" | |||
inheritall="true"> | |||
<property name="test" value="4" /> | |||
</ant> | |||
</target> | |||
<target name="test-property-override-inheritall-level-3"> | |||
<property name="test" value="5" /> | |||
<echo message="The value of test is ${test}" /> | |||
</target> | |||
<target name="test-property-override-no-inheritall-start"> | |||
<property name="test" value="1" /> | |||
<ant antfile="ant.xml" | |||
target="test-property-override-no-inheritall-level-2" | |||
inheritall="false"> | |||
<property name="test" value="2" /> | |||
</ant> | |||
</target> | |||
<target name="test-property-override-no-inheritall-level-2"> | |||
<property name="test" value="3" /> | |||
<ant antfile="ant.xml" | |||
target="test-property-override-no-inheritall-level-3" | |||
inheritall="false"> | |||
<property name="test" value="4" /> | |||
</ant> | |||
</target> | |||
<target name="test-property-override-no-inheritall-level-3"> | |||
<property name="test" value="5" /> | |||
<echo message="The value of test is ${test}" /> | |||
</target> | |||
</project> |
@@ -113,7 +113,7 @@ | |||
classname="java.awt.Graphics"> | |||
<classpath> | |||
<pathelement location="${java.home}/lib/rt.jar" /> | |||
<pathelement location="${java.home}/lib/classes.jar" /> | |||
<pathelement location="${java.home}/lib/classes.zip" /> | |||
<pathelement location="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/classes.jar" /> | |||
<pathelement location="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/ui.jar" /> | |||
</classpath> | |||
@@ -1,2 +1,4 @@ | |||
line1 | |||
line2 | |||
line3 |
@@ -1 +1 @@ | |||
line1 line2 | |||
line1 line2 line3 |
@@ -0,0 +1,9 @@ | |||
<?xml version="1.0" encoding="UTF-8" ?> | |||
<!-- I belong to: | |||
org.apache.tools.ant.types.XMLCatalogBuildFileTest.java | |||
--> | |||
<para> | |||
A stitch in time saves nine | |||
</para> |
@@ -0,0 +1,10 @@ | |||
<?xml version="1.0" encoding="UTF-8" ?> | |||
<!-- I belong to: | |||
org.apache.tools.ant.types.XMLCatalogBuildFileTest.java | |||
--> | |||
<para> | |||
No news is good news | |||
</para> | |||
@@ -0,0 +1,134 @@ | |||
<?xml version='1.0'?> | |||
<!DOCTYPE project> | |||
<project name="xmlcatalog" default="all" basedir="."> | |||
<description> | |||
This is to test XMLCatalog for external entity resolution from the | |||
xslt task, both the simple case and using the document() function | |||
to refer to a second file (which refers to the entity). This | |||
buildfile is called by | |||
org.apache.tools.ant.types.XMLCatalogBuildFileTest.java | |||
Alternatively, you may try it out by hand by first removing the | |||
comment symbols around the echo statements and then calling | |||
ant -buildfile xmlcatalog.xml | |||
</description> | |||
<property name="transformer" value = "xmlcatalog.xsl"/> | |||
<target | |||
name = "all" | |||
depends = "testentitynocatalog, testentitywithcatalog, | |||
testdocumentnocatalog, testdocumentwithcatalog"/> | |||
<target | |||
name = "testentitynocatalog" | |||
description = "Test external entity resolver for simple XML | |||
document without using XMLCatalog"> | |||
<delete | |||
quiet = "yes" | |||
file = "result.out"/> | |||
<xslt | |||
basedir = "${basedir}" | |||
destdir = "${basedir}" | |||
extension = ".text" | |||
style = "${transformer}" | |||
in = "xmlcatalog1.xml" | |||
out = "result.out"> | |||
<param | |||
name = "outprop" | |||
expression = "val1"/> | |||
</xslt> | |||
<property file = "result.out"/> | |||
<!-- <echo message = "${val1}"/> --> | |||
<delete | |||
quiet = "yes" | |||
file = "result.out"/> | |||
</target> | |||
<target | |||
name = "testentitywithcatalog" | |||
description = "Test external entity resolver for simple | |||
XML document using XMLCatalog"> | |||
<delete | |||
quiet = "yes" | |||
file = "result.out"/> | |||
<xslt | |||
basedir = "${basedir}" | |||
destdir = "${basedir}" | |||
extension = ".text" | |||
style = "${transformer}" | |||
in = "xmlcatalog1.xml" | |||
out = "result.out"> | |||
<param | |||
name = "outprop" | |||
expression = "val2"/> | |||
<xmlcatalog> | |||
<entity | |||
publicId = "myquote" | |||
location = "quote2.xml"/> | |||
</xmlcatalog> | |||
</xslt> | |||
<property file = "result.out"/> | |||
<!-- <echo message = "${val2}"/> --> | |||
<delete | |||
quiet = "yes" | |||
file = "result.out"/> | |||
</target> | |||
<target | |||
name = "testdocumentnocatalog" | |||
description = "Test entity resolution in XML document called | |||
from XSLT document() function without using XMLCatalog"> | |||
<delete | |||
quiet = "yes" | |||
file = "result.out"/> | |||
<xslt | |||
basedir = "${basedir}" | |||
destdir = "${basedir}" | |||
extension = ".text" | |||
style = "${transformer}" | |||
in = "xmlcatalog2.xml" | |||
out = "result.out"> | |||
<param | |||
name = "outprop" | |||
expression = "val3"/> | |||
</xslt> | |||
<property file = "result.out"/> | |||
<!-- <echo message = "${val3}"/> --> | |||
<delete | |||
quiet = "yes" | |||
file = "result.out"/> | |||
</target> | |||
<target | |||
name = "testdocumentwithcatalog" | |||
description = "Test entity resolution in XML document called | |||
from XSLT document() function using XMLCatalog"> | |||
<delete | |||
quiet = "yes" | |||
file = "result.out"/> | |||
<xslt | |||
basedir = "${basedir}" | |||
destdir = "${basedir}" | |||
extension = ".text" | |||
style = "${transformer}" | |||
in = "xmlcatalog2.xml" | |||
out = "result.out"> | |||
<param | |||
name = "outprop" | |||
expression = "val4"/> | |||
<xmlcatalog> | |||
<entity | |||
publicId = "myquote" | |||
location = "quote2.xml"/> | |||
</xmlcatalog> | |||
</xslt> | |||
<property file = "result.out"/> | |||
<!-- <echo message = "${val4}"/> --> | |||
<delete | |||
quiet = "yes" | |||
file = "result.out"/> | |||
</target> | |||
</project> |
@@ -0,0 +1,31 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<xsl:stylesheet | |||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | |||
version="1.0"> | |||
<!-- I belong to: | |||
org.apache.tools.ant.types.XMLCatalogBuildFileTest.java | |||
--> | |||
<xsl:output method="text"/> | |||
<!-- name of the output parameter to write --> | |||
<xsl:param name="outprop">value</xsl:param> | |||
<xsl:strip-space elements="*"/> | |||
<xsl:template match="/"> | |||
<xsl:value-of select="$outprop"/>: <xsl:apply-templates select="/fragment/para"/> | |||
</xsl:template> | |||
<!-- This will only be matched in doc2.xml --> | |||
<xsl:template match="Ref"> | |||
<xsl:apply-templates select="document(@file)/fragment/para"/> | |||
</xsl:template> | |||
<!-- This will only be matched in doc1.xml --> | |||
<xsl:template match="text()"> | |||
<xsl:value-of select="normalize-space(.)"/> | |||
</xsl:template> | |||
</xsl:stylesheet> |
@@ -0,0 +1,14 @@ | |||
<?xml version="1.0" encoding="UTF-8" ?> | |||
<!DOCTYPE fragment [ | |||
<!ENTITY quote PUBLIC "myquote" "quote1.xml"> | |||
]> | |||
<!-- I belong to: | |||
org.apache.tools.ant.types.XMLCatalogBuildFileTest.java | |||
--> | |||
<fragment> | |||
<para> | |||
"e; | |||
</para> | |||
</fragment> |
@@ -0,0 +1,11 @@ | |||
<?xml version="1.0" encoding="UTF-8" ?> | |||
<!-- I belong to: | |||
org.apache.tools.ant.types.XMLCatalogBuildFileTest.java | |||
--> | |||
<fragment> | |||
<para> | |||
<Ref file="xmlcatalog1.xml"/> | |||
</para> | |||
</fragment> |
@@ -71,6 +71,7 @@ import java.net.URL; | |||
import java.net.MalformedURLException; | |||
import org.apache.tools.ant.types.Path; | |||
import org.apache.tools.ant.util.LoaderUtils; | |||
import org.apache.tools.ant.util.JavaEnvUtils; | |||
/** | |||
* Used to load classes within ant with a different claspath from | |||
@@ -318,6 +319,8 @@ public class AntClassLoader extends ClassLoader implements BuildListener { | |||
this.parent = parent; | |||
} | |||
this.parentFirst = parentFirst; | |||
//TODO: turn on | |||
//addJavaLibraries(); | |||
addSystemPackageRoot("java"); | |||
addSystemPackageRoot("javax"); | |||
} | |||
@@ -1175,4 +1178,18 @@ public class AntClassLoader extends ClassLoader implements BuildListener { | |||
*/ | |||
public void messageLogged(BuildEvent event) { | |||
} | |||
/** | |||
* add any libraries that come with different java versions | |||
* here | |||
*/ | |||
private void addJavaLibraries() { | |||
Vector packages=JavaEnvUtils.getJrePackages(); | |||
Enumeration e=packages.elements(); | |||
while(e.hasMoreElements()) { | |||
String packageName=(String)e.nextElement(); | |||
addSystemPackageRoot(packageName); | |||
} | |||
} | |||
} |
@@ -54,8 +54,10 @@ | |||
package org.apache.tools.ant; | |||
import java.io.BufferedReader; | |||
import java.io.IOException; | |||
import java.io.PrintStream; | |||
import java.util.StringTokenizer; | |||
import java.io.StringReader; | |||
import org.apache.tools.ant.util.StringUtils; | |||
import org.apache.tools.ant.util.DateUtils; | |||
@@ -261,18 +263,24 @@ public class DefaultLogger implements BuildLogger { | |||
tmp.append(label); | |||
label = tmp.toString(); | |||
StringTokenizer tok = new StringTokenizer(event.getMessage(), | |||
"\r\n", false); | |||
boolean first = true; | |||
while (tok.hasMoreTokens()) { | |||
if (!first) { | |||
message.append(StringUtils.LINE_SEP); | |||
try { | |||
BufferedReader r = | |||
new BufferedReader( | |||
new StringReader(event.getMessage())); | |||
String line = r.readLine(); | |||
boolean first = true; | |||
while (line != null) { | |||
if (!first) { | |||
message.append(StringUtils.LINE_SEP); | |||
} | |||
first = false; | |||
message.append(label).append(line); | |||
line = r.readLine(); | |||
} | |||
first = false; | |||
message.append(label); | |||
message.append(tok.nextToken()); | |||
} catch (IOException e) { | |||
// shouldn't be possible | |||
message.append(label).append(event.getMessage()); | |||
} | |||
} else { | |||
message.append(event.getMessage()); | |||
} | |||
@@ -115,7 +115,7 @@ public class Main { | |||
* BuildLogger interface. | |||
*/ | |||
private String loggerClassname = null; | |||
/** | |||
* The Ant InputHandler class. There may be only one input | |||
* handler. | |||
@@ -251,6 +251,7 @@ public class Main { | |||
protected Main(String[] args) throws BuildException { | |||
String searchForThis = null; | |||
PrintStream logTo = null; | |||
// cycle through given args | |||
@@ -275,10 +276,7 @@ public class Main { | |||
try { | |||
File logFile = new File(args[i + 1]); | |||
i++; | |||
out = new PrintStream(new FileOutputStream(logFile)); | |||
err = out; | |||
System.setOut(out); | |||
System.setErr(out); | |||
logTo = new PrintStream(new FileOutputStream(logFile)); | |||
isLogFileUsed = true; | |||
} catch (IOException ioe) { | |||
String msg = "Cannot write on the specified log file. " | |||
@@ -437,12 +435,12 @@ public class Main { | |||
System.out.println("Could not load property file " | |||
+ filename + ": " + e.getMessage()); | |||
} finally { | |||
if (fis != null){ | |||
if (fis != null) { | |||
try { | |||
fis.close(); | |||
} catch (IOException e){ | |||
} | |||
} | |||
} | |||
} | |||
// ensure that -D properties take precedence | |||
@@ -455,6 +453,15 @@ public class Main { | |||
} | |||
} | |||
if (msgOutputLevel >= Project.MSG_INFO) { | |||
System.out.println("Buildfile: " + buildFile); | |||
} | |||
if (logTo != null) { | |||
out = err = logTo; | |||
System.setOut(out); | |||
System.setErr(out); | |||
} | |||
readyToRun = true; | |||
} | |||
@@ -539,12 +546,6 @@ public class Main { | |||
return; | |||
} | |||
// track when we started | |||
if (msgOutputLevel >= Project.MSG_INFO) { | |||
System.out.println("Buildfile: " + buildFile); | |||
} | |||
final Project project = new Project(); | |||
project.setCoreLoader(coreLoader); | |||
@@ -667,14 +668,14 @@ public class Main { | |||
handler = (InputHandler) | |||
(Class.forName(inputHandlerClassname).newInstance()); | |||
} catch (ClassCastException e) { | |||
String msg = "The specified input handler class " | |||
+ inputHandlerClassname | |||
String msg = "The specified input handler class " | |||
+ inputHandlerClassname | |||
+ " does not implement the InputHandler interface"; | |||
throw new BuildException(msg); | |||
} | |||
catch (Exception e) { | |||
String msg = "Unable to instantiate specified input handler " | |||
+ "class " + inputHandlerClassname + " : " | |||
+ "class " + inputHandlerClassname + " : " | |||
+ e.getClass().getName(); | |||
throw new BuildException(msg); | |||
} | |||
@@ -704,7 +705,7 @@ public class Main { | |||
throw new RuntimeException(); | |||
} catch (Exception e) { | |||
System.err.println("Unable to instantiate specified logger " | |||
+ "class " + loggerClassname + " : " | |||
+ "class " + loggerClassname + " : " | |||
+ e.getClass().getName()); | |||
throw new RuntimeException(); | |||
} | |||
@@ -731,14 +732,17 @@ public class Main { | |||
msg.append(" -help print this message" + lSep); | |||
msg.append(" -projecthelp print project help information" + lSep); | |||
msg.append(" -version print the version information and exit" + lSep); | |||
msg.append(" -quiet be extra quiet" + lSep); | |||
msg.append(" -verbose be extra verbose" + lSep); | |||
msg.append(" -quiet, -q be extra quiet" + lSep); | |||
msg.append(" -verbose, -v be extra verbose" + lSep); | |||
msg.append(" -debug print debugging information" + lSep); | |||
msg.append(" -emacs produce logging information without adornments" + lSep); | |||
msg.append(" -logfile <file> use given file for log" + lSep); | |||
msg.append(" -l <file> ''" + lSep); | |||
msg.append(" -logger <classname> the class which is to perform logging" + lSep); | |||
msg.append(" -listener <classname> add an instance of class as a project listener" + lSep); | |||
msg.append(" -buildfile <file> use given buildfile" + lSep); | |||
msg.append(" -file <file> ''" + lSep); | |||
msg.append(" -f <file> ''" + lSep); | |||
msg.append(" -D<property>=<value> use value for given property" + lSep); | |||
msg.append(" -propertyfile <name> load all properties from file with -D" + lSep); | |||
msg.append(" properties taking precedence" + lSep); | |||
@@ -807,7 +811,7 @@ public class Main { | |||
*/ | |||
private static void printDescription(Project project) { | |||
if (project.getDescription() != null) { | |||
System.out.println(project.getDescription()); | |||
project.log(project.getDescription()); | |||
} | |||
} | |||
@@ -851,20 +855,21 @@ public class Main { | |||
} | |||
} | |||
printTargets(topNames, topDescriptions, "Main targets:", maxLength); | |||
printTargets(project, topNames, topDescriptions, "Main targets:", | |||
maxLength); | |||
//if there were no main targets, we list all subtargets | |||
//as it means nothing has a description | |||
if(topNames.size()==0) { | |||
printSubTargets=true; | |||
} | |||
if (printSubTargets) { | |||
printTargets(subNames, null, "Subtargets:", 0); | |||
printTargets(project, subNames, null, "Subtargets:", 0); | |||
} | |||
String defaultTarget = project.getDefaultTarget(); | |||
if (defaultTarget != null && !"".equals(defaultTarget)) { | |||
// shouldn't need to check but... | |||
System.out.println("Default target: " + defaultTarget); | |||
project.log("Default target: " + defaultTarget); | |||
} | |||
} | |||
@@ -906,8 +911,9 @@ public class Main { | |||
* position so they line up (so long as the names really | |||
* <i>are</i> shorter than this). | |||
*/ | |||
private static void printTargets(Vector names, Vector descriptions, | |||
String heading, int maxlen) { | |||
private static void printTargets(Project project,Vector names, | |||
Vector descriptions,String heading, | |||
int maxlen) { | |||
// now, start printing the targets and their descriptions | |||
String lSep = System.getProperty("line.separator"); | |||
// got a bit annoyed that I couldn't find a pad function | |||
@@ -926,6 +932,6 @@ public class Main { | |||
} | |||
msg.append(lSep); | |||
} | |||
System.out.println(msg.toString()); | |||
project.log(msg.toString()); | |||
} | |||
} |
@@ -160,6 +160,13 @@ public class Project { | |||
* Mapping is String to String. | |||
*/ | |||
private Hashtable userProperties = new Hashtable(); | |||
/** | |||
* Map of inherited "user" properties - that are those "user" | |||
* properties that have been created by tasks and not been set | |||
* from the command line or a GUI tool. | |||
* Mapping is String to String. | |||
*/ | |||
private Hashtable inheritedProperties = new Hashtable(); | |||
/** Map of references within the project (paths etc) (String to Object). */ | |||
private Hashtable references = new Hashtable(); | |||
@@ -350,13 +357,12 @@ public class Project { | |||
} | |||
/** | |||
* Returns a list of build listeners for the project. The returned | |||
* vector is "live" and so should not be modified. | |||
* Returns a list of build listeners for the project. | |||
* | |||
* @return a list of build listeners for the project | |||
*/ | |||
public Vector getBuildListeners() { | |||
return listeners; | |||
return (Vector) listeners.clone(); | |||
} | |||
/** | |||
@@ -416,7 +422,7 @@ public class Project { | |||
* @param value The new value of the property. | |||
* Must not be <code>null</code>. | |||
*/ | |||
public void setProperty(String name, String value) { | |||
public synchronized void setProperty(String name, String value) { | |||
// command line properties take precedence | |||
if (null != userProperties.get(name)) { | |||
log("Override ignored for user property " + name, MSG_VERBOSE); | |||
@@ -444,7 +450,7 @@ public class Project { | |||
* Must not be <code>null</code>. | |||
* @since 1.5 | |||
*/ | |||
public void setNewProperty(String name, String value) { | |||
public synchronized void setNewProperty(String name, String value) { | |||
if (null != properties.get(name)) { | |||
log("Override ignored for property " + name, MSG_VERBOSE); | |||
return; | |||
@@ -463,13 +469,30 @@ public class Project { | |||
* Must not be <code>null</code>. | |||
* @see #setProperty(String,String) | |||
*/ | |||
public void setUserProperty(String name, String value) { | |||
public synchronized void setUserProperty(String name, String value) { | |||
log("Setting ro project property: " + name + " -> " + | |||
value, MSG_DEBUG); | |||
userProperties.put(name, value); | |||
properties.put(name, value); | |||
} | |||
/** | |||
* Sets a user property, which cannot be overwritten by set/unset | |||
* property calls. Any previous value is overwritten. Also marks | |||
* these properties as properties that have not come from the | |||
* command line. | |||
* | |||
* @param name The name of property to set. | |||
* Must not be <code>null</code>. | |||
* @param value The new value of the property. | |||
* Must not be <code>null</code>. | |||
* @see #setProperty(String,String) | |||
*/ | |||
public synchronized void setInheritedProperty(String name, String value) { | |||
inheritedProperties.put(name, value); | |||
setUserProperty(name, value); | |||
} | |||
/** | |||
* Sets a property unless it is already defined as a user property | |||
* (in which case the method returns silently). | |||
@@ -532,7 +555,7 @@ public class Project { | |||
*/ | |||
public String getUserProperty(String name) { | |||
if (name == null) { | |||
return null; | |||
return null; | |||
} | |||
String property = (String) userProperties.get(name); | |||
return property; | |||
@@ -573,6 +596,54 @@ public class Project { | |||
return propertiesCopy; | |||
} | |||
/** | |||
* Copies all user properties that have been set on the command | |||
* line or a GUI tool from this instance to the Project instance | |||
* given as the argument. | |||
* | |||
* <p>To copy all "user" properties, you will also have to call | |||
* {@link #copyInheritedProperties copyInheritedProperties}.</p> | |||
* | |||
* @param other the project to copy the properties to. Must not be null. | |||
* | |||
* @since Ant 1.5 | |||
*/ | |||
public void copyUserProperties(Project other) { | |||
Enumeration e = userProperties.keys(); | |||
while (e.hasMoreElements()) { | |||
Object arg = e.nextElement(); | |||
if (inheritedProperties.containsKey(arg)) { | |||
continue; | |||
} | |||
Object value = userProperties.get(arg); | |||
other.setUserProperty(arg.toString(), value.toString()); | |||
} | |||
} | |||
/** | |||
* Copies all user properties that have not been set on the | |||
* command line or a GUI tool from this instance to the Project | |||
* instance given as the argument. | |||
* | |||
* <p>To copy all "user" properties, you will also have to call | |||
* {@link #copyUserProperties copyUserProperties}.</p> | |||
* | |||
* @param other the project to copy the properties to. Must not be null. | |||
* | |||
* @since Ant 1.5 | |||
*/ | |||
public void copyInheritedProperties(Project other) { | |||
Enumeration e = inheritedProperties.keys(); | |||
while (e.hasMoreElements()) { | |||
String arg = e.nextElement().toString(); | |||
if (other.getUserProperty(arg) != null) { | |||
continue; | |||
} | |||
Object value = inheritedProperties.get(arg); | |||
other.setInheritedProperty(arg, value.toString()); | |||
} | |||
} | |||
/** | |||
* Sets the default target of the project. | |||
* | |||
@@ -818,8 +889,26 @@ public class Project { | |||
MSG_VERBOSE); | |||
return; | |||
} else { | |||
int logLevel = MSG_WARN; | |||
if (old.getName().equals(taskClass.getName())) { | |||
ClassLoader oldLoader = old.getClassLoader(); | |||
ClassLoader newLoader = taskClass.getClassLoader(); | |||
// system classloader on older JDKs can be null | |||
if (oldLoader != null | |||
&& newLoader != null | |||
&& oldLoader instanceof AntClassLoader | |||
&& newLoader instanceof AntClassLoader | |||
&& ((AntClassLoader) oldLoader).getClasspath() | |||
.equals(((AntClassLoader) newLoader).getClasspath()) | |||
) { | |||
// same classname loaded from the same | |||
// classpath components | |||
logLevel = MSG_VERBOSE; | |||
} | |||
} | |||
log("Trying to override old definition of task " + taskName, | |||
MSG_WARN); | |||
logLevel); | |||
invalidateCreatedTasks(taskName); | |||
} | |||
} | |||
@@ -893,23 +982,24 @@ public class Project { | |||
* Must not be <code>null</code>. | |||
*/ | |||
public void addDataTypeDefinition(String typeName, Class typeClass) { | |||
Class old = (Class) dataClassDefinitions.get(typeName); | |||
if (null != old) { | |||
if (old.equals(typeClass)) { | |||
log("Ignoring override for datatype " + typeName | |||
+ ", it is already defined by the same class.", | |||
MSG_VERBOSE); | |||
return; | |||
} else { | |||
log("Trying to override old definition of datatype " | |||
+ typeName, MSG_WARN); | |||
synchronized(dataClassDefinitions) { | |||
Class old = (Class) dataClassDefinitions.get(typeName); | |||
if (null != old) { | |||
if (old.equals(typeClass)) { | |||
log("Ignoring override for datatype " + typeName | |||
+ ", it is already defined by the same class.", | |||
MSG_VERBOSE); | |||
return; | |||
} else { | |||
log("Trying to override old definition of datatype " | |||
+ typeName, MSG_WARN); | |||
} | |||
} | |||
dataClassDefinitions.put(typeName, typeClass); | |||
} | |||
String msg = " +User datatype: " + typeName + " " | |||
+ typeClass.getName(); | |||
log(msg, MSG_DEBUG); | |||
dataClassDefinitions.put(typeName, typeClass); | |||
} | |||
/** | |||
@@ -1677,22 +1767,24 @@ public class Project { | |||
* @param value The value of the reference. Must not be <code>null</code>. | |||
*/ | |||
public void addReference(String name, Object value) { | |||
Object old = references.get(name); | |||
if (old == value) { | |||
// no warning, this is not changing anything | |||
return; | |||
} | |||
if (old != null) { | |||
log("Overriding previous definition of reference to " + name, | |||
MSG_WARN); | |||
synchronized (references) { | |||
Object old = references.get(name); | |||
if (old == value) { | |||
// no warning, this is not changing anything | |||
return; | |||
} | |||
if (old != null) { | |||
log("Overriding previous definition of reference to " + name, | |||
MSG_WARN); | |||
} | |||
log("Adding reference: " + name + " -> " + value, MSG_DEBUG); | |||
references.put(name, value); | |||
} | |||
log("Adding reference: " + name + " -> " + value, MSG_DEBUG); | |||
references.put(name, value); | |||
} | |||
/** | |||
* Returns a map of the references in the project (String to Object). | |||
* The returned hashtable is "live" and so should not be modified. | |||
* The returned hashtable is "live" and so must not be modified. | |||
* | |||
* @return a map of the references in the project (String to Object). | |||
*/ | |||
@@ -1757,6 +1849,7 @@ public class Project { | |||
*/ | |||
public void fireBuildStarted() { | |||
BuildEvent event = new BuildEvent(this); | |||
Vector listeners = getBuildListeners(); | |||
for (int i = 0; i < listeners.size(); i++) { | |||
BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
listener.buildStarted(event); | |||
@@ -1772,6 +1865,7 @@ public class Project { | |||
public void fireBuildFinished(Throwable exception) { | |||
BuildEvent event = new BuildEvent(this); | |||
event.setException(exception); | |||
Vector listeners = getBuildListeners(); | |||
for (int i = 0; i < listeners.size(); i++) { | |||
BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
listener.buildFinished(event); | |||
@@ -1787,6 +1881,7 @@ public class Project { | |||
*/ | |||
protected void fireTargetStarted(Target target) { | |||
BuildEvent event = new BuildEvent(target); | |||
Vector listeners = getBuildListeners(); | |||
for (int i = 0; i < listeners.size(); i++) { | |||
BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
listener.targetStarted(event); | |||
@@ -1806,6 +1901,7 @@ public class Project { | |||
protected void fireTargetFinished(Target target, Throwable exception) { | |||
BuildEvent event = new BuildEvent(target); | |||
event.setException(exception); | |||
Vector listeners = getBuildListeners(); | |||
for (int i = 0; i < listeners.size(); i++) { | |||
BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
listener.targetFinished(event); | |||
@@ -1822,6 +1918,7 @@ public class Project { | |||
// register this as the current task on the current thread. | |||
registerThreadTask(Thread.currentThread(), task); | |||
BuildEvent event = new BuildEvent(task); | |||
Vector listeners = getBuildListeners(); | |||
for (int i = 0; i < listeners.size(); i++) { | |||
BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
listener.taskStarted(event); | |||
@@ -1844,6 +1941,7 @@ public class Project { | |||
System.err.flush(); | |||
BuildEvent event = new BuildEvent(task); | |||
event.setException(exception); | |||
Vector listeners = getBuildListeners(); | |||
for (int i = 0; i < listeners.size(); i++) { | |||
BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
listener.taskFinished(event); | |||
@@ -1863,6 +1961,7 @@ public class Project { | |||
private void fireMessageLoggedEvent(BuildEvent event, String message, | |||
int priority) { | |||
event.setMessage(message, priority); | |||
Vector listeners = getBuildListeners(); | |||
for (int i = 0; i < listeners.size(); i++) { | |||
BuildListener listener = (BuildListener) listeners.elementAt(i); | |||
listener.messageLogged(event); | |||
@@ -1919,9 +2018,9 @@ public class Project { | |||
* | |||
* @param thread the thread on which the task is registered. | |||
* @param task the task to be registered. | |||
* @since 1.102, Ant 1.5 | |||
* @since Ant 1.5 | |||
*/ | |||
public void registerThreadTask(Thread thread, Task task) { | |||
public synchronized void registerThreadTask(Thread thread, Task task) { | |||
if (task != null) { | |||
threadTasks.put(thread, task); | |||
} else { | |||
@@ -61,8 +61,8 @@ import org.xml.sax.AttributeList; | |||
import org.xml.sax.helpers.AttributeListImpl; | |||
/** | |||
* Wrapper class that holds the attributes of an element, its children, and | |||
* any text within it. It then takes care of configuring that element at | |||
* Wrapper class that holds the attributes of an element, its children, and | |||
* any text within it. It then takes care of configuring that element at | |||
* runtime. | |||
* | |||
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | |||
@@ -79,10 +79,12 @@ public class RuntimeConfigurable { | |||
private AttributeList attributes; | |||
/** Text appearing within the element. */ | |||
private StringBuffer characters = new StringBuffer(); | |||
/** Indicates if the wrapped object has been configured */ | |||
private boolean proxyConfigured = false; | |||
/** | |||
* Sole constructor creating a wrapper for the specified object. | |||
* | |||
* | |||
* @param proxy The element to configure. Must not be <code>null</code>. | |||
* @param elementTag The tag name generating this element. | |||
* Should not be <code>null</code>. | |||
@@ -90,21 +92,23 @@ public class RuntimeConfigurable { | |||
public RuntimeConfigurable(Object proxy, String elementTag) { | |||
wrappedObject = proxy; | |||
this.elementTag = elementTag; | |||
proxyConfigured = false; | |||
} | |||
/** | |||
* Sets the element to configure. This is used when the real type of | |||
* Sets the element to configure. This is used when the real type of | |||
* an element isn't known at the time of wrapper creation. | |||
* | |||
* | |||
* @param proxy The element to configure. Must not be <code>null</code>. | |||
*/ | |||
void setProxy(Object proxy) { | |||
wrappedObject = proxy; | |||
proxyConfigured = false; | |||
} | |||
/** | |||
* Sets the attributes for the wrapped element. | |||
* | |||
* | |||
* @param attributes List of attributes defined in the XML for this | |||
* element. May be <code>null</code>. | |||
*/ | |||
@@ -114,7 +118,7 @@ public class RuntimeConfigurable { | |||
/** | |||
* Returns the list of attributes for the wrapped element. | |||
* | |||
* | |||
* @return An AttributeList representing the attributes defined in the | |||
* XML for this element. May be <code>null</code>. | |||
*/ | |||
@@ -124,7 +128,7 @@ public class RuntimeConfigurable { | |||
/** | |||
* Adds a child element to the wrapped element. | |||
* | |||
* | |||
* @param child The child element wrapper to add to this one. | |||
* Must not be <code>null</code>. | |||
*/ | |||
@@ -134,9 +138,9 @@ public class RuntimeConfigurable { | |||
/** | |||
* Returns the child wrapper at the specified position within the list. | |||
* | |||
* | |||
* @param index The index of the child to return. | |||
* | |||
* | |||
* @return The child wrapper at position <code>index</code> within the | |||
* list. | |||
*/ | |||
@@ -146,8 +150,8 @@ public class RuntimeConfigurable { | |||
/** | |||
* Adds characters from #PCDATA areas to the wrapped element. | |||
* | |||
* @param data Text to add to the wrapped element. | |||
* | |||
* @param data Text to add to the wrapped element. | |||
* Should not be <code>null</code>. | |||
*/ | |||
public void addText(String data) { | |||
@@ -156,12 +160,12 @@ public class RuntimeConfigurable { | |||
/** | |||
* Adds characters from #PCDATA areas to the wrapped element. | |||
* | |||
* | |||
* @param buf A character array of the text within the element. | |||
* Must not be <code>null</code>. | |||
* @param start The start element in the array. | |||
* @param count The number of characters to read from the array. | |||
* | |||
* | |||
*/ | |||
public void addText(char[] buf, int start, int count) { | |||
addText(new String(buf, start, count)); | |||
@@ -169,7 +173,7 @@ public class RuntimeConfigurable { | |||
/** | |||
* Returns the tag name of the wrapped element. | |||
* | |||
* | |||
* @return The tag name of the wrapped element. This is unlikely | |||
* to be <code>null</code>, but may be. | |||
*/ | |||
@@ -183,47 +187,80 @@ public class RuntimeConfigurable { | |||
* and then each child is configured and added. Each time the | |||
* wrapper is configured, the attributes and text for it are | |||
* reset. | |||
* | |||
* | |||
* If the element has an <code>id</code> attribute, a reference | |||
* is added to the project as well. | |||
* | |||
* @param p The project containing the wrapped element. | |||
* | |||
* @param p The project containing the wrapped element. | |||
* Must not be <code>null</code>. | |||
* | |||
* | |||
* @exception BuildException if the configuration fails, for instance due | |||
* to invalid attributes or children, or text being added to | |||
* an element which doesn't accept it. | |||
*/ | |||
public void maybeConfigure(Project p) throws BuildException { | |||
maybeConfigure(p, true); | |||
} | |||
/** | |||
* Configures the wrapped element. The attributes and text for | |||
* the wrapped element are configured. Each time the wrapper is | |||
* configured, the attributes and text for it are reset. | |||
* | |||
* If the element has an <code>id</code> attribute, a reference | |||
* is added to the project as well. | |||
* | |||
* @param p The project containing the wrapped element. | |||
* Must not be <code>null</code>. | |||
* | |||
* @param configureChildren Whether to configure child elements as | |||
* well. if true, child elements will be configured after the | |||
* wrapped element. | |||
* | |||
* @exception BuildException if the configuration fails, for instance due | |||
* to invalid attributes or children, or text being added to | |||
* an element which doesn't accept it. | |||
*/ | |||
public void maybeConfigure(Project p, boolean configureChildren) | |||
throws BuildException { | |||
String id = null; | |||
if (proxyConfigured) { | |||
return; | |||
} | |||
if (attributes != null) { | |||
ProjectHelper.configure(wrappedObject, attributes, p); | |||
id = attributes.getValue("id"); | |||
attributes = null; | |||
} | |||
if (characters.length() != 0) { | |||
ProjectHelper.addText(p, wrappedObject, characters.toString()); | |||
characters.setLength(0); | |||
} | |||
Enumeration enum = children.elements(); | |||
while (enum.hasMoreElements()) { | |||
RuntimeConfigurable child | |||
RuntimeConfigurable child | |||
= (RuntimeConfigurable) enum.nextElement(); | |||
if (child.wrappedObject instanceof Task) { | |||
Task childTask = (Task) child.wrappedObject; | |||
childTask.setRuntimeConfigurableWrapper(child); | |||
childTask.maybeConfigure(); | |||
} else { | |||
child.maybeConfigure(p); | |||
} | |||
ProjectHelper.storeChild(p, wrappedObject, child.wrappedObject, | |||
child.getElementTag().toLowerCase(Locale.US)); | |||
} | |||
if (configureChildren) { | |||
if (child.wrappedObject instanceof Task) { | |||
Task childTask = (Task) child.wrappedObject; | |||
childTask.maybeConfigure(); | |||
} else { | |||
child.maybeConfigure(p); | |||
} | |||
ProjectHelper.storeChild(p, wrappedObject, child.wrappedObject, | |||
child.getElementTag() | |||
.toLowerCase(Locale.US)); | |||
} | |||
} | |||
if (id != null) { | |||
p.addReference(id, wrappedObject); | |||
} | |||
proxyConfigured = true; | |||
} | |||
} |
@@ -341,6 +341,15 @@ public abstract class Task extends ProjectComponent { | |||
invalid = true; | |||
} | |||
/** | |||
* Has this task been marked invalid? | |||
* | |||
* @since Ant 1.5 | |||
*/ | |||
protected final boolean isInvalid() { | |||
return invalid; | |||
} | |||
/** | |||
* Replacement element used if this task is invalidated. | |||
*/ | |||
@@ -95,7 +95,7 @@ public class UnknownElement extends Task { | |||
/** | |||
* Returns the name of the XML element which generated this unknown | |||
* element. | |||
* | |||
* | |||
* @return the name of the XML element which generated this unknown | |||
* element. | |||
*/ | |||
@@ -105,7 +105,7 @@ public class UnknownElement extends Task { | |||
/** | |||
* Creates the real object instance and child elements, then configures | |||
* the attributes and text of the real object. This unknown element | |||
* the attributes and text of the real object. This unknown element | |||
* is then replaced with the real object in the containing target's list | |||
* of children. | |||
* | |||
@@ -122,11 +122,6 @@ public class UnknownElement extends Task { | |||
handleChildren(realThing, wrapper); | |||
wrapper.maybeConfigure(project); | |||
if (realThing instanceof Task) { | |||
target.replaceChild(this, (Task) realThing); | |||
} else { | |||
target.replaceChild(this, wrapper); | |||
} | |||
} | |||
/** | |||
@@ -141,7 +136,7 @@ public class UnknownElement extends Task { | |||
super.handleOutput(line); | |||
} | |||
} | |||
/** | |||
* Handles error output sent to System.err by this task or its real task. | |||
* | |||
@@ -154,7 +149,7 @@ public class UnknownElement extends Task { | |||
super.handleErrorOutput(line); | |||
} | |||
} | |||
/** | |||
* Executes the real object if it's a task. If it's not a task | |||
* (e.g. a data type) then this method does nothing. | |||
@@ -185,13 +180,13 @@ public class UnknownElement extends Task { | |||
* Creates child elements, creates children of the children | |||
* (recursively), and sets attributes of the child elements. | |||
* | |||
* @param parent The configured object for the parent. | |||
* @param parent The configured object for the parent. | |||
* Must not be <code>null</code>. | |||
* | |||
* | |||
* @param parentWrapper The wrapper containing child wrappers | |||
* to be configured. Must not be <code>null</code> | |||
* if there are any children. | |||
* | |||
* | |||
* @exception BuildException if the children cannot be configured. | |||
*/ | |||
protected void handleChildren(Object parent, | |||
@@ -231,13 +226,13 @@ public class UnknownElement extends Task { | |||
} | |||
/** | |||
* Creates a named task or data type. If the real object is a task, | |||
* Creates a named task or data type. If the real object is a task, | |||
* it is configured up to the init() stage. | |||
* | |||
* | |||
* @param ue The unknown element to create the real object for. | |||
* Must not be <code>null</code>. | |||
* @param w Ignored in this implementation. | |||
* | |||
* | |||
* @return the task or data type represented by the given unknown element. | |||
*/ | |||
protected Object makeObject(UnknownElement ue, RuntimeConfigurable w) { | |||
@@ -253,7 +248,7 @@ public class UnknownElement extends Task { | |||
/** | |||
* Creates a named task and configures it up to the init() stage. | |||
* | |||
* | |||
* @param ue The UnknownElement to create the real task for. | |||
* Must not be <code>null</code>. | |||
* @param w Ignored. | |||
@@ -261,8 +256,8 @@ public class UnknownElement extends Task { | |||
* a task. If this is <code>true</code> and the | |||
* task name is not recognised, a BuildException | |||
* is thrown. | |||
* | |||
* @return the task specified by the given unknown element, or | |||
* | |||
* @return the task specified by the given unknown element, or | |||
* <code>null</code> if the task name is not recognised and | |||
* onTopLevel is <code>false</code>. | |||
*/ | |||
@@ -285,13 +280,13 @@ public class UnknownElement extends Task { | |||
/** | |||
* Returns a very verbose exception for when a task/data type cannot | |||
* be found. | |||
* | |||
* | |||
* @param what The kind of thing being created. For example, when | |||
* a task name could not be found, this would be | |||
* <code>"task"</code>. Should not be <code>null</code>. | |||
* @param elementName The name of the element which could not be found. | |||
* Should not be <code>null</code>. | |||
* | |||
* | |||
* @return a detailed description of what might have caused the problem. | |||
*/ | |||
protected BuildException getNotFoundException(String what, | |||
@@ -320,7 +315,7 @@ public class UnknownElement extends Task { | |||
+ " Fix: upgrade to at least the latest release version of Ant" + lSep | |||
+ " - The task is not an Ant core or optional task " + lSep | |||
+ " and needs to be declared using <taskdef>." + lSep | |||
+ lSep | |||
+ lSep | |||
+ "Remember that for JAR files to be visible to Ant tasks implemented" + lSep | |||
+ "in ANT_HOME/lib, the files must be in the same directory or on the" + lSep | |||
+ "classpath" + lSep | |||
@@ -346,7 +341,7 @@ public class UnknownElement extends Task { | |||
/** | |||
* Returns the task instance after it has been created and if it is a task. | |||
* | |||
* @return a task instance or <code>null</code> if the real object is not | |||
* @return a task instance or <code>null</code> if the real object is not | |||
* a task. | |||
*/ | |||
public Task getTask() { | |||
@@ -155,10 +155,6 @@ public final class LineContains | |||
break; | |||
} | |||
} | |||
line = readLine(); | |||
} | |||
if (goodLine != null) { | |||
line = goodLine; | |||
return read(); | |||
}; | |||
} | |||
@@ -424,6 +424,11 @@ public abstract class AbstractCvsTask extends Task { | |||
return stringBuffer.toString(); | |||
} | |||
/** | |||
* The CVSROOT variable. | |||
* | |||
* @param root | |||
*/ | |||
public void setCvsRoot(String root) { | |||
// Check if not real cvsroot => set it to null | |||
@@ -441,6 +446,11 @@ public abstract class AbstractCvsTask extends Task { | |||
return this.cvsRoot; | |||
} | |||
/** | |||
* The CVS_RSH variable. | |||
* | |||
* @param rsh | |||
*/ | |||
public void setCvsRsh(String rsh) { | |||
// Check if not real cvsrsh => set it to null | |||
if (rsh != null) { | |||
@@ -457,6 +467,11 @@ public abstract class AbstractCvsTask extends Task { | |||
return this.cvsRsh; | |||
} | |||
/** | |||
* Port used by CVS to communicate with the server. | |||
* | |||
* @param port | |||
*/ | |||
public void setPort(int port){ | |||
this.port = port; | |||
} | |||
@@ -466,6 +481,11 @@ public abstract class AbstractCvsTask extends Task { | |||
return this.port; | |||
} | |||
/** | |||
* Password file to read passwords from. | |||
* | |||
* @param passFile | |||
*/ | |||
public void setPassfile(File passFile){ | |||
this.passFile = passFile; | |||
} | |||
@@ -475,6 +495,11 @@ public abstract class AbstractCvsTask extends Task { | |||
return this.passFile; | |||
} | |||
/** | |||
* The directory where the checked out files should be placed. | |||
* | |||
* @param dest | |||
*/ | |||
public void setDest(File dest) { | |||
this.dest = dest; | |||
} | |||
@@ -484,6 +509,11 @@ public abstract class AbstractCvsTask extends Task { | |||
return this.dest; | |||
} | |||
/** | |||
* The package/module to operate upon. | |||
* | |||
* @param p | |||
*/ | |||
public void setPackage(String p) { | |||
this.cvsPackage = p; | |||
} | |||
@@ -493,6 +523,10 @@ public abstract class AbstractCvsTask extends Task { | |||
return this.cvsPackage; | |||
} | |||
/** | |||
* The tag of the package/module to operate upon. | |||
* @param p | |||
*/ | |||
public void setTag(String p) { | |||
// Check if not real tag => set it to null | |||
if (p != null && p.trim().length() > 0) { | |||
@@ -514,6 +548,10 @@ public abstract class AbstractCvsTask extends Task { | |||
} | |||
/** | |||
* Use the most recent revision no later than the given date. | |||
* @param p | |||
*/ | |||
public void setDate(String p) { | |||
if (p != null && p.trim().length() > 0) { | |||
addCommandArgument("-D"); | |||
@@ -521,6 +559,10 @@ public abstract class AbstractCvsTask extends Task { | |||
} | |||
} | |||
/** | |||
* The CVS command to execute. | |||
* @param c | |||
*/ | |||
public void setCommand(String c) { | |||
this.command = c; | |||
} | |||
@@ -528,26 +570,54 @@ public abstract class AbstractCvsTask extends Task { | |||
return this.command; | |||
} | |||
/** | |||
* If true, suppress informational messages. | |||
* @param q | |||
*/ | |||
public void setQuiet(boolean q) { | |||
quiet = q; | |||
} | |||
/** | |||
* If true, report only and don't change any files. | |||
* | |||
* @param ne | |||
*/ | |||
public void setNoexec(boolean ne) { | |||
noexec = ne; | |||
} | |||
/** | |||
* The file to direct standard output from the command. | |||
* @param output | |||
*/ | |||
public void setOutput(File output) { | |||
this.output = output; | |||
} | |||
/** | |||
* The file to direct standard error from the command. | |||
* | |||
* @param error | |||
*/ | |||
public void setError(File error) { | |||
this.error = error; | |||
} | |||
/** | |||
* Whether to append output/error when redirecting to a file. | |||
* @param value | |||
*/ | |||
public void setAppend(boolean value){ | |||
this.append = value; | |||
} | |||
/** | |||
* Stop the build process if the command exits with | |||
* a return code other than 0. | |||
* Defaults to false. | |||
* @param failOnError | |||
*/ | |||
public void setFailOnError(boolean failOnError) { | |||
this.failOnError = failOnError; | |||
} | |||
@@ -581,6 +651,10 @@ public abstract class AbstractCvsTask extends Task { | |||
vecCommandlines.removeElement(c); | |||
} | |||
/** | |||
* Adds direct command-line to execute. | |||
* @param c | |||
*/ | |||
public void addConfiguredCommandline(Commandline c) { | |||
this.addConfiguredCommandline(c, false); | |||
} | |||
@@ -611,6 +685,8 @@ public abstract class AbstractCvsTask extends Task { | |||
} | |||
/** | |||
* If true, this is the same as compressionlevel="3". | |||
* | |||
* @param usecomp If true, turns on compression using default | |||
* level, AbstractCvsTask.DEFAULT_COMPRESSION_LEVEL. | |||
*/ | |||
@@ -130,18 +130,16 @@ public class Ant extends Task { | |||
private PrintStream out = null; | |||
/** | |||
* If true, inherit all properties from parent Project | |||
* If false, inherit only userProperties and those defined | |||
* inside the ant call itself | |||
* If true, pass all properties to the new Ant project. | |||
* Defaults to true. | |||
*/ | |||
public void setInheritAll(boolean value) { | |||
inheritAll = value; | |||
} | |||
/** | |||
* If true, inherit all references from parent Project | |||
* If false, inherit only those defined | |||
* inside the ant call itself | |||
* If true, pass all references to the new Ant project. | |||
* Defaults to false. | |||
*/ | |||
public void setInheritRefs(boolean value) { | |||
inheritRefs = value; | |||
@@ -255,14 +253,8 @@ public class Ant extends Task { | |||
newProject.addDataTypeDefinition(typeName, typeClass); | |||
} | |||
// set user-defined | |||
Hashtable props = getProject().getUserProperties(); | |||
e = props.keys(); | |||
while (e.hasMoreElements()) { | |||
String arg = e.nextElement().toString(); | |||
String value = props.get(arg).toString(); | |||
newProject.setUserProperty(arg, value); | |||
} | |||
// set user-defined properties | |||
getProject().copyUserProperties(newProject); | |||
if (!inheritAll) { | |||
// set Java built-in properties separately, | |||
@@ -272,7 +264,7 @@ public class Ant extends Task { | |||
} else { | |||
// set all properties from calling project | |||
props = getProject().getProperties(); | |||
Hashtable props = getProject().getProperties(); | |||
e = props.keys(); | |||
while (e.hasMoreElements()) { | |||
String arg = e.nextElement().toString(); | |||
@@ -280,10 +272,12 @@ public class Ant extends Task { | |||
// basedir and ant.file get special treatment in execute() | |||
continue; | |||
} | |||
String value = props.get(arg).toString(); | |||
// don't re-set user properties, avoid the warning message | |||
if (newProject.getProperty(arg) == null){ | |||
// no user property | |||
newProject.setProperty(arg, value); | |||
newProject.setNewProperty(arg, value); | |||
} | |||
} | |||
} | |||
@@ -399,6 +393,7 @@ public class Ant extends Task { | |||
p.setProject(newProject); | |||
p.execute(); | |||
} | |||
getProject().copyInheritedProperties(newProject); | |||
} | |||
/** | |||
@@ -492,16 +487,19 @@ public class Ant extends Task { | |||
} | |||
/** | |||
* Set the dir attribute. | |||
* The directory to use as a basedir for the new Ant project. | |||
* Defaults to the current project's basedir, unless inheritall | |||
* has been set to false, in which case it doesn't have a default | |||
* value. This will override the basedir setting of the called project. | |||
*/ | |||
public void setDir(File d) { | |||
this.dir = d; | |||
} | |||
/** | |||
* set the build file, it can be either absolute or relative. | |||
* If it is absolute, <tt>dir</tt> will be ignored, if it is | |||
* relative it will be resolved relative to <tt>dir</tt>. | |||
* The build file to use. | |||
* Defaults to "build.xml". This file is expected to be a filename relative | |||
* to the dir attribute given. | |||
*/ | |||
public void setAntfile(String s) { | |||
// @note: it is a string and not a file to handle relative/absolute | |||
@@ -511,23 +509,27 @@ public class Ant extends Task { | |||
} | |||
/** | |||
* set the target to execute. If none is defined it will | |||
* execute the default target of the build file | |||
* The target of the new Ant project to execute. | |||
* Defaults to the new project's default target. | |||
*/ | |||
public void setTarget(String s) { | |||
this.target = s; | |||
} | |||
/** | |||
* Set the name of a log file. This will be resolved relative to | |||
* the dir attribute if specified, relative to the current | |||
* project's basedir otherwise. | |||
* Filename to write the output to. | |||
* This is relative to the value of the dir attribute | |||
* if it has been set or to the base directory of the | |||
* current project otherwise. | |||
*/ | |||
public void setOutput(String s) { | |||
this.output = s; | |||
} | |||
/** create a property to pass to the new project as a 'user property' */ | |||
/** | |||
* Property to pass to the new project. | |||
* The property is passed as a 'user property' | |||
*/ | |||
public Property createProperty() { | |||
if (newProject == null) { | |||
reinit(); | |||
@@ -540,8 +542,8 @@ public class Ant extends Task { | |||
} | |||
/** | |||
* create a reference element that identifies a data type that | |||
* should be carried over to the new project. | |||
* Reference element identifying a data type to carry | |||
* over to the new project. | |||
*/ | |||
public void addReference(Reference r) { | |||
references.addElement(r); | |||
@@ -94,7 +94,7 @@ public class Available extends Task implements Condition { | |||
private boolean ignoreSystemclasses = false; | |||
/** | |||
* Set the classpath to be used when searching for classes and resources | |||
* Set the classpath to be used when searching for classes and resources. | |||
* | |||
* @param classpath an Ant Path object containing the search path. | |||
*/ | |||
@@ -103,8 +103,7 @@ public class Available extends Task implements Condition { | |||
} | |||
/** | |||
* Create a classpath object to be configured by Ant. The resulting | |||
* path will be used when searching for classes or resources | |||
* Classpath to be used when searching for classes and resources. | |||
* | |||
* @return an empty Path instance to be configured by Ant. | |||
*/ | |||
@@ -126,7 +125,7 @@ public class Available extends Task implements Condition { | |||
} | |||
/** | |||
* Set the path to use when looking for a file | |||
* Set the path to use when looking for a file. | |||
* | |||
* @param filepath a Path instance containing the search path for files. | |||
*/ | |||
@@ -135,7 +134,7 @@ public class Available extends Task implements Condition { | |||
} | |||
/** | |||
* Create a filepath to be configured by Ant. | |||
* Path to search for file resources. | |||
* | |||
* @return a new Path instance which Ant will configure with a file search | |||
* path. | |||
@@ -158,7 +157,7 @@ public class Available extends Task implements Condition { | |||
} | |||
/** | |||
* Set the value to be given to the property of the desired resource is | |||
* Set the value to be given to the property if the desired resource is | |||
* available. | |||
* | |||
* @param value the value to be given. | |||
@@ -191,7 +190,7 @@ public class Available extends Task implements Condition { | |||
} | |||
/** | |||
* Set the name of a Java resouirce which is required to set the property. | |||
* Set the name of a Java resource which is required to set the property. | |||
* | |||
* @param resource the name of a resource which is required to be available. | |||
*/ | |||
@@ -213,7 +212,7 @@ public class Available extends Task implements Condition { | |||
} | |||
/** | |||
* Set what type of file is required - either a directory or a file. | |||
* Set what type of file is required - either directory or file. | |||
* | |||
* @param type an instance of the FileDir enumeratedAttribute indicating | |||
* whether the file required is to be a directory or a plain | |||
@@ -62,7 +62,7 @@ import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.bzip2.CBZip2OutputStream; | |||
/** | |||
* Compresses a file with the BZip2 algorithm. Normally used to compress | |||
* Compresses a file with the BZIP2 algorithm. Normally used to compress | |||
* non-compressed archives such as TAR files. | |||
* | |||
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | |||
@@ -94,17 +94,23 @@ public class Basename extends Task { | |||
private String property; | |||
private String suffix; | |||
// The setter for the `file' attribute | |||
/** | |||
* File or directory to get base name from. | |||
*/ | |||
public void setFile(File file) { | |||
this.file = file; | |||
} | |||
// The setter for the `property' attribute | |||
/** | |||
* Property to set base name to. | |||
*/ | |||
public void setProperty(String property) { | |||
this.property = property ; | |||
} | |||
// The setter for the `suffix' attribute | |||
/** | |||
* Optional suffix to remove from base name. | |||
*/ | |||
public void setSuffix(String suffix) { | |||
this.suffix = suffix; | |||
} | |||
@@ -89,7 +89,7 @@ public class BuildNumber | |||
/** | |||
* Specify the file in which the build numberis stored. Defaults to | |||
* The file in which the build number is stored. Defaults to | |||
* "build.number" if not specified. | |||
* | |||
* @param file the file in which build number is stored. | |||
@@ -1,7 +1,7 @@ | |||
/* | |||
* The Apache Software License, Version 1.1 | |||
* | |||
* Copyright (c) 2001-2002 The Apache Software Foundation. All rights | |||
* Copyright (c) 2001-2002 The Apache Software Foundation. All rights | |||
* reserved. | |||
* | |||
* Redistribution and use in source and binary forms, with or without | |||
@@ -80,7 +80,7 @@ import java.io.IOException; | |||
*/ | |||
public class CVSPass extends Task { | |||
/** CVS Root */ | |||
private String cvsRoot = null; | |||
private String cvsRoot = null; | |||
/** Password file to add password to */ | |||
private File passFile = null; | |||
/** Password to add to file */ | |||
@@ -103,7 +103,7 @@ public class CVSPass extends Task { | |||
192, 159, 244, 239, 185, 168, 215, 144, 139, 165, 180, 157, 147, 186, 214, 176, | |||
227, 231, 219, 169, 175, 156, 206, 198, 129, 164, 150, 210, 154, 177, 134, 127, | |||
182, 128, 158, 208, 162, 132, 167, 209, 149, 241, 153, 251, 237, 236, 171, 195, | |||
243, 233, 253, 240, 194, 250, 191, 155, 142, 137, 245, 235, 163, 242, 178, 152 | |||
243, 233, 253, 240, 194, 250, 191, 155, 142, 137, 245, 235, 163, 242, 178, 152 | |||
}; | |||
/** | |||
@@ -150,7 +150,7 @@ public class CVSPass extends Task { | |||
} | |||
} | |||
String pwdfile = buf.toString() + cvsRoot + " A" | |||
String pwdfile = buf.toString() + cvsRoot + " A" | |||
+ mangle(password); | |||
log("Writing -> " + pwdfile , Project.MSG_DEBUG); | |||
@@ -181,21 +181,21 @@ public class CVSPass extends Task { | |||
} | |||
/** | |||
* Sets cvs root to be added to the password file | |||
* The CVS repository to add an entry for. | |||
*/ | |||
public void setCvsroot(String cvsRoot) { | |||
this.cvsRoot = cvsRoot; | |||
} | |||
/** | |||
* Sets the password file attribute. | |||
* Password file to add the entry to. | |||
*/ | |||
public void setPassfile(File passFile) { | |||
this.passFile = passFile; | |||
} | |||
/** | |||
* Sets the password attribute. | |||
* Password to be added to the password file. | |||
*/ | |||
public void setPassword(String password) { | |||
this.password = password; | |||
@@ -93,16 +93,16 @@ public class CallTarget extends Task { | |||
private boolean inheritRefs = false; | |||
/** | |||
* If true, inherit all properties from parent Project | |||
* If false, inherit only userProperties and those defined | |||
* inside the antcall call itself | |||
**/ | |||
* If true, pass all properties to the new Ant project. | |||
* Defaults to true. | |||
*/ | |||
public void setInheritAll(boolean inherit) { | |||
inheritAll = inherit; | |||
} | |||
/** | |||
* set the inherit refs flag | |||
* If true, pass all references to the new Ant project. | |||
* Defaults to false | |||
* @param inheritRefs new value | |||
*/ | |||
public void setInheritRefs(boolean inheritRefs) { | |||
@@ -145,7 +145,7 @@ public class CallTarget extends Task { | |||
} | |||
/** | |||
* Create a nested param element. | |||
* Property to pass to the invoked target. | |||
*/ | |||
public Property createParam() { | |||
if (callee == null) { | |||
@@ -154,10 +154,9 @@ public class CallTarget extends Task { | |||
return callee.createProperty(); | |||
} | |||
/** | |||
* create a reference element that identifies a data type that | |||
* should be carried over to the new project. | |||
* | |||
/** | |||
* Reference element identifying a data type to carry | |||
* over to the invoked target. | |||
* @since Ant 1.5 | |||
*/ | |||
public void addReference(Ant.Reference r) { | |||
@@ -168,7 +167,7 @@ public class CallTarget extends Task { | |||
} | |||
/** | |||
* Sets the target attribute, required. | |||
* Target to execute, required. | |||
*/ | |||
public void setTarget(String target) { | |||
subTarget = target; | |||
@@ -73,8 +73,7 @@ import org.apache.tools.ant.taskdefs.condition.Condition; | |||
import org.apache.tools.ant.types.FileSet; | |||
/** | |||
* This task can be used to create checksums for files. | |||
* It can also be used to verify checksums. | |||
* Used to create or verify file checksums. | |||
* | |||
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | |||
* | |||
@@ -129,6 +128,10 @@ public class Checksum extends MatchingTask implements Condition { | |||
* is this task being used as a nested condition element? | |||
*/ | |||
private boolean isCondition; | |||
/** | |||
* Size of the read buffer to use. | |||
*/ | |||
private int readBufferSize = 8 * 1024; | |||
/** | |||
* Sets the file for which the checksum is to be calculated. | |||
@@ -138,8 +141,8 @@ public class Checksum extends MatchingTask implements Condition { | |||
} | |||
/** | |||
* Sets the MessageDigest algorithm to be used | |||
* to calculate the checksum. | |||
* Specifies the algorithm to be used to compute the checksum. | |||
* Defaults to "MD5". Other popular algorithms like "SHA" may be used as well. | |||
*/ | |||
public void setAlgorithm(String algorithm) { | |||
this.algorithm = algorithm; | |||
@@ -154,22 +157,22 @@ public class Checksum extends MatchingTask implements Condition { | |||
} | |||
/** | |||
* Sets the File Extension that is be to used to | |||
* create or identify destination file | |||
* Sets the file extension that is be to used to | |||
* create or identify destination file. | |||
*/ | |||
public void setFileext(String fileext) { | |||
this.fileext = fileext; | |||
} | |||
/** | |||
* Sets the property to hold the generated checksum | |||
* Sets the property to hold the generated checksum. | |||
*/ | |||
public void setProperty(String property) { | |||
this.property = property; | |||
} | |||
/** | |||
* Sets verify property. This project property holds | |||
* Sets the verify property. This project property holds | |||
* the result of a checksum verification - "true" or "false" | |||
*/ | |||
public void setVerifyproperty(String verifyProperty) { | |||
@@ -186,7 +189,14 @@ public class Checksum extends MatchingTask implements Condition { | |||
} | |||
/** | |||
* Adds a set of files (nested fileset attribute). | |||
* The size of the read buffer to use. | |||
*/ | |||
public void setReadBufferSize(int size) { | |||
this.readBufferSize = size; | |||
} | |||
/** | |||
* Files to generate checksums for. | |||
*/ | |||
public void addFileset(FileSet set) { | |||
filesets.addElement(set); | |||
@@ -356,6 +366,7 @@ public class Checksum extends MatchingTask implements Condition { | |||
boolean checksumMatches = true; | |||
FileInputStream fis = null; | |||
FileOutputStream fos = null; | |||
byte[] buf = new byte[readBufferSize]; | |||
try { | |||
for (Enumeration e = includeFileMap.keys(); e.hasMoreElements();) { | |||
messageDigest.reset(); | |||
@@ -366,8 +377,8 @@ public class Checksum extends MatchingTask implements Condition { | |||
fis = new FileInputStream(src); | |||
DigestInputStream dis = new DigestInputStream(fis, | |||
messageDigest); | |||
while (dis.read() != -1) { | |||
; | |||
while (dis.read(buf, 0, readBufferSize) != -1) { | |||
; | |||
} | |||
dis.close(); | |||
fis.close(); | |||
@@ -75,6 +75,8 @@ import org.apache.tools.ant.types.PatternSet; | |||
* @since Ant 1.1 | |||
* | |||
* @ant.task category="filesystem" | |||
* @todo Refactor so it does not extend from ExecuteOn and then turn around | |||
* and unsupport several attributes. | |||
*/ | |||
public class Chmod extends ExecuteOn { | |||
@@ -99,6 +101,10 @@ public class Chmod extends ExecuteOn { | |||
defaultSet.setProject(project); | |||
} | |||
/** | |||
* The file or single directory of which the permissions must be changed. | |||
* @param src | |||
*/ | |||
public void setFile(File src) { | |||
FileSet fs = new FileSet(); | |||
fs.setDir(new File(src.getParent())); | |||
@@ -106,17 +112,25 @@ public class Chmod extends ExecuteOn { | |||
addFileset(fs); | |||
} | |||
/** | |||
* The directory which holds the files whose permissions must be changed. | |||
* @param src | |||
*/ | |||
public void setDir(File src) { | |||
defaultSet.setDir(src); | |||
} | |||
/** | |||
* The new permissions. | |||
* @param perm | |||
*/ | |||
public void setPerm(String perm) { | |||
createArg().setValue(perm); | |||
havePerm = true; | |||
} | |||
/** | |||
* add a name entry on the include list | |||
* Add a name entry on the include list. | |||
*/ | |||
public PatternSet.NameEntry createInclude() { | |||
defaultSetDefined = true; | |||
@@ -124,7 +138,7 @@ public class Chmod extends ExecuteOn { | |||
} | |||
/** | |||
* add a name entry on the exclude list | |||
* Add a name entry on the exclude list. | |||
*/ | |||
public PatternSet.NameEntry createExclude() { | |||
defaultSetDefined = true; | |||
@@ -132,7 +146,7 @@ public class Chmod extends ExecuteOn { | |||
} | |||
/** | |||
* add a set of patterns | |||
* Add a set of patterns. | |||
*/ | |||
public PatternSet createPatternSet() { | |||
defaultSetDefined = true; | |||
@@ -218,17 +232,28 @@ public class Chmod extends ExecuteOn { | |||
} | |||
} | |||
/** | |||
* Not supported. | |||
* @param e | |||
*/ | |||
public void setExecutable(String e) { | |||
throw new BuildException(taskType | |||
+ " doesn\'t support the executable attribute", location); | |||
} | |||
/** | |||
* Not supported. | |||
* @param cmdl | |||
*/ | |||
public void setCommand(Commandline cmdl) { | |||
throw new BuildException(taskType | |||
+ " doesn\'t support the command attribute", location); | |||
} | |||
/** | |||
* Not supported. | |||
* @param skip | |||
*/ | |||
public void setSkipEmptyFilesets(boolean skip) { | |||
throw new BuildException(taskType | |||
+ " doesn\'t support the skipemptyfileset attribute", location); | |||
@@ -142,14 +142,14 @@ public class Concat extends Task { | |||
// Attribute setters. | |||
/** | |||
* Sets the destination file for the stream. | |||
* Sets the destination file, or uses the console if not specified. | |||
*/ | |||
public void setDestfile(File destinationFile) { | |||
this.destinationFile = destinationFile; | |||
} | |||
/** | |||
* Sets the behavior when the destination file exists, if set to | |||
* Sets the behavior when the destination file exists. If set to | |||
* <code>true</code> the stream data will be appended to the | |||
* existing file, otherwise the existing file will be | |||
* overwritten. Defaults to <code>false</code>. | |||
@@ -169,14 +169,14 @@ public class Concat extends Task { | |||
// Nested element creators. | |||
/** | |||
* Adds a set of files (nested fileset element). | |||
* Set of files to concatenate. | |||
*/ | |||
public void addFileset(FileSet set) { | |||
fileSets.addElement(set); | |||
} | |||
/** | |||
* Adds a list of files (nested filelist element). | |||
* List of files to concatenate. | |||
*/ | |||
public void addFilelist(FileList list) { | |||
fileSets.addElement(list); | |||
@@ -60,8 +60,8 @@ import org.apache.tools.ant.taskdefs.condition.Condition; | |||
import org.apache.tools.ant.taskdefs.condition.ConditionBase; | |||
/** | |||
* <condition> task as a generalization of <available> and | |||
* <uptodate>. | |||
* Task to set a property conditionally using <uptodate>, <available>, | |||
* and many other supported conditions. | |||
* | |||
* <p>This task supports boolean logic as well as pluggable conditions | |||
* to decide, whether a property should be set.</p> | |||
@@ -89,7 +89,8 @@ public class ConditionTask extends ConditionBase { | |||
public void setProperty(String p) {property = p;} | |||
/** | |||
* The value for the property to set. Defaults to "true". | |||
* The value for the property to set, if condition evaluates to true. | |||
* Defaults to "true". | |||
* | |||
* @since Ant 1.4 | |||
*/ | |||
@@ -102,17 +103,17 @@ public class ConditionTask extends ConditionBase { | |||
*/ | |||
public void execute() throws BuildException { | |||
if (countConditions() > 1) { | |||
throw new BuildException("You must not nest more than one " | |||
throw new BuildException("You must not nest more than one " | |||
+ "condition into <condition>"); | |||
} | |||
if (countConditions() < 1) { | |||
throw new BuildException("You must nest a condition into " | |||
throw new BuildException("You must nest a condition into " | |||
+ "<condition>"); | |||
} | |||
if (property == null) { | |||
throw new BuildException("The property attribute is required."); | |||
} | |||
Condition c = (Condition) getConditions().nextElement(); | |||
if (c.eval()) { | |||
log("Condition true; setting "+property+" to "+value, | |||
@@ -154,7 +154,7 @@ public class Copy extends Task { | |||
} | |||
/** | |||
* Create a nested filterchain | |||
* Adds a FilterChain. | |||
*/ | |||
public FilterChain createFilterChain() { | |||
FilterChain filterChain = new FilterChain(); | |||
@@ -163,7 +163,7 @@ public class Copy extends Task { | |||
} | |||
/** | |||
* Create a nested filterset | |||
* Adds a filterset. | |||
*/ | |||
public FilterSet createFilterSet() { | |||
FilterSet filterSet = new FilterSet(); | |||
@@ -217,7 +217,7 @@ public class Copy extends Task { | |||
} | |||
/** | |||
* Sets filtering. | |||
* If true, enables filtering. | |||
*/ | |||
public void setFiltering(boolean filtering) { | |||
this.filtering = filtering; | |||
@@ -260,7 +260,7 @@ public class Copy extends Task { | |||
} | |||
/** | |||
* Note errors to the output, but keep going | |||
* If false, note errors to the output but keep going. | |||
* @param failonerror true or false | |||
*/ | |||
public void setFailOnError(boolean failonerror) { | |||
@@ -268,14 +268,14 @@ public class Copy extends Task { | |||
} | |||
/** | |||
* Adds a set of files (nested fileset attribute). | |||
* Adds a set of files to copy. | |||
*/ | |||
public void addFileset(FileSet set) { | |||
filesets.addElement(set); | |||
} | |||
/** | |||
* Defines the FileNameMapper to use (nested mapper element). | |||
* Defines the mapper to map source to destination files. | |||
*/ | |||
public Mapper createMapper() throws BuildException { | |||
if (mapperElement != null) { | |||
@@ -55,6 +55,8 @@ | |||
package org.apache.tools.ant.taskdefs; | |||
/** | |||
* Performs operations on a CVS repository. | |||
* | |||
* original 1.20 | |||
* | |||
* NOTE: This implementation has been moved to AbstractCvsTask with | |||
@@ -1,7 +1,7 @@ | |||
/* | |||
* The Apache Software License, Version 1.1 | |||
* | |||
* Copyright (c) 2001-2002 The Apache Software Foundation. All rights | |||
* Copyright (c) 2001-2002 The Apache Software Foundation. All rights | |||
* reserved. | |||
* | |||
* Redistribution and use in source and binary forms, with or without | |||
@@ -86,18 +86,22 @@ public abstract class Definer extends Task { | |||
private boolean reverseLoader = false; | |||
private String loaderId = null; | |||
private String classpathId = null; | |||
private static final String REUSE_LOADER_REF = "ant.reuse.loader"; | |||
/** | |||
* @deprecated stop using this attribute | |||
* @ant.attribute ignore="true" | |||
*/ | |||
public void setReverseLoader(boolean reverseLoader) { | |||
this.reverseLoader = reverseLoader; | |||
log("The reverseloader attribute is DEPRECATED. It will be removed", | |||
log("The reverseloader attribute is DEPRECATED. It will be removed", | |||
Project.MSG_WARN); | |||
} | |||
/** | |||
* Set the classpath to be used when searching for component being defined | |||
* | |||
* | |||
* @param classpath an Ant Path object containing the classpath. | |||
*/ | |||
public void setClasspath(Path classpath) { | |||
@@ -108,6 +112,9 @@ public abstract class Definer extends Task { | |||
} | |||
} | |||
/** | |||
* Create the classpath to be used when searching for component being defined | |||
*/ | |||
public Path createClasspath() { | |||
if (this.classpath == null) { | |||
this.classpath = new Path(project); | |||
@@ -115,6 +122,10 @@ public abstract class Definer extends Task { | |||
return this.classpath.createPath(); | |||
} | |||
/** | |||
* reference to a classpath to use when loading the files. | |||
* To actually share the same loader, set loaderref as well | |||
*/ | |||
public void setClasspathRef(Reference r) { | |||
classpathId=r.getRefId(); | |||
createClasspath().setRefid(r); | |||
@@ -124,9 +135,9 @@ public abstract class Definer extends Task { | |||
* Use the reference to locate the loader. If the loader is not | |||
* found, taskdef will use the specified classpath and register it | |||
* with the specified name. | |||
* | |||
* | |||
* This allow multiple taskdef/typedef to use the same class loader, | |||
* so they can be used togheter. It eliminate the need to | |||
* so they can be used together. It eliminate the need to | |||
* put them in the CLASSPATH. | |||
* | |||
* @since Ant 1.5 | |||
@@ -135,7 +146,7 @@ public abstract class Definer extends Task { | |||
loaderId = r.getRefId(); | |||
} | |||
public void execute() throws BuildException { | |||
AntClassLoader al = createLoader(); | |||
@@ -159,31 +170,31 @@ public abstract class Definer extends Task { | |||
+ "together with file or resource."; | |||
throw new BuildException(msg, location); | |||
} | |||
if (file != null && resource != null) { | |||
String msg = "You must not specify both, file and " | |||
+ "resource."; | |||
throw new BuildException(msg, location); | |||
} | |||
Properties props = new Properties(); | |||
if (file != null) { | |||
log("Loading definitions from file " + file, | |||
log("Loading definitions from file " + file, | |||
Project.MSG_VERBOSE); | |||
is = new FileInputStream(file); | |||
if (is == null) { | |||
log("Could not load definitions from file " + file | |||
+ ". It doesn\'t exist.", Project.MSG_WARN); | |||
} | |||
} | |||
} | |||
if (resource != null) { | |||
log("Loading definitions from resource " + resource, | |||
log("Loading definitions from resource " + resource, | |||
Project.MSG_VERBOSE); | |||
is = al.getResourceAsStream(resource); | |||
if (is == null) { | |||
log("Could not load definitions from resource " | |||
+ resource + ". It could not be found.", | |||
log("Could not load definitions from resource " | |||
+ resource + ". It could not be found.", | |||
Project.MSG_WARN); | |||
} | |||
} | |||
@@ -208,7 +219,11 @@ public abstract class Definer extends Task { | |||
} | |||
} | |||
} | |||
/** | |||
* create the classloader then hand the definition off to the subclass; | |||
* @throws BuildException when the class wont load for any reason | |||
*/ | |||
private void addDefinition(ClassLoader al, String name, String value) | |||
throws BuildException { | |||
try { | |||
@@ -216,18 +231,21 @@ public abstract class Definer extends Task { | |||
AntClassLoader.initializeClass(c); | |||
addDefinition(name, c); | |||
} catch (ClassNotFoundException cnfe) { | |||
String msg = getTaskName() + " class " + value | |||
String msg = getTaskName() + " class " + value | |||
+ " cannot be found"; | |||
throw new BuildException(msg, cnfe, location); | |||
} catch (NoClassDefFoundError ncdfe) { | |||
String msg = getTaskName() + " class " + value | |||
String msg = getTaskName() + " class " + value | |||
+ " cannot be found"; | |||
throw new BuildException(msg, ncdfe, location); | |||
} | |||
} | |||
/** | |||
* create a classloader for this definition | |||
*/ | |||
private AntClassLoader createLoader() { | |||
// magic property | |||
// magic property | |||
if (project.getProperty(REUSE_LOADER_REF) != null) { | |||
// Generate the 'reuse' name automatically from the reference. | |||
// This allows <taskdefs> that work on both ant1.4 and ant1.5. | |||
@@ -237,7 +255,7 @@ public abstract class Definer extends Task { | |||
loaderId = "ant.loader." + classpathId; | |||
} | |||
} | |||
// If a loader has been set ( either by loaderRef or magic property ) | |||
if (loaderId != null) { | |||
Object reusedLoader = project.getReference(loaderId); | |||
@@ -251,12 +269,12 @@ public abstract class Definer extends Task { | |||
// } | |||
} | |||
} | |||
AntClassLoader al = null; | |||
if (classpath != null) { | |||
al = new AntClassLoader(project, classpath, !reverseLoader); | |||
} else { | |||
al = new AntClassLoader(project, Path.systemClasspath, | |||
al = new AntClassLoader(project, Path.systemClasspath, | |||
!reverseLoader); | |||
} | |||
// need to load Task via system classloader or the new | |||
@@ -276,25 +294,49 @@ public abstract class Definer extends Task { | |||
return al; | |||
} | |||
/** | |||
* Name of the property file to load | |||
* ant name/classname pairs from. | |||
*/ | |||
public void setFile(File file) { | |||
this.file = file; | |||
} | |||
/** | |||
* Name of the property resource to load | |||
* ant name/classname pairs from. | |||
*/ | |||
public void setResource(String res) { | |||
this.resource = res; | |||
} | |||
/** | |||
* Name of the property resource to load | |||
* ant name/classname pairs from. | |||
*/ | |||
public void setName(String name) { | |||
this.name = name; | |||
} | |||
/** | |||
* what is the classname we are definining? Can be null | |||
*/ | |||
public String getClassname() { | |||
return value; | |||
} | |||
/** | |||
* the full class name of the object being defined. | |||
* Required, unless file or resource have | |||
* been specified. | |||
*/ | |||
public void setClassname(String v) { | |||
value = v; | |||
} | |||
/** | |||
* this must be implemented by subclasses; it is the callback | |||
* they will get to add a new definition of their type | |||
*/ | |||
protected abstract void addDefinition(String name, Class c); | |||
} |
@@ -114,7 +114,7 @@ public class Delete extends MatchingTask { | |||
} | |||
/** | |||
* Used to force listing of all names of deleted files. | |||
* If true, list all names of deleted files. | |||
* | |||
* @param verbose "true" or "on" | |||
*/ | |||
@@ -127,7 +127,7 @@ public class Delete extends MatchingTask { | |||
} | |||
/** | |||
* If the file does not exist, do not display a diagnostic | |||
* If true and the file does not exist, do not display a diagnostic | |||
* message or modify the exit status to reflect an error. | |||
* This means that if a file or directory cannot be deleted, | |||
* then no error is reported. This setting emulates the | |||
@@ -143,7 +143,8 @@ public class Delete extends MatchingTask { | |||
} | |||
/** | |||
* this flag means 'note errors to the output, but keep going' | |||
* If false, note errors but continue. | |||
* | |||
* @param failonerror true or false | |||
*/ | |||
public void setFailOnError(boolean failonerror) { | |||
@@ -152,14 +153,14 @@ public class Delete extends MatchingTask { | |||
/** | |||
* Used to delete empty directories. | |||
* If true, delete empty directories. | |||
*/ | |||
public void setIncludeEmptyDirs(boolean includeEmpty) { | |||
this.includeEmpty = includeEmpty; | |||
} | |||
/** | |||
* Adds a set of files (nested fileset attribute). | |||
* Adds a set of files to be deleted. | |||
*/ | |||
public void addFileset(FileSet set) { | |||
filesets.addElement(set); | |||
@@ -81,21 +81,21 @@ import org.apache.tools.ant.types.FileList; | |||
* <li>targetfileset (fileset describing the target files to examine) | |||
* <li>targetfilelist (filelist describing the target files to examine) | |||
* </ul> | |||
* At least one instance of either a fileset or filelist for both source and | |||
* At least one instance of either a fileset or filelist for both source and | |||
* target are required. | |||
* <p> | |||
* This task will examine each of the source files against each of the target | |||
* files. If any target files are out of date with respect to any of the source | |||
* files, all targets are removed. If any files named in a (src or target) | |||
* This task will examine each of the source files against each of the target | |||
* files. If any target files are out of date with respect to any of the source | |||
* files, all targets are removed. If any files named in a (src or target) | |||
* filelist do not exist, all targets are removed. | |||
* Hint: If missing files should be ignored, specify them as include patterns | |||
* Hint: If missing files should be ignored, specify them as include patterns | |||
* in filesets, rather than using filelists. | |||
* </p><p> | |||
* This task attempts to optimize speed of dependency checking. It will stop | |||
* after the first out of date file is found and remove all targets, rather | |||
* This task attempts to optimize speed of dependency checking. It will stop | |||
* after the first out of date file is found and remove all targets, rather | |||
* than exhaustively checking every source vs target combination unnecessarily. | |||
* </p><p> | |||
* Example uses: | |||
* Example uses: | |||
* <ul><li> | |||
* Record the fact that an XML file must be up to date | |||
* with respect to its XSD (Schema file), even though the XML file | |||
@@ -107,7 +107,7 @@ import org.apache.tools.ant.types.FileList; | |||
* Record the fact that java files must be recompiled if the ant build | |||
* file changes | |||
* </li></ul> | |||
* | |||
* | |||
* @author <a href="mailto:cstrong@arielpartners.com">Craeg Strong</a> | |||
* @ant.task category="filesystem" | |||
* @version $Revision$ $Date$ | |||
@@ -127,28 +127,28 @@ public class DependSet extends MatchingTask { | |||
} //-- DependSet | |||
/** | |||
* Nested <srcfileset> element. | |||
* Add a set of source files. | |||
*/ | |||
public void addSrcfileset(FileSet fs) { | |||
sourceFileSets.addElement(fs); | |||
} | |||
/** | |||
* Nested <srcfilelist> element. | |||
* Add a list of source files. | |||
*/ | |||
public void addSrcfilelist(FileList fl) { | |||
sourceFileLists.addElement(fl); | |||
} | |||
/** | |||
* Nested <targetfileset> element. | |||
* Add a set of target files. | |||
*/ | |||
public void addTargetfileset(FileSet fs) { | |||
targetFileSets.addElement(fs); | |||
} | |||
/** | |||
* Nested <targetfilelist> element. | |||
* Add a list of target files. | |||
*/ | |||
public void addTargetfilelist(FileList fl) { | |||
targetFileLists.addElement(fl); | |||
@@ -160,7 +160,7 @@ public class DependSet extends MatchingTask { | |||
public void execute() throws BuildException { | |||
if ((sourceFileSets.size() == 0) && (sourceFileLists.size() == 0)) { | |||
if ((sourceFileSets.size() == 0) && (sourceFileLists.size() == 0)) { | |||
throw new BuildException("At least one <srcfileset> or <srcfilelist>" | |||
+ " element must be set"); | |||
} | |||
@@ -188,23 +188,23 @@ public class DependSet extends MatchingTask { | |||
File oldestTarget = null; | |||
Enumeration enumTargetSets = targetFileSets.elements(); | |||
while (enumTargetSets.hasMoreElements()) { | |||
FileSet targetFS = (FileSet) enumTargetSets.nextElement(); | |||
if (!targetFS.getDir(getProject()).exists()) { | |||
// this is the same as if it was empty, no target files found | |||
continue; | |||
} | |||
DirectoryScanner targetDS = targetFS.getDirectoryScanner(project); | |||
String[] targetFiles = targetDS.getIncludedFiles(); | |||
for (int i = 0; i < targetFiles.length; i++) { | |||
File dest = new File(targetFS.getDir(project), targetFiles[i]); | |||
allTargets.addElement(dest); | |||
if (dest.lastModified() > now) { | |||
log("Warning: " + targetFiles[i] + " modified in the future.", | |||
log("Warning: " + targetFiles[i] + " modified in the future.", | |||
Project.MSG_WARN); | |||
} | |||
@@ -222,12 +222,12 @@ public class DependSet extends MatchingTask { | |||
boolean upToDate = true; | |||
Enumeration enumTargetLists = targetFileLists.elements(); | |||
while (enumTargetLists.hasMoreElements()) { | |||
FileList targetFL = (FileList) enumTargetLists.nextElement(); | |||
String[] targetFiles = targetFL.getFiles(project); | |||
for (int i = 0; i < targetFiles.length; i++) { | |||
File dest = new File(targetFL.getDir(project), targetFiles[i]); | |||
if (!dest.exists()) { | |||
log(targetFiles[i] + " does not exist.", Project.MSG_VERBOSE); | |||
@@ -237,7 +237,7 @@ public class DependSet extends MatchingTask { | |||
allTargets.addElement(dest); | |||
} | |||
if (dest.lastModified() > now) { | |||
log("Warning: " + targetFiles[i] + " modified in the future.", | |||
log("Warning: " + targetFiles[i] + " modified in the future.", | |||
Project.MSG_WARN); | |||
} | |||
@@ -250,7 +250,7 @@ public class DependSet extends MatchingTask { | |||
} | |||
if (oldestTarget != null) { | |||
log(oldestTarget + " is oldest target file", Project.MSG_VERBOSE); | |||
} else { | |||
} else { | |||
// no target files, then we cannot remove any target files and | |||
// skip the following tests right away | |||
upToDate = false; | |||
@@ -262,7 +262,7 @@ public class DependSet extends MatchingTask { | |||
if (upToDate) { | |||
Enumeration enumSourceLists = sourceFileLists.elements(); | |||
while (upToDate && enumSourceLists.hasMoreElements()) { | |||
FileList sourceFL = (FileList) enumSourceLists.nextElement(); | |||
String[] sourceFiles = sourceFL.getFiles(project); | |||
@@ -270,12 +270,12 @@ public class DependSet extends MatchingTask { | |||
File src = new File(sourceFL.getDir(project), sourceFiles[i]); | |||
if (src.lastModified() > now) { | |||
log("Warning: " + sourceFiles[i] | |||
log("Warning: " + sourceFiles[i] | |||
+ " modified in the future.", Project.MSG_WARN); | |||
} | |||
if (!src.exists()) { | |||
log(sourceFiles[i] + " does not exist.", | |||
log(sourceFiles[i] + " does not exist.", | |||
Project.MSG_VERBOSE); | |||
upToDate = false; | |||
break; | |||
@@ -296,7 +296,7 @@ public class DependSet extends MatchingTask { | |||
if (upToDate) { | |||
Enumeration enumSourceSets = sourceFileSets.elements(); | |||
while (upToDate && enumSourceSets.hasMoreElements()) { | |||
FileSet sourceFS = (FileSet) enumSourceSets.nextElement(); | |||
DirectoryScanner sourceDS = sourceFS.getDirectoryScanner(project); | |||
String[] sourceFiles = sourceDS.getIncludedFiles(); | |||
@@ -322,12 +322,12 @@ public class DependSet extends MatchingTask { | |||
log("Deleting all target files. ", Project.MSG_VERBOSE); | |||
for (Enumeration e = allTargets.elements(); e.hasMoreElements();) { | |||
File fileToRemove = (File) e.nextElement(); | |||
log("Deleting file " + fileToRemove.getAbsolutePath(), | |||
log("Deleting file " + fileToRemove.getAbsolutePath(), | |||
Project.MSG_VERBOSE); | |||
fileToRemove.delete(); | |||
} | |||
} | |||
} //-- execute | |||
} //-- DependSet.java |
@@ -55,6 +55,7 @@ | |||
package org.apache.tools.ant.taskdefs; | |||
import java.io.File; | |||
import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.ant.Task; | |||
@@ -83,31 +84,37 @@ import org.apache.tools.ant.Task; | |||
*/ | |||
public class Dirname extends Task { | |||
private File file; | |||
private String property; | |||
private File file; | |||
private String property; | |||
// The setter for the `file' attribute | |||
public void setFile(File file) { | |||
this.file = file; | |||
} | |||
/** | |||
* Path to take the dirname of. | |||
* @param file | |||
*/ | |||
public void setFile(File file) { | |||
this.file = file; | |||
} | |||
// The setter for the `property' attribute | |||
public void setProperty(String property) { | |||
this.property = property ; | |||
} | |||
/** | |||
* The name of the property to set. | |||
* @param property | |||
*/ | |||
public void setProperty(String property) { | |||
this.property = property; | |||
} | |||
// The method executing the task | |||
public void execute() throws BuildException { | |||
if (property == null) { | |||
throw new BuildException("property attribute required", location); | |||
} | |||
if (file == null) { | |||
throw new BuildException("file attribute required", location); | |||
} else { | |||
String value = file.getParent(); | |||
getProject().setNewProperty(property, value); | |||
} | |||
} | |||
// The method executing the task | |||
public void execute() throws BuildException { | |||
if (property == null) { | |||
throw new BuildException("property attribute required", location); | |||
} | |||
if (file == null) { | |||
throw new BuildException("file attribute required", location); | |||
} else { | |||
String value = file.getParent(); | |||
getProject().setNewProperty(property, value); | |||
} | |||
} | |||
} | |||
@@ -93,7 +93,7 @@ public class Ear extends Jar { | |||
} | |||
/** | |||
* set the application XML file | |||
* File to incorporate as application.xml. | |||
*/ | |||
public void setAppxml(File descr) { | |||
deploymentDescriptor = descr; | |||
@@ -112,6 +112,11 @@ public class Ear extends Jar { | |||
} | |||
/** | |||
* Adds zipfileset. | |||
* | |||
* @param fs zipfileset to add | |||
*/ | |||
public void addArchives(ZipFileSet fs) { | |||
// We just set the prefix for this fileset, and pass it up. | |||
// Do we need to do this? LH | |||
@@ -105,7 +105,7 @@ public class Echo extends Task { | |||
} | |||
/** | |||
* Sets the message variable. | |||
* Message to write. | |||
* | |||
* @param msg Sets the value for the message variable. | |||
*/ | |||
@@ -114,14 +114,14 @@ public class Echo extends Task { | |||
} | |||
/** | |||
* Sets the file attribute. | |||
* File to write to. | |||
*/ | |||
public void setFile(File file) { | |||
this.file = file; | |||
} | |||
/** | |||
* Shall we append to an existing file? | |||
* If true, append to existing file. | |||
*/ | |||
public void setAppend(boolean append) { | |||
this.append = append; | |||