git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269662 13f79535-47bb-0310-9956-ffa450edef68master
@@ -12,7 +12,7 @@ | |||
</h2> | |||
<h4 align="center"> | |||
Steve Loughran (<a href="mailto:steve_l@iseran.com">steve_l@iseran.com</a>) | |||
Steve Loughran | |||
</h4> | |||
<a name="introduction"> | |||
@@ -38,7 +38,7 @@ done. | |||
Firstly, here are some assumptions about the projects which this | |||
document covers | |||
<ul> | |||
<li> Pretty much pure Java. | |||
<li> Pretty much pure Java, maybe with some legacy cruft on the edges. | |||
<li> Team efforts, usually with the petulant prima-donnas all us Java | |||
programmers become once we realise how much in demand we are. | |||
@@ -52,7 +52,7 @@ be vaguely aware of each other. | |||
<li> Significant mismatch between expectations and time available to | |||
deliver. 'Last Week' is the ideal delivery date handed down from above, | |||
next century the date coming up from below. | |||
late next century the date coming up from below. | |||
<li> Everyone is struggling to keep up with platform and tool evolution. | |||
@@ -107,8 +107,8 @@ And of course, the ubiquitous <b>clean</b> target. | |||
With standard target names, it is easy to build encompassing ant build | |||
files which just hand off the work to the classes below using the | |||
<a href="manual/CoreTasks/ant.html">ant</a> | |||
task. For example. the clean target could be handed down to the intf and | |||
impl subdirectories from a parent directory | |||
task. For example. the clean target could be handed down to the <tt>intf</tt> and | |||
<tt>impl</tt> subdirectories from a parent directory | |||
<pre><target name="clean" depends="clean-intf, clean-impl"> | |||
</target> | |||
@@ -121,6 +121,11 @@ impl subdirectories from a parent directory | |||
<ant dir="impl" target="clean" /> | |||
</target> </pre> | |||
If you give targets a <tt>description</tt> tag, then calling <tt>ant | |||
-projecthelp</tt> will list all tasks with their description as 'main targets', and | |||
all tasks without a description as subtargets. Describing all your | |||
entry points is therefore very useful, even before a project becomes big and complicated. | |||
<h3> | |||
Extend ant through new tasks | |||
</h3> | |||
@@ -178,7 +183,13 @@ write java code to stress large portions of the system -even if the code | |||
can not run as JUnit tasks- then the <a href= "manual/CoreTasks/java.html">java</a> | |||
task can be used to invoke them. It is best to specify that you want a | |||
new JVM for these tests, so that a significant crash does not break the | |||
full build. | |||
full build. The Junit extensions such as | |||
<a href="http://httpunit.sourceforge.net/">HttpUnit</a> for web pages, and | |||
<a href="http://jakarta.apache.org/commons/cactus/">Cactus</a> for J2EE and servlet | |||
testing help to expand the testing framework. To test properly you will still | |||
need to invest a lot of effort in getting these to work with your project, and | |||
deriving great unit, system and regression tests -but your customers will love | |||
you for shipping software that works. | |||
<a name="crossplatform"> | |||
@@ -199,7 +210,7 @@ tools (exec tasks) which are not portable, path issues, and hard coding | |||
in the location of things. | |||
<h3>Command Line apps: <a href="manual/CoreTasks/exec.html">Exec</a>/ <a href= | |||
"manual/CoreTasks/execon.html">ExecOn</a></h3> | |||
"manual/CoreTasks/apply.html">Apply</a></h3> | |||
The trouble with external invocation is that not all functions are found | |||
cross platform, and those that are often have different names -DOS | |||
@@ -225,7 +236,7 @@ split entries. Thus | |||
a path in unix. In Windows the path must use semicolon separators, | |||
colons being used to specify disk drives, and backslash separators | |||
<i>"c:\bin\java\lib\xerces.jar;c:\bin\java\lib\ant.jar"</i>. | |||
<p> | |||
This difference between platforms (indeed, the whole java classpath | |||
paradigm) can cause hours of fun. | |||
@@ -242,8 +253,13 @@ defined property in the command line. In the build files you may find it | |||
better to build a classpath by listing individual files (using location= | |||
attributes), or by including a fileset of *.jar in the classpath | |||
definition. | |||
<p> | |||
There is also the <a | |||
href="manual/CoreTasks/pathconvert.html">PathConvert</a> task which | |||
can put a fully resolved path into a property. Why do that? Because then | |||
you can use that path in other ways -such as pass it as a parameter to | |||
some application you are calling, or use the replace task to patch it | |||
into a localised shell script or batch file. | |||
<p> | |||
Note that DOS descended file systems are case insensitive (apart from | |||
the obscure aberration of the WinNT posix subsystem run against NTFS), | |||
@@ -254,7 +270,7 @@ directories to see a disastrous example of this). | |||
<p> | |||
Ant's policy on case sensitivity is whatever the underlying file system | |||
implements *VERIFY*, and its handling of file extensions is that *.jav does not | |||
implements, and its handling of file extensions is that *.jav does not | |||
find any .java files. The Java compiler is of course case sensitive -you can | |||
not have a class 'ExampleThree' implemented in "examplethree.java". | |||
@@ -336,8 +352,8 @@ file with tight access control is slightly better. The <a href= | |||
"manual/CoreTasks/fixcrlf.html">FixCRLF task</a> is often a useful interim step if | |||
you need to ensure that files have unix file extensions before upload. A | |||
WebDav task has long been discussed, which would provide a more secure | |||
upload to web servers, but it is still in the todo list. If DAV is your | |||
required upload mechanism, why not take up the challenge? | |||
upload to web servers, but it is still in the todo list. Rumour has it | |||
that there is such a task in the jakarta-slide libraries. | |||
<p> | |||
@@ -351,15 +367,19 @@ project and the rest of the ant community. | |||
Finally, there are of course the fallbacks of just copying files to a | |||
destination using <a href="manual/CoreTasks/copy.html">Copy</a> and <a href = | |||
"index.html#copydir">Copydir</a> , or just sending them to a person or | |||
process using <a href= "manual/CoreTasks/mail.html">Mail</a>. | |||
process using <a href= "manual/CoreTasks/mail.html">Mail</a> or the attachment | |||
aware <a href= "manual/OptionalTasks/mimemail.html">MimeMail</a>. | |||
In one project our team even used ant to build CD images through a build followed | |||
by a long set of Copy tasks, which worked surprisingly well. | |||
<a name="directories"> | |||
<h2> Directory Structures</h2> | |||
</a> | |||
How you structure your directory tree is very dependent upon the | |||
project. Here are some directory layout patterns which can be used as | |||
starting points. | |||
starting points. All the jakarta projects follow a roughly similar | |||
style, which makes it easy to navigate around one form one project to | |||
another, and easy to clean up when desired. | |||
<h3>Simple Project</h3> | |||
@@ -401,14 +421,25 @@ The project contains sub directories | |||
<tr> | |||
<td><b>src</b> | |||
</td> | |||
<td>source goes in under this tree | |||
<td>source goes in under this tree <i>in a heirarchy which matches | |||
the package names<i>. The dependency compilation of javac requires this. | |||
</td> | |||
</tr> | |||
</table> | |||
The bin, lib, doc and src directories should be under source code control. | |||
Slight variations include an extra tree of content to be included in the | |||
distribution jars -inf files, images, etc. Javadoc output can be | |||
distribution jars -inf files, images, etc. These can go under source | |||
too, with a <tt>metadata</tt> directory for web.xml and similar | |||
manifests, and a <tt>web</tt> folder for web content -JSP, html, images | |||
and so on. Keeping the content in this folder (or sub heirarchy) | |||
together makes it easier to test links before deployment. The actual | |||
production of a deployment image -such as a war file- can be left to the | |||
appropriate ant task: there is no need to completely model your source tree | |||
upon the deployment heirarchy. | |||
<p> | |||
Javadoc output can be | |||
directed to a doc/ folder beneath build/, or to doc/javadoc. | |||
<h3>Interface and Implementation split</h3> | |||
@@ -439,6 +470,14 @@ This style works well if different teams have different code | |||
access/commitment rights. The risk is that by giving extra leeway to the | |||
sub projects, you can end up with incompatible source, libraries, build | |||
processes and just increase your workload and integration grief all round. | |||
<p> | |||
The only way to retain control over a fairly loosely integrated | |||
collection of projects is to have a fully automated build | |||
and test process which verifies that everything is still compatible. Sam | |||
Ruby runs one for all the apache java libraries and emails everyone when | |||
something breaks; your own project may be able to make use of | |||
<A href="http://cruisecontrol.sourceforge.net/">Cruise Control</a> for | |||
an automated, continuous, background build process. | |||
<h3>Integrated sub projects</h3> | |||
@@ -456,7 +495,7 @@ more loosely coupled design will become a requirement as the projects | |||
progress -but by the time this is realised schedule pressure and | |||
intertwined build files make executing the split well nigh impossible. | |||
If that happens then just keep with it until there is the time to | |||
refactor the project directory structures. | |||
refactor the project directory structures. | |||
<a name="antupdate"> | |||
<h2> | |||
@@ -505,7 +544,12 @@ enhance it and offer up the enhancements to the rest of the world. This | |||
is certainly better than starting work on your 'text case converter' | |||
task on Ant 0.8 in isolation, announcing its existence six months latter | |||
and discovering that instead of adulation all you get are helpful | |||
pointers to the existing implementation. | |||
pointers to the existing implementation. The final benefit of being | |||
involved with the process is that it makes it easier for your tasks to | |||
be added with the ant CVS tree, bringing forward the date when ant has | |||
taken on all the changes you needed to make to get your project to work. | |||
If that happens you can revert to an official ant release, and get on | |||
with all the other crises. | |||
<p> | |||
@@ -517,7 +561,62 @@ consider routing it to an email address you don't use for much else. And | |||
don't make everyone on the team subscribe; it can be too much of a | |||
distraction. | |||
<a name="install"> | |||
<h2> | |||
Installing with Ant. | |||
</h2> | |||
</a> | |||
Because ant can read environment variables, copy, unzip and delete files | |||
and make java and OS calls, it can be used for simple installation | |||
tasks. For example, an installer for tomcat could extract the | |||
environment variable TOMCAT_HOME, stop tomcat running, and copy a war | |||
file to TOMCAT_HOME/webapps. It could even start tomcat again, but the | |||
build wouldn't complete until tomcat exited, which is probably not what | |||
was wanted. | |||
<p> | |||
The advantage of using ant is firstly that the same install targets | |||
can be used from your local build files (via an <tt>ant</tt> invocation | |||
of the install.xml file), and secondly that a basic install target is | |||
quite easy to write. The disadvantages of this approach are that the | |||
destination must have an up to date version of ant correctly | |||
pre-installed, and ant doesn't allow you to handle failures well -and a | |||
good installer is all about handling when things go wrong, from files | |||
being in use to jar versions being different. This means that ant is not | |||
suited for shrink wrapped software, but it does work for deployment and | |||
installation to your local servers. | |||
<p> | |||
One major build project I was involved in had an ant install build file | |||
for the bluestone application server, which would shutdown all four | |||
instances of the app server on a single machine, copy the new version of | |||
the war file (with datestamp and buildstamp) to an archive directory, | |||
clean up the current deployed version of the war and then install the | |||
new version. Because bluestone restarted JVMs on demand, this script was | |||
all you needed for web service deployment. On the systems behind the | |||
firewall, we upped the ante in the deployment process by using the ftp | |||
task to copy out the war and build files, then the telnet task to | |||
remotely invoke the build file. The result was we had automated | |||
recompile and redeploy to local servers from inside our IDE (Jedit) or | |||
the command line, which was simply invalualbe. | |||
<p> | |||
One extra trick I added later was a junit test case to run through | |||
the install check list. With tests to verify access permissions on network | |||
drives, approximate clock synchronisation between servers, DNS functionality, | |||
ability to spawn executables and all the other trouble spots | |||
, the install script could automatically do | |||
a system health test during install time and report problems. [The same tests | |||
could also be invoked from a JMX MBean, but that's another story]. | |||
<p> | |||
So, ant is not a substitute for a real installer tool, except in the | |||
special case of servers you control, but in that context it does let | |||
you integrate remote installation with your build. | |||
<a name="tips"> | |||
<h2> | |||
Tips and Tricks</h2> | |||
@@ -530,7 +629,7 @@ Tips and Tricks</h2> | |||
The <a href="manual/CoreTasks/get.html">get</a> task can fetch any URL, so be used | |||
to trigger remote server side code during the build process, from remote | |||
server restarts to sending SMS/pager messages to the developer | |||
cellphones | |||
cellphones. | |||
<dt><b> | |||
i18n | |||
@@ -561,7 +660,9 @@ Faster compiles with Jikes | |||
The <a href="http://www.jikes.org/">jikes compiler</a> is usually much | |||
faster than javac, and does dependency checking. Get it. Then set | |||
build.compiler to "jikes" for it to be used in your build files. | |||
build.compiler to "jikes" for it to be used in your build files. Better | |||
yet, set the JIKES_HOME environment variable for jikes to automatically | |||
get used, without changing your build files to only work with jikes. | |||
<dt><b> | |||
#include targets to simplify multi build.xml projects | |||
@@ -584,8 +685,6 @@ method is the most portable:- | |||
<!DOCTYPE project [ | |||
<!ENTITY IncludeBuildCore SYSTEM "buildCore.xml"> | |||
<!ENTITY IncludeBuildSecondary SYSTEM "buildSecondary.xml"> | |||
%IncludeBuildCore; | |||
%IncludeBuildSecondary; | |||
]> | |||
<target name="includedBuild"> | |||
@@ -593,12 +692,27 @@ method is the most portable:- | |||
&IncludeBuildSecondary; | |||
</target> | |||
</pre> | |||
The clean method using XInclude/Xpath will let you include named | |||
The cleaner method using XInclude/Xpath will let you include named | |||
targets from one build file or another, using | |||
<a href="http://www.w3.org/XML/Linking"> | |||
the xpointer syntax</a>. You'll need to wait for the W3C proposals | |||
to finalise and the java XML parsers to implement it before | |||
using xpointer references. | |||
using xpointer references. | |||
<p> | |||
Before you go overboard with using XML inclusion, note that the <tt>ant</tt> task lets | |||
you call any target in any other build file -with all your property settings propagating down to | |||
that target. So you can actually have a suite of utility targets -"deploy-to-stack-a", "email-to-team", | |||
"cleanup-installation" which can be called from any of your main build files, perhaps with subtly changed | |||
parameters. Indeed, after a couple of projects you may be able to create a re-usable core build file which | |||
contains the core targets of a basic java development project -compile, debug, deploy- which project specific | |||
build files call with their own settings. If you can achive this then | |||
you are definately making your way up the software maturity ladder. NB, | |||
<tt>ant</tt> copies all your properties unless the <i>inheritall</i> attribute is set to false. Before that | |||
attribute existed you had to carefully name all property definitions in all build files to prevent unintentional | |||
overwriting of the invoked property by that of the caller, now you just have to remember to set | |||
<tt>inheritall="false"</tt> on all uses of the ant task. | |||
<dt><b> | |||
Implement complex Ant builds through XSL | |||
</b><dd> | |||
@@ -606,7 +720,8 @@ Implement complex Ant builds through XSL | |||
XSLT can be used to dynamically generate build.xml files from a source | |||
xml file, with the <a href="manual/CoreTasks/style.html">Style</a> task controlling | |||
the transform. This is the current recommended strategy for creating | |||
complex build files dynamically. | |||
complex build files dynamically. However, its use is still apparently | |||
quite rare -which means you will be on the bleeding edge of technology. | |||
<dt><b> | |||
@@ -654,6 +769,33 @@ Even if you edit ant files by hand, Antidote makes a good execution tool | |||
because it eliminates the startup time of the JVM, perhaps even some of | |||
the XML parsing delays. | |||
<dt><b> | |||
Use the replace task to programmatic modify text files in your project. | |||
</b><dd> | |||
Imagine your project has some source files -BAT files, ASP pages (!), anything | |||
which needs to be statically customised at compile time for particular | |||
installations, such driven from some properties of the project such as JVM options, or the URL | |||
to direct errors too. The replace task can be used to modify files, substituting text and creating | |||
versions customised for that build or destination. Of course, per-destination customisation | |||
should be delayed until installation, but if you are using ant for the remote installation | |||
that suddenly becomes feasible. | |||
<dt><b> | |||
Use the mailing lists | |||
</b><dd> | |||
There are two | |||
<a href="http://jakarta.apache.org/site/mail.html">mailing lists</a> | |||
related to ant, ant-user and ant-developer. Ant user is where <i>all</i> | |||
questions related to using ant should go. Installation, syntax, code | |||
samples, etc -post your questions there or search the archives for | |||
whether the query has been posted and answered before. Ant-developer | |||
is where ant development takes place -so it is <i>not</i> the place to | |||
post things like "I get a compilation error when I build my project" or | |||
"how do I make a zip file". If you are actually extending ant, on the other | |||
hand, it is the ideal place to ask questions about how to add new tasks, make | |||
changes to existing ones -and to post the results of your work, if you want them | |||
incorporated into the ant source tree. | |||
</dl> | |||
<a name="puttingtogether"> | |||
@@ -684,7 +826,8 @@ should be considered if they are part of the process. | |||
<p> | |||
Debug/release switching can be handled with separate initialisation | |||
targets called before the compile tasks which define the appropriate | |||
properties. | |||
properties. Antcall is the trick here, as it allows you to have two paths | |||
of property initialisation in a build file. | |||
<p> | |||
Internal targets should be used to structure the process | |||
@@ -773,7 +916,7 @@ before acting. | |||
<h3>It's not meant to be a nice language for humans</h3> | |||
XML isnt a nice representation of information for humans. It's a | |||
XML isn't a nice representation of information for humans. It's a | |||
reasonable representation for programs, and text editors and source code | |||
management systems can all handle it nicely. But a complex ant file can | |||
get ugly because XML is a bit ugly, and a complex build is, well, | |||
@@ -781,6 +924,24 @@ complicated. Use XML comments so that the file you wrote last month | |||
still makes sense when you get back to it, and use Antidote to edit the | |||
files if you prefer it. | |||
<h3>You still need all the other foundational bits of a software | |||
project</h3> | |||
If you don't have an source code management system, you are going to end | |||
up hosed. If you don't have everything under SCM, including web pages, | |||
dependent jars, installation files, you are still going to end up hosed, | |||
it's just a question of when it's going to happen. | |||
CVS is effectively free and works well with ant, but Sourcesafe, Perforce, | |||
Clearcase and StarTeam also have ant tasks. These tasks | |||
let you have auto-incrementing build counters, and automated file | |||
update processes. | |||
<p> | |||
You also need some kind of change control process, to resist | |||
uncontrolled feature creep. Bugzilla is a simple and low cost tool for | |||
this, using ant and a continuous test process enables a rapid evolution of code | |||
to adapt to those changes which are inevitable. | |||
<h2>Endpiece</h2> | |||
@@ -809,8 +970,22 @@ running a continuous integration/testing proces. | |||
code you will soon have. | |||
</ul> | |||
<hr> | |||
<p align="center">Copyright © 2000 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
<a name="author"> | |||
<h3>About the Author</h3> | |||
</a> | |||
Steve Loughran is a research scientist at a corporate R&D lab, | |||
currently on a sabbatical building production web services against | |||
implausible deadlines for the fun of it. Because of those implausible | |||
deadlines, email questions related to this document are generally, and | |||
regretfully unwelcome, unless they are corrections to the content, | |||
advanced discourse on how to evolve software engineering processes to | |||
meet the next generation of challenges, or from someone he knows. Even | |||
then, a timely response is unlikely. Please use the mailing lists | |||
instead. | |||
<hr> | |||
<p align="center">Copyright © 2000, 2001 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> |
@@ -24,10 +24,10 @@ setting of <i>inheritAll</i>. This allows you to parameterize your subprojects. | |||
<p> | |||
When a target is invoked by antcall, all of its dependent targets will | |||
also be called within the context of any new parameters. For example. if | |||
the target "doSomethingElse" depended on the target "init", then the <i>antcall</i> of | |||
"doSomethingElse" will call "init" during the call. Of course, any properties defined in the | |||
antcall task or inherited from the calling target will be fixed and not overridable | |||
in the init task -or indeed in the "doSomethingElse" task. | |||
the target "doSomethingElse" depended on the target "init", then the | |||
<i>antcall</i> of "doSomethingElse" will call "init" during the call. | |||
Of course, any properties defined in the antcall task or inherited from the calling target | |||
will be fixed and not overridable in the init task -or indeed in the "doSomethingElse" task. | |||
</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
@@ -51,6 +51,11 @@ execution depending on system parameters.</p> | |||
<td valign="top">The 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">filepath</td> | |||
<td valign="top">The path to use when looking up <code>file</code>.</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">classpathref</td> | |||
<td valign="top">The classpath to use, given as a <a href="../using.html#references">reference</a> to a path defined elsewhere.</td> | |||
@@ -58,7 +63,9 @@ execution depending on system parameters.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">type</td> | |||
<td valign="top">The type of <code>file</code> to look for, either a directory (<code>type="dir"</code>) or a file (<code>type="file"</code>). If not set, the property will be set if the name specified in the <code>file</code> attribute exists as either a file or a directory.</td> | |||
<td valign="top">The type of <code>file</code> to look for, either a directory (<code>type="dir"</code>) or a file | |||
(<code>type="file"</code>). If not set, the property will be set if the name specified in the <code>file</code> | |||
attribute exists as either a file or a directory.</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
@@ -68,6 +75,10 @@ execution depending on system parameters.</p> | |||
<p><code>Available</code>'s <code>classpath</code> attribute is a <a | |||
href="../using.html#path">path-like structure</a> and can also be set via a nested | |||
<code><classpath></code> element.</p> | |||
<h4>filepath</h4> | |||
<p><code>Available</code>'s <code>filepath</code> attribute is a <a | |||
href="../using.html#path">path-like structure</a> and can also be set via a nested | |||
<code><filepath></code> element.</p> | |||
<h3>Examples</h3> | |||
<pre> <available classname="org.whatever.Myclass" property="Myclass.present"/></pre> | |||
<p>sets the <code>Myclass.present</code> property to the value "true" | |||
@@ -44,7 +44,7 @@ directly. More FileSets can be specified using nested | |||
<tr> | |||
<td valign="top">includes</td> | |||
<td valign="top">comma separated list of patterns of files that must be | |||
included. All files are included when omitted.</td> | |||
included.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
@@ -53,8 +53,9 @@ To use a fileset, the <var>todir</var> attribute must be set.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">filtering</td> | |||
<td valign="top">Indicates whether token filtering should take place during | |||
the copy. Defaults to "no".</td> | |||
<td valign="top">Indicates whether token filtering using the global build file | |||
filters should take place during the copy. Defaults to "no". | |||
Nested filtersets will be used even if this value is "no"</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
@@ -73,11 +74,22 @@ To use a fileset, the <var>todir</var> attribute must be set.</p> | |||
</tr> | |||
</table> | |||
<h3>Parameters specified as nested elements</h3> | |||
<h4>fileset</h4> | |||
<p><a href="../CoreTypes/fileset.html">FileSets</a> are used to select files to copy. | |||
To use a fileset, the <var>todir</var> attribute must be set.</p> | |||
<h4>mapper</h4> | |||
<p>You can define file name transformations by using a nested <a | |||
href="../CoreTypes/mapper.html">mapper</a> element. The default mapper used by | |||
<code><copy></code> is the <a | |||
href="../CoreTypes/mapper.html#identity-mapper">identity</a>.</p> | |||
<p>You can define file name transformations by using a nested <a | |||
href="../CoreTypes/mapper.html">mapper</a> element. The default mapper used by | |||
<code><copy></code> is the <a | |||
href="../CoreTypes/mapper.html#identity-mapper">identity</a>.</p> | |||
<h4>filterset</h4> | |||
<p><a href="../CoreTypes/filterset.html">Filtersets</a> are used to replace tokens in files that are copied. | |||
To use a filterset just add the nested filterset elements.</P> | |||
<h3>Examples</h3> | |||
<p><b>Copy a single file</b></p> | |||
<pre> | |||
@@ -113,6 +125,19 @@ href="../CoreTypes/mapper.html#identity-mapper">identity</a>.</p> | |||
<mapper type="glob" from="*" to="*.bak"/> | |||
</copy> | |||
</pre> | |||
<p><b>Copy a set of files to a replacing @TITLE@ with Foo Bar in all files.</b></p> | |||
<pre> | |||
<copy todir="../backup/dir" > | |||
<fileset dir="src_dir" /> | |||
<filterset> | |||
<filter token="TITLE" value="Foo Bar" /> | |||
</filterset> | |||
</copy> | |||
</pre> | |||
<hr><p align="center">Copyright © 2000,2001 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
@@ -112,7 +112,7 @@ and any sub-directories.</p> | |||
<fileset dir="build" /> | |||
</delete> | |||
</pre> | |||
<p>deletes all files and subdirectories of <code>build</code>, but not | |||
<p>deletes all files and subdirectories of <code>build</code>, including | |||
<code>build</code> itself.</p> | |||
<hr><p align="center">Copyright © 2000,2001 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
@@ -110,12 +110,12 @@ filelists, and if any are older, they are all deleted. | |||
<p> | |||
In this example derived HTML files in the ${output.dir} directory | |||
will be removed if any are out-of-date with respect to: | |||
<olist> | |||
<ol> | |||
<li>the DTD of their source XML files</li> | |||
<li>a common DTD (imported by the main DTD)</li> | |||
<li>a subordinate XSLT stylesheet (imported by the main stylesheet), or</li> | |||
<li>the buildfile</li> | |||
</olist> | |||
</ol> | |||
</p> | |||
<p> | |||
If any of the source files in the above example does not exist, all | |||
@@ -91,6 +91,12 @@ attributes of zipfilesets in a Zip or Jar task.)</p> | |||
<td valign="top">the manifest file to use.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">update</td> | |||
<td valign="top">indicates whether to update or overwrite | |||
the destination file if it already exists.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">whenempty</td> | |||
<td valign="top">Behavior to use if no files match.</td> | |||
@@ -106,8 +112,8 @@ fileset includes a file named <code>MANIFEST.MF</code>, the file is | |||
ignored and you will get a warning.</p> | |||
<h2>Example</h2> | |||
<pre> | |||
<ear earfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml"> | |||
<fileset dir="${build.dir}" includes="*.jar,*.war"/> | |||
<ear earfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml"> | |||
<fileset dir="${build.dir}" includes="*.jar,*.war"/> | |||
</ear> | |||
</pre> | |||
<hr> | |||
@@ -102,9 +102,9 @@ supports all attributes of <code><fileset></code> | |||
<li>crlf: convert all EOLs to the pair CRLF</li> | |||
</ul> | |||
Default is based on the platform on which you are running | |||
this task. For Unix platforms, the default is "lf". | |||
this task. For Unix platforms, the default is "lf". | |||
For DOS based systems (including Windows), the default is | |||
"crlf". For Mac OS, the default is "cr". | |||
"crlf". For Mac OS, the default is "cr". | |||
<p> | |||
This is the preferred method for specifying EOL. The | |||
"<i><b>cr</b></i>" attribute (see below) is | |||
@@ -138,9 +138,9 @@ supports all attributes of <code><fileset></code> | |||
</li> | |||
</ul> | |||
Default is based on the platform on which you are running | |||
this task. For Unix platforms, the default is "remove". | |||
this task. For Unix platforms, the default is "remove". | |||
For DOS based systems (including Windows), the default is | |||
"add". | |||
"add". | |||
<p> | |||
<i>N.B.</i>: One special case is recognized. The three | |||
characters CR-CR-LF are regarded as a single EOL. | |||
@@ -164,7 +164,6 @@ supports all attributes of <code><fileset></code> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<tr> | |||
<td valign="top">tab</td> | |||
<td valign="top">Specifies how tab characters are to be handled. Valid | |||
values for this property are: | |||
@@ -33,6 +33,11 @@ in the jar task. | |||
See the <a href="zip.html">Zip</a> task for more details and examples.</p> | |||
<p>If the manifest is omitted, a simple one will be supplied by Ant. | |||
You should not include <samp>META-INF/MANIFEST.MF</samp> in your set of files.</p> | |||
<p>The <code>update</code> parameter controls what happens if the | |||
JAR file already exists. When set to <code>yes</code>, the JAR file is | |||
updated with the files specified. When set to <code>no</code> (the | |||
default) the JAR file is overwritten. An example use of this is | |||
provided in the <a href="zip.html">Zip task documentation</a>. | |||
<p>The <code>whenempty</code> parameter controls what happens when no files match. | |||
If <code>create</code> (the default), the JAR is created anyway with only a manifest. | |||
If <code>skip</code>, the JAR is not created and a warning is issued. | |||
@@ -113,6 +118,12 @@ include an empty one for you.)</p> | |||
<td valign="top">the manifest file to use.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">update</td> | |||
<td valign="top">indicates whether to update or overwrite | |||
the destination file if it already exists.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">whenempty</td> | |||
<td valign="top">Behavior to use if no files match.</td> | |||
@@ -9,7 +9,7 @@ | |||
<h2><a name="javac">Javac</a></h2> | |||
<h3>Description</h3> | |||
<p>Compiles a source tree within the running (Ant) VM.</p> | |||
<p>Compiles a Java source tree.</p> | |||
<p>The source and destination directory will be recursively scanned for Java | |||
source files to compile. Only Java files that have no corresponding class file | |||
or where the class file is older than the java file will be compiled.</p> | |||
@@ -29,7 +29,7 @@ want to use default exclusions or not. See the section on <a | |||
href="../dirtasks.html#directorybasedtasks">directory based tasks</a>, on how the | |||
inclusion/exclusion of files works, and how to write patterns.</p> | |||
<p>It is possible to use different compilers. This can be selected with the | |||
"build.compiler" property. There are four choices:</p> | |||
"build.compiler" property. Here are the choices:-</p> | |||
<ul> | |||
<li>classic (the standard compiler of JDK 1.1/1.2) - javac1.1 and | |||
javac1.2 can be used as aliases</li> | |||
@@ -47,7 +47,7 @@ inclusion/exclusion of files works, and how to write patterns.</p> | |||
<li>extJavac (run either modern or classic in a JVM of its own)</li> | |||
</ul> | |||
<p>For JDK 1.1/1.2, classic is the default. For JDK 1.3/1.4, modern is the default. | |||
If you wish to use a different compiler interface than one of the four | |||
If you wish to use a different compiler interface than those | |||
supplied, write a class that implements the CompilerAdapter interface | |||
(package org.apache.tools.ant.taskdefs.compilers). Supply the full | |||
classname in the "build.compiler" property. | |||
@@ -137,6 +137,12 @@ files/directories from the CLASSPATH it passes to the compiler.</p> | |||
this option yet)</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">nowarn</td> | |||
<td valign="top">indicates whether -nowarn switch should be passed | |||
to the compiler; defaults to <code>off</code>.</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">debug</td> | |||
<td valign="top">indicates whether source should be compiled with debug | |||
@@ -189,6 +195,20 @@ files/directories from the CLASSPATH it passes to the compiler.</p> | |||
defaults to <code>no</code>.</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">memoryInitialSize</td> | |||
<td valign="top">the initial size of the memory for the underlying VM, if javac is run | |||
externally, ignored otherwise; defaults to the standard VM memory setting. | |||
(examples: <code>83886080</code>, <code>81920k</code>, or <code>80m</code>)</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">memoryMaximumSize</td> | |||
<td valign="top">the maximum size of the memory for the underlying VM, if javac is run | |||
externally, ignored otherwise; defaults to the standard VM memory setting. | |||
(examples: <code>83886080</code>, <code>81920k</code>, or <code>80m</code>)</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">failonerror</td> <td valign="top"> | |||
indicates whether the build will continue even if there are compilation errors; defaults to <code>true</code>. | |||
@@ -267,8 +287,62 @@ This problem may occur with all JDKs < 1.2.</p> | |||
<p><b>Note:</b> If you wish to compile only source-files located in some packages below a | |||
common root you should not include these packages in the srcdir-attribute. Use include/exclude-attributes | |||
or elements to filter for these packages. If you include part of your package-structure inside the srcdir-attribute | |||
(or nested src-elements) Ant will start to recompile your sources everytime you call it.</p> | |||
(or nested src-elements) Ant will start to recompile your sources every time you call it.</p> | |||
<h3>Jikes Notes</h3> | |||
If the environment variable <tt>JIKES_HOME</tt> is set to the location | |||
of the jikes compiler, then the standard Ant invocation scripts | |||
automatically set build.compiler to "jikes". This enables one to use | |||
jikes when available, without having to commit the build file to a | |||
single choice of compiler. | |||
<p> | |||
Jikes also supports some extra options, which can be set be defining | |||
properties prior to invoking the task. The ant developers are aware that | |||
this is ugly and inflexible -expect a better solution in the future. All | |||
the options are boolean, and must be set to "true" or "yes" to be | |||
interpreted as anything other than false; by default | |||
build.compiler.warnings is "true" while all others are "false" | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td valign="top"> | |||
build.compiler.emacs | |||
</td> | |||
<td valign="top"> | |||
Enable emacs compatible error messages | |||
</td> | |||
</tr> | |||
<tr> | |||
<td valign="top"> | |||
build.compiler.warnings<br> | |||
<b>This property has been deprecated, use the nowarn attribute | |||
instead</b> | |||
</td> | |||
<td valign="top"> | |||
don't disable warning messages | |||
</td> | |||
</tr> | |||
<tr> | |||
<td valign="top"> | |||
build.compiler.pedantic | |||
</td> | |||
<td valign="top"> | |||
enable pedantic warnings | |||
</td> | |||
</tr> | |||
<tr> | |||
<td valign="top"> | |||
build.compiler.fulldepend | |||
</td> | |||
<td valign="top"> | |||
enable full dependency checking,<br> | |||
"+F" in the jikes manual. | |||
</td> | |||
</tr> | |||
</table> | |||
<hr> | |||
<p align="center">Copyright © 2000,2001 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
@@ -9,7 +9,10 @@ | |||
<h2><a name="mail">Mail</a></h2> | |||
<h3>Description</h3> | |||
<p>A task to send SMTP email.</p> | |||
<p>A task to send SMTP email. Text and text files to include in the message | |||
body may be specified. To send binary attachments the optional | |||
<a href="../OptionalTasks/mimemail.html">MimeMail</a> task should be used instead</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
@@ -36,7 +36,7 @@ about all tasks currently known to Ant.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="apply.html">Apply</a></td> | |||
<td><a href="apply.html">Apply/<i>ExecOn</i></a></td> | |||
<td><p>Executes a system command. When the <i>os</i> attribute is specified, then | |||
the command is only executed when Ant is run on one of the specified operating | |||
systems.</p></td> | |||
@@ -55,6 +55,13 @@ file, a directory, a class in the classpath, or a JVM system resource.</p></td> | |||
the argument for the chmod command.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="condition.html">Condition</a></td> | |||
<td><p>Sets a property if a certain condition holds true - this is a | |||
generalization of <a href="available.html">Available</a> and | |||
<a href="uptodate.html">Uptodate</a>.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="copy.html">Copy</a></td> | |||
<td><p>Copies a file or Fileset to a new file or directory.</p></td> | |||
@@ -94,6 +101,13 @@ file, a directory, a class in the classpath, or a JVM system resource.</p></td> | |||
<td><p><i>This task has been deprecated. Use the Delete task instead.</i></p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="dependset.html">Dependset</a></td> | |||
<td><p>The dependset task compares a set of source files with a set of target | |||
files. If any of the source files is more recent than any of | |||
the target files, all of the target files are removed. </p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="ear.html">Ear</a></td> | |||
<td><p>An extension of the <a href="jar.html">Jar</a> task with special | |||
@@ -112,16 +126,6 @@ the command is only executed when Ant is run on one of the specified operating | |||
systems.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="execon.html">ExecOn</a></td> | |||
<td><p>Executes a system command. When the <i>os</i> attribute is specified, then | |||
the command is only executed when Ant is run on one of the specified operating | |||
systems.</p> | |||
<p>The files and/or directories of a number of <a | |||
href="../CoreTypes/fileset.html">FileSet</a>s are passed as arguments to the system | |||
command. At least one nested <code><fileset></code> is required.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="fail.html">Fail</a></td> | |||
<td><p>Exits the current build (just throwing a BuildException), optionally printing additional information.</p></td> | |||
@@ -192,15 +196,21 @@ specified.</p></td> | |||
<tr valign="top"> | |||
<td><a href="mkdir.html">Mkdir</a></td> | |||
<td><p>Creates a directory. Also non-existent parent directories are created, when | |||
necessary.</p></td> | |||
necessary.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="move.html">Move</a></td> | |||
<td><p>Moves a file to a new file or directory, or sets of files to | |||
a new directory.</p></td> | |||
a new directory.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="parallel.html">Parallel</a></td> | |||
<td><p>Parallel is a container task - it can contain other Ant tasks. Each nested | |||
task within the parallel task will be executed in its own thread. </p> </td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="patch.html">Patch</a></td> | |||
<td><p>Applies a diff file to originals.</p></td> | |||
@@ -215,13 +225,13 @@ a new directory.</p></td> | |||
<tr valign="top"> | |||
<td><a href="property.html">Property</a></td> | |||
<td><p>Sets a property (by name and value), or set of properties (from file or | |||
resource) in the project.</p></td> | |||
resource) in the project.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="recorder.html">Record</a></td> | |||
<td><p>A recorder is a listener to the current build process that records the | |||
output to a file.</p></td> | |||
output to a file.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
@@ -232,7 +242,7 @@ output to a file.</p></td> | |||
<tr valign="top"> | |||
<td><a href="replace.html">Replace</a></td> | |||
<td><p>Replace is a directory based task for replacing the occurrence of a given string with another string | |||
in selected file.</p></td> | |||
in selected file.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
@@ -240,6 +250,14 @@ in selected file.</p></td> | |||
<td><p>Runs the rmic compiler for a certain class.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="sequential.html">Sequential</a></td> | |||
<td><p>Sequential is a container task - it can contain other Ant tasks. The nested | |||
tasks are simply executed in sequence. Sequential's primary use is to support | |||
the sequential execution of a subset of tasks within the | |||
<a href="parallel.html">parallel</a> task</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="signjar.html">SignJar</a></td> | |||
<td><p>Signs a jar or zip file with the javasign command line tool.</p></td> | |||
@@ -271,13 +289,13 @@ in selected file.</p></td> | |||
<tr valign="top"> | |||
<td><a href="taskdef.html">Taskdef</a></td> | |||
<td><p>Adds a task definition to the current project, such that this new task can be | |||
used in the current project.</p></td> | |||
used in the current project.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
<td><a href="touch.html">Touch</a></td> | |||
<td><p>Changes the modification time of a file and possibly creates it at | |||
the same time.</p></td> | |||
the same time.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
@@ -290,7 +308,7 @@ the same time.</p></td> | |||
<tr valign="top"> | |||
<td><a href="typedef.html">Typedef</a></td> | |||
<td><p>Adds a data type definition to the current project, such that this | |||
new type can be used in the current project.</p></td> | |||
new type can be used in the current project.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
@@ -316,7 +334,7 @@ new type can be used in the current project.</p></td> | |||
<tr valign="top"> | |||
<td><a href="uptodate.html">Uptodate</a></td> | |||
<td><p>Sets a property if a target files are more up to date than a set of | |||
Source files.</p></td> | |||
Source files.</p></td> | |||
</tr> | |||
<tr valign="top"> | |||
@@ -22,7 +22,7 @@ harness is run in another thread.</li> | |||
<p>Care must be taken when using multithreading to ensure the tasks within the | |||
threads do not interact. For example, two javac compile tasks which write | |||
classes into the same destination directory may interact where one tries to | |||
read a class for depenency information while the other task is writing the | |||
read a class for dependency information while the other task is writing the | |||
class file. Be sure to avoid these types of interactions within a | |||
<parallel> task</p> | |||
@@ -35,7 +35,7 @@ thread will be blocked waiting for all the child threads to complete.</p> | |||
<p>If any of the tasks within the <parallel> task fails, the remaining | |||
tasks in other threads will continue to run until all threads have completed. | |||
In this sitiuation, the parallel task will also fail.</p> | |||
In this situation, the parallel task will also fail.</p> | |||
<p>The parallel task may be combined with the <a href="sequential.html"> | |||
sequential</a> task to define sequences of tasks to be executed on each thread | |||
@@ -55,7 +55,7 @@ within the parallel block</p> | |||
<p>This example represents a typical pattern for testing a server application. | |||
In one thread the server is started (the wlrun task). The other thread consists | |||
of a three tasks which are performed in sequence. The sleep task is used to | |||
give the server time to come up. Another task which is capabale of validating | |||
give the server time to come up. Another task which is capable of validating | |||
that the server is available could be used in place of the sleep task. The | |||
test harness is then run. Once the tests are complete, the server is stopped | |||
(using wlstop in this example), allowing both threads to complete. The | |||
@@ -0,0 +1,195 @@ | |||
<html> | |||
<head> | |||
<meta http-equiv="Content-Language" content="en-us"> | |||
<title>Ant User Manual</title> | |||
</head> | |||
<body> | |||
<h2><a name="foreach">Pathconvert</a></h2> | |||
<h3>Description</h3> | |||
<p>Converts a nested path, path reference, or fileset reference to the form usable on a | |||
specified platform | |||
and stores the result in a given property. This operation is useful when script files | |||
(batch files or shell scripts) must be generated my the build system and they contain | |||
path information that must be properly formatted for the target architecture, not the | |||
architecture on which the build is running, or when you need to create a list of files | |||
separated by a given character, like a comma or a space. | |||
</p> | |||
<p>Prefix maps can be specified to map Windows drive letters to Unix paths and vice | |||
versa.</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">targetos</td> | |||
<td valign="top"> | |||
The target architecture. Must be one of 'unix' or 'windows'. <BR>This is a | |||
shorthand mechanism for specifying both <tt>pathsep</tt> and <tt>dirsep</tt> | |||
according to the specified target architecture. | |||
</td> | |||
<td valign="top" align="center"> | |||
Must specify one of <tt>targetos</tt>, <tt>pathsep</tt>,or <tt>dirsep</tt>. | |||
</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">dirsep</td> | |||
<td valign="top"> | |||
The character to use as the directory separator in the generated paths. | |||
</td> | |||
<td valign="top" align="center">No, defaults to current JVM <tt>File.separator</tt></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">pathsep</td> | |||
<td valign="top"> | |||
The character to use as the path element separator in the generated paths. | |||
</td> | |||
<td valign="top" align="center">No, defaults to current JVM <tt>File.pathSeparator</tt></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">property</td> | |||
<td valign="top">The name of the property in which to place the converted path</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">refid</td> | |||
<td valign="top">What to convert, given as a | |||
<a href="../using.html#references">reference</a> to a PATH or FILESET | |||
defined elsewhere</td> | |||
<td valign="top" align="center">No, if omitted a nested <path> element must be supplied.</td> | |||
</tr> | |||
</table> | |||
<h3>Parameters specified as nested elements</h3> | |||
<h4>map</h4> | |||
<p>Specifies the mapping of path prefixes between Unix and Windows.</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">from</td> | |||
<td valign="top">The prefix to match. Note that this value is case insensitive when | |||
the build is running on a windows platform and case sensitive when running on a | |||
Unix platform.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">to</td> | |||
<td valign="top">The replacement text to use when <i>from</i> is matched.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
</table> | |||
<p>Each map element specifies a single replacement map to be applied to the elements of | |||
the path being processed. If no map entries are specified, then no path prefix mapping | |||
is performed. | |||
</p> | |||
<p><i>Note that the map elements are applied in the order specified and the only the first | |||
matching map element is applied. So, the ordering of your map elements can be important | |||
if any <TT>from</tt> values are prefixes of other <tt>from</tt> values.</i> | |||
</p> | |||
<h4>path</h4> | |||
<p>If a path reference is not supplied using the <i>refid</i> attribute, then a | |||
nested path element must be supplied. See | |||
<a href="../using.html#path">Path-like Structures</a> for details.</p> | |||
<h3>Examples</h3> | |||
<p>In the examples below, assume that the property <b>wl.home</b> has the value | |||
<tt>d:\weblogic</tt> on Windows and <tt>/weblogic</tt> on Unix.</p> | |||
<h4>Example 1</h4> | |||
<pre> | |||
<path id="wl.path"> | |||
<pathelement location="${wl.home}/lib/weblogicaux.jar" /> | |||
<pathelement location="${wl.home}/classes" /> | |||
<pathelement location="${wl.home}/mssqlserver4/classes" /> | |||
<pathelement location="c:\winnt\System32" /> | |||
</path> | |||
<pathconvert targetos="unix" property="newpath" refid="wl.path"/> | |||
</pre> | |||
<p>Assuming wl.property has the value "d:\weblogic", will generate the path shown below | |||
and store it in the property named <tt>newpath</tt> | |||
</p> | |||
<pre> | |||
/weblogic/lib/weblogicaux.jar:/weblogic/classes:/weblogic/mssqlserver4/classes:/WINNT/SYSTEM32 | |||
</pre> | |||
Note that the drive letters have been removed. This is the default behavior when no map | |||
elements have been specified. | |||
<h4>Example 2</h4> | |||
<pre> | |||
<pathconvert targetos="unix" property="newpath" > | |||
<path id="wl.path"> | |||
<pathelement location="${wl.home}/lib/weblogicaux.jar" /> | |||
<pathelement location="${wl.home}/classes" /> | |||
<pathelement location="${wl.home}/mssqlserver4/classes" /> | |||
<pathelement location="c:\winnt\System32" /> | |||
</path> | |||
</pathconvert> | |||
</pre> | |||
This generates the exact same path as the previous example. It demonstrates the use of | |||
a nested path element. | |||
<h4>Example 3</h4> | |||
<pre> | |||
<pathconvert targetos="unix" property="newpath" refid="wl.path"> | |||
<map from="d:" to="/foo"/> | |||
<map from="c:" to="/bar"/> | |||
</pathconvert> | |||
</pre> | |||
<p>This example specifies two map entries that will convert path elements that start with | |||
<tt>c:</tt> to <TT>/dos</tt> and <tt>d:</tt> to <TT>/</tt>. The resulting path is shown | |||
below.</p> | |||
<pre> | |||
/weblogic/lib/weblogicaux.jar:/weblogic/classes:/weblogic/mssqlserver4/classes:/dos/WINNT/SYSTEM32 | |||
</pre> | |||
<h4>Example 4</h4> | |||
<pre> | |||
<pathconvert targetos="windows" property="newpath" > | |||
<path id="wl.path"> | |||
<pathelement location="${wl.home}/lib/weblogicaux.jar" /> | |||
<pathelement location="${wl.home}/classes" /> | |||
<pathelement location="${wl.home}/mssqlserver4/classes" /> | |||
<pathelement location="/dos/winnt/System32" /> | |||
</path> | |||
<map from="/dos" to="c:\"/> | |||
<map from="/" to="d:\"/> | |||
</pathconvert> | |||
</pre> | |||
<p>This example, similar to the one above but targetting windows, specifies two map | |||
entries that will convert path elements that start with | |||
<tt>/dos</tt> to <TT>c:\</tt> and <tt>/</tt> to <TT>d:\</tt>. Note that the order of the | |||
map elements was important here since <tt>/</tt> is a prefix of <tt>/dos</tt>. | |||
The resulting path is shown below.</p> | |||
<pre> | |||
d:\weblogic\lib\weblogicaux.jar;d:\weblogic\classes;d:\weblogic\mssqlserver4\classes;c:\WINNT\SYSTEM32 | |||
</pre> | |||
<h4>Example 5</h4> | |||
<pre> | |||
<fileset dir="${src.dir}" id="src.files"> | |||
<include name="**/*.java"/> | |||
</fileset> | |||
<pathconvert pathsep="," property="javafiles" refid="src.files"/> | |||
</pre> | |||
<p>This example takes the set of files determined by the fileset (all files ending | |||
in <tt>.java</tt>), joins them together separated by commas, and places the resulting | |||
list into the property <tt>javafiles</tt>. The directory separator is not specified, so | |||
it defaults to the appropriate character for the current platform. Such a list could | |||
then be used in another task, like <tt>javadoc</tt>, that requires a comma separated | |||
list of files. | |||
</p> | |||
<hr> | |||
</body> | |||
</html> | |||
@@ -36,6 +36,8 @@ instance.</p> | |||
<p>The value part of the properties being set, might contain references to other | |||
properties. These references are resolved at the time these properties are set. | |||
This also holds for properties loaded from a property file.</p> | |||
<p>A list of predefined properties can be found <a | |||
href="../using.html#built-in-props">here</a>.</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
@@ -46,12 +48,21 @@ This also holds for properties loaded from a property file.</p> | |||
<tr> | |||
<td valign="top">name</td> | |||
<td valign="top">the name of the property to set.</td> | |||
<td valign="top" align="center">Yes</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">value</td> | |||
<td valign="top">the value of the property.</td> | |||
<td valign="middle" align="center" rowspan="6">Yes</td> | |||
<td valign="middle" align="center" rowspan="3">One of these, when using the | |||
name attribute</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">location</td> | |||
<td valign="top">Sets the property to the absolute filename of the | |||
given file. If the value of this attribute is an absolute path, it | |||
is left unchanged (with / and \ characters converted to the | |||
current platforms conventions). Otherwise it is taken as a path | |||
relative to the project's basedir and expanded.</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">refid</td> | |||
@@ -62,19 +73,13 @@ This also holds for properties loaded from a property file.</p> | |||
<tr> | |||
<td valign="top">resource</td> | |||
<td valign="top">the resource name of the property file.</td> | |||
<td valign="middle" align="center" rowspan="3">One of these, when | |||
<b>not</b> using the name attribute</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">file</td> | |||
<td valign="top">the filename of the property file .</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">location</td> | |||
<td valign="top">Sets the property to the absolute filename of the | |||
given file. If the value of this attribute is an absolute path, it | |||
is left unchanged (with / and \ characters converted to the | |||
current platforms conventions). Otherwise it is taken as a path | |||
relative to the project's basedir and expanded.</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">environment</td> | |||
<td valign="top">the prefix to use when retrieving environment variables. Thus | |||
@@ -16,11 +16,11 @@ output to a file. | |||
associated with a file. The filename is used as a unique identifier for | |||
the recorders. The first call to the recorder task with an unused filename | |||
will create a recorder (using the parameters provided) and add it to the | |||
listeners of the build. All subsiquent calls to the recorder task using | |||
listeners of the build. All subsequent calls to the recorder task using | |||
this filename will modify that recorders state (recording or not) or other | |||
properties (like logging level). | |||
<p>Some technical issues: the file's print stream is flushed for "finished" | |||
<p>Some technical issues: the file's print stream is flushed for "finished" | |||
events (buildFinished, targetFinished and taskFinished), and is closed on | |||
a buildFinished event. | |||
@@ -41,8 +41,8 @@ a buildFinished event. | |||
<td valign="top">This tells the logger what to do: should it start | |||
recording or stop? The first time that the recorder task is called for | |||
this logfile, and if this attribute is not provided, then the default | |||
for this attribute is "start". If this attribute is not provided on | |||
subsiquest calls, then the state remains as previous. | |||
for this attribute is "start". If this attribute is not provided on | |||
subsequent calls, then the state remains as previous. | |||
[Values = {start|stop}, Default = no state change]</td> | |||
<td align="center" valign="middle">no</td> | |||
</tr> | |||
@@ -50,7 +50,7 @@ a buildFinished event. | |||
<td valign="top">append</td> | |||
<td valign="top">Should the recorder append to a file, or create a new | |||
one? This is only applicable the first time this task is called for | |||
this file. [Vaules = {yes|no}, Default=yes]</td> | |||
this file. [Values = {yes|no}, Default=yes]</td> | |||
<td align="center" valign="middle">no</td> | |||
</tr> | |||
<tr> | |||
@@ -58,38 +58,38 @@ a buildFinished event. | |||
<td valign="top">At what logging level should this recorder instance | |||
record to? This is not a once only parameter (like <code>append</code> | |||
is) -- you can increase or decrease the logging level as the build process | |||
continues. [Vaules= {error|warn|info|verbose|debug}, Default = no change] | |||
continues. [Values= {error|warn|info|verbose|debug}, Default = no change] | |||
</td> | |||
<td align="center" valign="middle">no</td> | |||
</tr> | |||
</table> | |||
<h3>Examples</h3> | |||
<p>The following build.xml snippit is an example of how to use the recorder | |||
<p>The following build.xml snippet is an example of how to use the recorder | |||
to record just the <code><javac></code> task: | |||
<pre> | |||
... | |||
<compile > | |||
<record name="log.txt" action="start" /> | |||
<record name="log.txt" action="start" /> | |||
<javac ... | |||
<record name="log.txt" action="stop" /> | |||
<record name="log.txt" action="stop" /> | |||
<compile/> | |||
... | |||
</pre> | |||
<p>The following two calls to <code><record></code> set up two | |||
recorders: one to file "records-simple.log" at logging level <code>info</code> | |||
(the default) and one to file "ISO.log" using logging level of | |||
recorders: one to file "records-simple.log" at logging level <code>info</code> | |||
(the default) and one to file "ISO.log" using logging level of | |||
<code>verbose</code>. | |||
<pre> | |||
... | |||
<record name="records-simple.log" /> | |||
<record name="ISO.log" loglevel="verbose" /> | |||
<record name="records-simple.log" /> | |||
<record name="ISO.log" loglevel="verbose" /> | |||
... | |||
</pre> | |||
<h3>Notes</h3> | |||
<p>There is some funtionality that I would like to be able to add in the | |||
<p>There is some functionality that I would like to be able to add in the | |||
future. They include things like the following: | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
@@ -113,8 +113,8 @@ future. They include things like the following: | |||
</tr> | |||
<tr> | |||
<td valign="top">includetarget</td> | |||
<td valign="top" rowspan=2>A comma-separated list of targets to automaticly | |||
record. If this value is "all", then all targets are recorded. | |||
<td valign="top" rowspan=2>A comma-separated list of targets to automatically | |||
record. If this value is "all", then all targets are recorded. | |||
[Default = all]</td> | |||
<td align="center" valign="middle">no</td> | |||
</tr> | |||
@@ -124,10 +124,10 @@ future. They include things like the following: | |||
</tr> | |||
<tr> | |||
<td valign="top">includetask</td> | |||
<td valign="top" rowspan=2>A comma-separated list of task to automaticly | |||
<td valign="top" rowspan=2>A comma-separated list of task to automatically | |||
record or not. This could be difficult as it could conflict with the | |||
<code>includetarget/excludetarget</code>. (e.g.: | |||
<code>includetarget="compile" exlcudetask="javac"</code>, what should | |||
<code>includetarget="compile" exlcudetask="javac"</code>, what should | |||
happen?)</td> | |||
<td align="center" valign="middle">no</td> | |||
</tr> | |||
@@ -137,7 +137,7 @@ future. They include things like the following: | |||
</tr> | |||
<tr> | |||
<td valign="top">action</td> | |||
<td valign="top">add greater flexability to the action attribute. Things | |||
<td valign="top">add greater flexibility to the action attribute. Things | |||
like <code>close</code> to close the print stream.</td> | |||
<td align="center" valign="top">no</td> | |||
</tr> | |||
@@ -57,8 +57,8 @@ | |||
Sleep for about 10 mS. | |||
<pre> <sleep seconds="2"/></pre> | |||
Sleep for about 2 seconds. | |||
<pre> <sleep minutes="-59" seconds="-58"/></pre> | |||
<p>Sleep for -one hour less 59:58, or two seconds again </p> | |||
<pre> <sleep hours="1" minutes="-59" seconds="-58"/></pre> | |||
<p>Sleep for one hour less 59:58, or two seconds again </p> | |||
<pre> <sleep /></pre> | |||
Sleep for no time at all. This may yield the CPU time to another thread or process. | |||
<hr> | |||
@@ -7,13 +7,21 @@ | |||
<h2><a name="sql">Sql</a></h2> | |||
<h3>Description</h3> | |||
<p>Executes a series of SQL statements via JDBC to a database. Statements can either be read in from a text file using the <i>src</i> attribute or from between the enclosing SQL tags.</p> | |||
<p>Executes a series of SQL statements via JDBC to a database. Statements can | |||
either be read in from a text file using the <i>src</i> attribute or from | |||
between the enclosing SQL tags.</p> | |||
<p>Multiple statements can be provided, separated by semi-colons (or the defined <i>delimiter</i>). Individual lines within the statements can be commented using either --, // or REM at the start of the line.</p> | |||
<p>Multiple statements can be provided, separated by semicolons (or the | |||
defined <i>delimiter</i>). Individual lines within the statements can be | |||
commented using either --, // or REM at the start of the line.</p> | |||
<p>The <i>autocommit</i> attribute specifies whether auto-commit should be turned on or off whilst executing the statements. If auto-commit is turned on each statement will be executed and committed. If it is turned off the statements will all be executed as one transaction.</p> | |||
<p>The <i>autocommit</i> attribute specifies whether auto-commit should be | |||
turned on or off whilst executing the statements. If auto-commit is turned | |||
on each statement will be executed and committed. If it is turned off the | |||
statements will all be executed as one transaction.</p> | |||
<p>The <i>onerror</i> attribute specifies how to proceed when an error occurs during the execution of one of the statements. | |||
<p>The <i>onerror</i> attribute specifies how to proceed when an error occurs | |||
during the execution of one of the statements. | |||
The possible values are: <b>continue</b> execution, only show the error; | |||
<b>stop</b> execution and commit transaction; | |||
and <b>abort</b> execution and transaction and fail task.</p> | |||
@@ -53,7 +61,7 @@ and <b>abort</b> execution and transaction and fail task.</p> | |||
<tr> | |||
<td width="12%" valign="top">delimiter</td> | |||
<td width="78%" valign="top">String that separates SQL statements</td> | |||
<td width="10%" valign="top">No, default ";"</td> | |||
<td width="10%" valign="top">No, default ";"</td> | |||
</tr> | |||
<tr> | |||
<td width="12%" valign="top">autocommit</td> | |||
@@ -134,7 +142,9 @@ The | |||
/> | |||
</pre></blockquote> | |||
<p>Connects to the database given in <i>url</i> as the sa user using the org.database.jdbcDriver and executes the SQL statements contained within the file data.sql</p> | |||
<p>Connects to the database given in <i>url</i> as the sa user using the | |||
org.database.jdbcDriver and executes the SQL statements contained within | |||
the file data.sql</p> | |||
<blockquote><pre><sql | |||
driver="org.database.jdbcDriver" | |||
@@ -151,7 +161,8 @@ truncate table some_other_table; | |||
</pre></blockquote> | |||
<p>Connects to the database given in <i>url</i> as the sa | |||
user using the org.database.jdbcDriver and executes the two SQL statements inserting data into some_table and truncating some_other_table </p> | |||
user using the org.database.jdbcDriver and executes the two SQL statements | |||
inserting data into some_table and truncating some_other_table </p> | |||
<p>Note that you may want to enclose your statements in | |||
<code><![CDATA[</code> ... <code>]]></code> sections so you don't | |||
@@ -170,7 +181,10 @@ update some_table set column1 = column1 + 1 where column2 < 42; | |||
]]></sql> | |||
</pre></blockquote> | |||
<p>The following connects to the database given in url as the sa user using the org.database.jdbcDriver and executes the SQL statements contained within the files data1.sql, data2.sql and data3.sql and then executes the truncate operation on <i>some_other_table</i>.</p> | |||
<p>The following connects to the database given in url as the sa user using | |||
the org.database.jdbcDriver and executes the SQL statements contained within | |||
the files data1.sql, data2.sql and data3.sql and then executes the truncate | |||
operation on <i>some_other_table</i>.</p> | |||
<blockquote><pre><sql | |||
driver="org.database.jdbcDriver" | |||
@@ -186,7 +200,10 @@ update some_table set column1 = column1 + 1 where column2 < 42; | |||
</sql> | |||
</pre></blockquote> | |||
<p>The following connects to the database given in url as the sa user using the org.database.jdbcDriver and executes the SQL statements contained within the file data.sql, with output piped to outputfile.txt, searching /some/jdbc.jar as well as the system classpath for the driver class.</p> | |||
<p>The following connects to the database given in url as the sa user using the | |||
org.database.jdbcDriver and executes the SQL statements contained within the | |||
file data.sql, with output piped to outputfile.txt, searching /some/jdbc.jar | |||
as well as the system classpath for the driver class.</p> | |||
<blockquote><pre><sql | |||
driver="org.database.jdbcDriver" | |||
@@ -12,6 +12,8 @@ | |||
<p>Process a set of documents via XSLT.</p> | |||
<p>This is useful for building views of XML based documentation, | |||
or in generating code.</p> | |||
<p><b>Note:</b> 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> | |||
<p>It is possible to refine the set of files that are being copied. This can be | |||
done with the <i>includes</i>, <i>includesfile</i>, <i>excludes</i>, <i>excludesfile</i> and <i>defaultexcludes</i> | |||
attributes. With the <i>includes</i> or <i>includesfile</i> attribute you specify the files you want to | |||
@@ -87,7 +89,10 @@ inclusion/exclusion of files works, and how to write patterns.</p> | |||
XSL:P processor, "xalan" for the Apache XML Xalan (version 1) | |||
processor, or the name of an arbitrary XSLTLiaison class. Defaults to trax, | |||
followed by xslp then xalan (in that order). The first one found in your | |||
class path is the one that is used.</td> | |||
class path is the one that is used. | |||
<em><strong>DEPRECATED</strong> - XSL:P is deprecated and will be removed | |||
in the next version. Use trax or xalan instead.</em>. | |||
</td> | |||
<td align="center" valign="top">No</td> | |||
</tr> | |||
<tr> | |||
@@ -36,7 +36,7 @@ probably in an initialization target. | |||
The Tstamp task supports a <code><format></code> nested element that | |||
allows a property to be set to the current date and time in a given format. | |||
The date/time patterns are as defined in the Java | |||
<a href=http://java.sun.com/products/jdk/1.2/docs/api/java/text/SimpleDateFormat.html>SimpleDateFormat</a> class. | |||
<a href="http://java.sun.com/products/jdk/1.2/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat</a> class. | |||
The format element also allows offsets to be applied to the time to generate different time values. | |||
<br><br> | |||
<table width="60%" border="1" cellpadding="2" cellspacing="0"> | |||
@@ -82,7 +82,7 @@ The format element also allows offsets to be applied to the time to generate dif | |||
<tr> | |||
<td valign="top">locale</td> | |||
<td valign="top">The locale used to create date/time string. The general | |||
form is "language, country, variant" but either variant or variant and | |||
form is "language, country, variant" but either variant or variant and | |||
country may be omitted. For more information please refer to documentation | |||
for the | |||
<a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Locale.html">Locale</a> | |||
@@ -93,6 +93,12 @@ attributes of zipfilesets in a Zip or Jar task.)</p> | |||
<td valign="top">the manifest file to use.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">update</td> | |||
<td valign="top">indicates whether to update or overwrite | |||
the destination file if it already exists.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">whenempty</td> | |||
<td valign="top">Behavior to use if no files match.</td> | |||
@@ -33,6 +33,11 @@ if <code>basedir</code> is set. You may use any mixture of the implicit file set | |||
and optional subelements like <code><include></code>); explicit nested | |||
<code><fileset></code> elements so long as at least one fileset total is specified. The ZIP file will | |||
only reflect the relative paths of files <i>within</i> each fileset. The Zip task and its derivatives know a special form of a fileset named zipfileset that has additional attributes (described below). </p> | |||
<p>The <code>update</code> parameter controls what happens if the | |||
ZIP file already exists. When set to <code>yes</code>, the ZIP file is | |||
updated with the files specified. (New files are added; old files are | |||
replaced with the new versions.) When set to <code>no</code> (the | |||
default) the ZIP file is overwritten. | |||
<p>The <code>whenempty</code> parameter controls what happens when no files match. | |||
If <code>skip</code> (the default), the ZIP is not created and a warning is issued. | |||
If <code>fail</code>, the ZIP is not created and the build is halted with an error. | |||
@@ -42,7 +47,7 @@ which should be recognized as such by compliant ZIP manipulation tools.</p> | |||
for filenames - this is consistent with the command line ZIP tools, | |||
but causes problems if you try to open them from within Java and your | |||
filenames contain non US-ASCII characters. Use the encoding attribute | |||
and set it to UTF8 to create zip files that can savely be read by | |||
and set it to UTF8 to create zip files that can safely be read by | |||
Java.</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
@@ -109,6 +114,12 @@ Java.</p> | |||
("yes"/"no"). Default excludes are used when omitted.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">update</td> | |||
<td valign="top">indicates whether to update or overwrite | |||
the destination file if it already exists.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">whenempty</td> | |||
<td valign="top">Behavior when no files match.</td> | |||
@@ -136,6 +147,14 @@ for inclusion in the archive.</p> | |||
/></pre> | |||
<p>zips all files in the <code>htdocs/manual</code> directory into a file called <code>manual.zip</code> | |||
in the <code>${dist}</code> directory.</p> | |||
<pre> <zip zipfile="${dist}/manual.zip" | |||
basedir="htdocs/manual" | |||
update="true" | |||
/></pre> | |||
<p>zips all files in the <code>htdocs/manual</code> directory into a file called <code>manual.zip</code> | |||
in the <code>${dist}</code> directory. If <code>manual.zip</code> | |||
doesn't exist, it is created; otherwise it is updated with the | |||
new/changed files.</p> | |||
<pre> <zip zipfile="${dist}/manual.zip" | |||
basedir="htdocs/manual" | |||
excludes="mydocs/**, **/todo.html" | |||
@@ -169,8 +188,6 @@ under <code>docs/examples</code>. The archive might end up containing the files | |||
docs/ChangeLog.txt | |||
docs/examples/index.html | |||
</code></pre> | |||
<hr> | |||
<p align="center">Copyright © 2000,2001 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
@@ -34,7 +34,6 @@ same level as <code>target</code> - i.e., as children of | |||
<td valign="top">Comma-separated list of file names.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
</tr> | |||
</table> | |||
<h4>Examples</h4> | |||
@@ -0,0 +1,118 @@ | |||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | |||
<HTML> | |||
<HEAD> | |||
<TITLE>Ant User Manual</TITLE> | |||
<META http-equiv="Content-Type" content="text/html; charset=windows-1252"> | |||
<META http-equiv="Content-Language" content="en-us"> | |||
<META content="MSHTML 5.50.4522.1800" name=GENERATOR> | |||
</HEAD> | |||
<BODY> | |||
<H2><A name="fileset">Filterset</A></H2> | |||
<P>FilterSets are groups of filters. Filters can be defined as token value pairs | |||
or be read in from a file. FilterSets can appear inside tasks that support this | |||
feature or at the same level as <CODE>target</CODE> - i.e., as children of | |||
<CODE>project</CODE>.</P>In addition, Filtersets can have begintoken and/or | |||
endtoken attributes to define what to match. <BR>Filtersets are used for doing | |||
replacements in tasks like copy etc.<BR> | |||
<H2>Filterset</H2> | |||
<TABLE cellSpacing=0 cellPadding=2 border=1> | |||
<TR> | |||
<TD vAlign=top><B>Attribute</B></TD> | |||
<TD vAlign=top><B>Description</B></TD> | |||
<TD vAlign=top><B>Default</B></TD> | |||
<TD vAlign=top align="center"><B>Required</B></TD> | |||
</TR> | |||
<TR> | |||
<TD vAlign=top>starttoken</TD> | |||
<TD vAlign=top>The string marking the beginning of a token. eg | |||
<STRONG>@</STRONG>Date@</TD> | |||
<TD vAlign=top>@</TD> | |||
<TD vAlign=top align="center">No</TD> | |||
</TR> | |||
<TR> | |||
<TD vAlign=top>endtoken</TD> | |||
<TD vAlign=top>The string marking the end of a token. eg | |||
@Date<STRONG>@</STRONG></TD> | |||
<TD vAlign=top>@</TD> | |||
<TD vAlign=top align="center">No</TD> | |||
</TR> | |||
</TABLE> | |||
<H2>Filter</H2> | |||
<TABLE cellSpacing=0 cellPadding=2 border=1> | |||
<TR> | |||
<TD vAlign=top><B>Attribute</B></TD> | |||
<TD vAlign=top><B>Description</B></TD> | |||
<TD vAlign=top align="center"><B>Required</B></TD> | |||
</TR> | |||
<TR> | |||
<TD vAlign=top>token</TD> | |||
<TD vAlign=top>The token to replace eg @<STRONG>Date</STRONG>@</TD> | |||
<TD vAlign=top align="center">Yes</TD> | |||
</TR> | |||
<TR> | |||
<TD vAlign=top>value</TD> | |||
<TD vAlign=top>The value to replace it with eg Thursday, April 26, 2001</TD> | |||
<TD vAlign=top align="center">Yes</TD> | |||
</TR> | |||
</TABLE> | |||
<H2>Filtersfile</H2> | |||
<TABLE cellSpacing=0 cellPadding=2 border=1> | |||
<TR> | |||
<TD vAlign=top><B>Attribute</B></TD> | |||
<TD vAlign=top><B>Description</B></TD> | |||
<TD vAlign=top align="center"><B>Required</B></TD> | |||
</TR> | |||
<TR> | |||
<TD vAlign=top>file</TD> | |||
<TD vAlign=top>The file to load tokens from should be a properties file of | |||
name value pairs.</TD> | |||
<TD vAlign=top align="center">Yes</TD> | |||
</TR> | |||
</TABLE> | |||
<H4>Examples</H4> | |||
<p>You are copying the version.txt file to the dist directory from the build directory | |||
but wish to replace the token @DATE@ with todays date.</p> | |||
<BLOCKQUOTE><PRE> | |||
<copy file="${build.home}/version.txt" toFile="${dist.home}/version.txt"< | |||
<filterset> | |||
<filter token="DATE" value="${DATE}"/> | |||
</filterset> | |||
</copy> | |||
</PRE></BLOCKQUOTE> | |||
<p>You are copying the version.txt file to the dist directory from the build directory | |||
but wish to replace the token %DATE* with todays date.</p> | |||
<BLOCKQUOTE><PRE> | |||
<copy file="${build.home}/version.txt" toFile="${dist.home}/version.txt"> | |||
<filterset begintoken="%" endtoken="*"> | |||
<filter token="DATE" value="${DATE}"/> | |||
</filterset> | |||
</copy> | |||
</PRE></BLOCKQUOTE> | |||
<p>Copy all the docs but change all dates and appropriate notices as stored in a file.</p> | |||
<BLOCKQUOTE><PRE> | |||
<copy toDir="${dist.home}/docs" > | |||
<fileset dir="${build.home}/docs"> | |||
<include name="**/*.html"> | |||
</fileset> | |||
<filterset begintoken="%" endtoken="*"> | |||
<filter token="DATE" value="${DATE}"/> | |||
<filtersfile file="${user.home}/dist.properties"/> | |||
</filterset> | |||
</copy> | |||
</PRE></BLOCKQUOTE> | |||
<HR> | |||
<P align=center>Copyright © 2000,2001 Apache Software Foundation. All rights | |||
Reserved.</P></BODY></HTML> |
@@ -63,6 +63,10 @@ with the following attributes:</p> | |||
<td align="center" valign="top">Depends on implementation.</td> | |||
</tr> | |||
</table> | |||
<p>Note that Ant will not automatically convert / or \ characters in | |||
the <code>to</code> and <code>from</code> attributes to the correct | |||
directory separator of your current platform. If you need to specify | |||
this separator, use <code>${file.separator}</code> instead.</p> | |||
<p>The classpath can be specified via a nested | |||
<code><classpath></code>, as well - that is, | |||
a <a href="../using.html#path">path</a>-like structure.</p> | |||
@@ -59,7 +59,7 @@ exclude.</p> | |||
</tr> | |||
<tr> | |||
<td valign="top">name</td> | |||
<td valign="top">the <a href=="../dirtasks.html#patterns">pattern</a> | |||
<td valign="top">the <a href="../dirtasks.html#patterns">pattern</a> | |||
to in/exclude.</td> | |||
<td align="center" valign="top">Yes</td> | |||
</tr> | |||
@@ -23,7 +23,7 @@ | |||
quick generation, modification, and use of Ant build files, | |||
helping the user define a build process and track down build | |||
problems. It is not meant to be an IDE, but an enabler for the | |||
powerful features available in Ant, particularlyl for novice | |||
powerful features available in Ant, particularly for novice | |||
users, or users who want a rapid way of controlling their build | |||
process.</P> | |||
@@ -59,36 +59,25 @@ | |||
<H2>Getting Involved</H2> | |||
<P>The source code for Antidote is included with the <A | |||
HREF="http://jakarta.apache.org/site/cvsindex.html">CVS</A> | |||
version of <A | |||
HREF="http://jakarta.apache.org/cvsweb/index.cgi/jakarta-ant">Ant</A>, | |||
starting in the directory <A | |||
HREF="http://jakarta.apache.org/cvsweb/index.cgi/jakarta-ant/src/antidote"> | |||
jakarta-ant/src/antidote</A>. All the existing documentation can | |||
<P>The source code for Antidote is located in a separate Module | |||
(<a href="http://cvs.apache.org/viewcvs/jakarta-ant-antidote/">jakarta-ant-antidote</a>) in CVS. | |||
All the existing documentation can | |||
be found there where new contributors should read: | |||
<UL> | |||
<LI><A | |||
HREF="http://jakarta.apache.org/cvsweb/index.cgi/~checkout~/jakarta-ant/src/antidote/docs/design-overview.html">Design | |||
Overview</A></LI> | |||
<LI><A HREF="http://jakarta.apache.org/cvsweb/index.cgi/~checkout~/jakarta-ant/src/antidote/docs/gui-requirements.html">Feature List</A></LI> | |||
<LI><A | |||
HREF="http://jakarta.apache.org/cvsweb/index.cgi/~checkout~/jakarta-ant/src/antidote/docs/gui-ideas.txt">Idea Refinement</A></LI> | |||
<LI><A | |||
HREF="http://jakarta.apache.org/cvsweb/index.cgi/~checkout~/jakarta-ant/src/antidote/docs/new-module-howto.html">New Module HOWTO</A></LI> | |||
<LI><A | |||
HREF="http://jakarta.apache.org/cvsweb/index.cgi/~checkout~/jakarta-ant/src/antidote/docs/uml/index.html">Static | |||
Class Diagrams</A></LI> | |||
<LI><A HREF="http://cvs.apache.org/viewcvs/~checkout~/jakarta-ant-antidote/docs/developer/design/design-overview.html">Design Overview</A></LI> | |||
<LI><A HREF="http://cvs.apache.org/viewcvs/~checkout~/jakarta-ant-antidote/docs/developer/design/gui-requirements.html">Feature List</A></LI> | |||
<LI><A HREF="http://cvs.apache.org/viewcvs/~checkout~/jakarta-ant-antidote/docs/developer/design/gui-ideas.txt">Idea Refinement</A></LI> | |||
<LI><A HREF="http://cvs.apache.org/viewcvs/~checkout~/jakarta-ant-antidote/docs/developer/design/new-module-howto.html">New Module HOWTO</A></LI> | |||
<LI><A HREF="http://cvs.apache.org/viewcvs/~checkout~/jakarta-ant-antidote/docs/developer/design/uml/index.html">Static Class Diagrams</A></LI> | |||
</UL> | |||
<P>Online discussions about Antidote occur on the <A | |||
HREF="http://jakarta.apache.org/site/mail.html">jakarta-ant | |||
mailing list</A>. The application infrastructure is fairly | |||
complete, but there are almost unlimited oppotunities for feature | |||
complete, but there are almost unlimited opportunities for feature | |||
contributions. | |||
<P>Asipring contributors new to the Jakarta Project should | |||
<P>Aspiring contributors new to the Jakarta Project should | |||
(carefully) read the following for details on the contribution | |||
process: | |||
<UL> | |||
@@ -104,7 +93,7 @@ | |||
<HR> | |||
<P ALIGN="center">Copyright © 2000 Apache Software Foundation. All | |||
<P ALIGN="center">Copyright © 2000,2001 Apache Software Foundation. All | |||
rights Reserved.</P> | |||
</BODY> | |||
@@ -19,18 +19,20 @@ Version 1.1 - 2001/02/14<br> | |||
<h2>Table of Contents</h2> | |||
<ul> | |||
<li><a href="#introduction">Introduction</a></li> | |||
<li><a href="#tasks">The Tasks</a><a href="#introduction"></a></li> | |||
<ul> | |||
<li><a href="#vajload">VAJLoad</a></li> | |||
<li><a href="#vajexport">VAJExport</a></li> | |||
<li><a href="#vajimport">VAJImport</a></li> | |||
</ul> | |||
<li><a href="#tasks">The Tasks</a><a href="#introduction"></a> | |||
<ul> | |||
<li><a href="#vajload">VAJLoad</a></li> | |||
<li><a href="#vajexport">VAJExport</a></li> | |||
<li><a href="#vajimport">VAJImport</a></li> | |||
</ul> | |||
</li> | |||
<li><a href="#sample_buildfile">A sample build file</a><br></li> | |||
<li><a href="#plugin">The Plugin</a></li> | |||
<ul> | |||
<li><a href="#installation">Installation</a></li> | |||
<li><a href="#usage">Usage</a></li> | |||
</ul> | |||
<li><a href="#plugin">The Plugin</a> | |||
<ul> | |||
<li><a href="#installation">Installation</a></li> | |||
<li><a href="#usage">Usage</a></li> | |||
</ul> | |||
</li> | |||
<li><a href="#faq">Frequently Asked Questions</a></li> | |||
<li><a href="#va_versions">Visual Age Versions</a></li> | |||
<li><a href="#history">History</a><a href="#history"></a></li> | |||
@@ -114,8 +116,8 @@ These tasks are described in detail below. | |||
<h3>Example</h3> | |||
<pre> | |||
<vajload> | |||
<vajproject name="My Testcases" version="1.7beta" /> | |||
<vajproject name="JUnit" version="3.2" /> | |||
<vajproject name="My Testcases" version="1.7beta" /> | |||
<vajproject name="JUnit" version="3.2" /> | |||
</vajload> | |||
</pre> | |||
@@ -125,7 +127,7 @@ These tasks are described in detail below. | |||
<h3>Description:</h3> | |||
<p>Exports Java source files, class files and/or resources from the workspace | |||
to the file system. Exports can be specified by giving the VAJ project | |||
name and package name(s). This works very similar to <a href="index.html#fileset"> | |||
name and package name(s). This works very similar to <a href="../CoreTypes/fileset.html"> | |||
FileSets</a>. </p> | |||
<h3>Parameters</h3> | |||
@@ -143,28 +145,28 @@ FileSets</a>. </p> | |||
</tr> | |||
<tr> | |||
<td valign="Top">exportSources</td> | |||
<td valign="Top">export source files (default: "yes")</td> | |||
<td valign="Top">export source files (default: "yes")</td> | |||
<td valign="Top" align="Center">no</td> | |||
</tr> | |||
<tr valign="Top"> | |||
<td valign="Top">exportResources</td> | |||
<td valign="Top">export resource files (default: "yes")</td> | |||
<td valign="Top">export resource files (default: "yes")</td> | |||
<td valign="Top" align="Center">no</td> | |||
</tr> | |||
<tr valign="Top"> | |||
<td valign="Top">exportClasses</td> | |||
<td valign="Top">export class files (default: "no")</td> | |||
<td valign="Top">export class files (default: "no")</td> | |||
<td valign="Top" align="Center">no</td> | |||
</tr> | |||
<tr valign="Top"> | |||
<td valign="Top">exportDebugInfo</td> | |||
<td valign="Top">include debug info in exported | |||
class files (default: "no")</td> | |||
class files (default: "no")</td> | |||
<td valign="Top" align="Center">no</td> | |||
</tr> | |||
<tr valign="Top"> | |||
<td valign="Top">defaultexcludes </td> | |||
<td valign="Top">use default excludes when exporting (default: "yes") | |||
<td valign="Top">use default excludes when exporting (default: "yes") | |||
<td valign="Top" align="Center">no</td> | |||
</tr> | |||
</tbody> | |||
@@ -212,9 +214,9 @@ specifies the packages to exclude from the export<br> | |||
<h3>Example</h3> | |||
<pre> | |||
<vajexport destdir="${src.dir}" exportResources="no"> | |||
<include name="MyProject/**"/> | |||
<exclude name="MyProject/test/**"/> | |||
<vajexport destdir="${src.dir}" exportResources="no"> | |||
<include name="MyProject/**"/> | |||
<exclude name="MyProject/test/**"/> | |||
</vajexport> | |||
</pre> | |||
This example exports all packages in the VAJ project 'MyProject', except | |||
@@ -268,7 +270,7 @@ system into VAJ. These imports can be specified with a fileset. </p> | |||
<h3>Parameters specified as nested elements</h3> | |||
<h4>fileset</h4> | |||
A <a href="index.html#fileset">FileSet</a> specifies the files to import. | |||
A <a href="../CoreTypes/fileset.html">FileSet</a> specifies the files to import. | |||
<h3>Example</h3> | |||
<pre> | |||
@@ -9,10 +9,10 @@ | |||
<h2><a name="log">BorlandDeploy</a>Tool</h2> | |||
<h3>Description</h3> | |||
<p>The BorlandDeployTool is a vendor specifc nested element for the Ejbjar optionaltask. | |||
<p>The BorlandDeployTool is a vendor specific nested element for the Ejbjar optional task. | |||
<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 | |||
Deployement Descriptor, builds the jar file including the support files and | |||
Deployment Descriptor, builds the jar file including the support files and | |||
verify whether the produced jar is valid or not. | |||
<h3>Borland element</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
@@ -55,7 +55,7 @@ | |||
<td valign="top" width="915"><b>Deprecated</b>. Defines the location of the | |||
weblogic-ejb-jar 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 <dtd> element, described above</td> | |||
do not, you should use a nested <dtd> element, described above</td> | |||
<td align="center" valign="middle" width="62">no</td> | |||
</tr> | |||
<tr> | |||
@@ -63,7 +63,7 @@ | |||
<td valign="top" width="915"><b>Deprecated</b>. Defines the location of the | |||
ejb-jar DTD in the weblogic class hierarchy. This should not be necessary | |||
if you have weblogic in your classpath. If you do not, you should use a | |||
nested <dtd> element, described above. </td> | |||
nested <dtd> element, described above. </td> | |||
<td align="center" valign="middle" width="62">no</td> | |||
</tr> | |||
<tr> | |||
@@ -75,7 +75,7 @@ | |||
</table> | |||
<h3>Examples</h3> | |||
<p>The following build.xml snippit 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 | |||
<pre> <ejbjar srcdir="${build.classes}" basejarname="vsmp" descriptordir="${rsc.dir}/hrmanager"> | |||
<borland destdir="lib" verify="on" generateclient="on"> | |||
@@ -46,7 +46,7 @@ | |||
</table> | |||
<h3>Examples</h3> | |||
<p>The following build.xml snippit 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. | |||
<pre> | |||
<blgenclient ejbjar="lib/secutest-ejb.jar" clientjar="lib/client.jar" debug="true" mode="java"> | |||
@@ -16,12 +16,12 @@ | |||
<li><a href="#ccmcreatetask">CCMCreateTask</a></li> | |||
</ul> | |||
<p>These ant tasks are wrapper around Continnus Source Manager. It have been tested | |||
under version 5.1 on Windows 2000.</p> | |||
<p>These ant tasks are wrappers around Continuus Source Manager. They have been tested | |||
with version 5.1 on Windows 2000, but should work on other platforms with ccm installed.</p> | |||
<hr> | |||
<h2><a name="cccheckin">CCMCheckin</a></h2> | |||
<h3>Description</h3> | |||
Task to perform a Checkin command to Continnus | |||
Task to checkin a file | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0" width="598"> | |||
<tr> | |||
@@ -36,29 +36,29 @@ Task to perform a Checkin command to Continnus | |||
</tr> | |||
<tr> | |||
<td>comment</td> | |||
<td>Specify a comment.</td> | |||
<td>Specify a comment. Default is "Checkin" plus the date</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>task</td> | |||
<td>Specify the task number used to checkin the file (may use 'default')</td> | |||
<td>Specify the task number used to check in the file (may use 'default')</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>path to the ccm excutable file. default serach into the PATH</td> | |||
<td>path to the ccm executable file, required if it is not on the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
</table> | |||
<h3>Examples</h3> | |||
<blockquote> | |||
<pre><ccmcheckin file="c:/wa/com/foo/MyFile.java" | |||
comment="mycomment" /> | |||
</pre> | |||
</blockquote> | |||
<p>Does a Continnuus <i>checkin</i> on the file <i>c:/wa/com/foo/MyFile.java</i>. | |||
<p>Checks in the file <i>c:/wa/com/foo/MyFile.java</i>. | |||
Comment attribute <i>mycomment</i> is added as a task comment. The task | |||
used is the one set as the fault.</p> | |||
used is the one set as the default.</p> | |||
<hr> | |||
<h2><a name="cccheckout">CCMCheckout</a></h2> | |||
<h3>Description</h3> | |||
@@ -66,45 +66,45 @@ Task to perform a Checkout command to Continuus | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0" width="614"> | |||
<tr> | |||
<th width="84">Attribute</th> | |||
<th width="396">Values</th> | |||
<th width="24">Required</th> | |||
<th>Attribute</th> | |||
<th>Values</th> | |||
<th>Required</th> | |||
</tr> | |||
<tr> | |||
<td width="84">file</td> | |||
<td width="396">Path to the file that the command will operate on</td> | |||
<td width="24">Yes</td> | |||
<td>file</td> | |||
<td>Path to the file that the command will operate on</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td width="84">comment</td> | |||
<td width="396">Specify a comment.</td> | |||
<td width="24">No</td> | |||
<td>comment</td> | |||
<td>Specify a comment.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td width="84">task</td> | |||
<td width="396">Specify the task number used to checkin the file (may use | |||
<td>task</td> | |||
<td>Specify the task number used to checkin the file (may use | |||
'default')</td> | |||
<td width="24">No</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td width="84">ccmcommand</td> | |||
<td width="396">path to the ccm excutable file. default serach into the PATH</td> | |||
<td width="24">No</td> | |||
<td>ccmcommand</td> | |||
<td>path to the ccm executable file, required if it is not on the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
<h3>Examples</h3> | |||
<blockquote> | |||
<pre><ccmcheckin file="c:/wa/com/foo/MyFile.java" | |||
<pre><ccmcheckout file="c:/wa/com/foo/MyFile.java" | |||
comment="mycomment"/> | |||
</pre> | |||
</blockquote> | |||
<p>Does a Continnuus <i>checkout</i> on the file <i>c:/wa/com/foo/MyFile.java</i>. | |||
<p>Check out the file <i>c:/wa/com/foo/MyFile.java</i>. | |||
Comment attribute <i>mycomment</i> is added as a task comment | |||
The used task is the one set as the fault.</p> | |||
The used task is the one set as the default.</p> | |||
<hr> | |||
<h2><a name="ccmcheckintask">CCMCheckinTask</a></h2> | |||
<h3>Description</h3> | |||
Task to perform a check in default task command to Continnuus | |||
Task to perform a check in default task command to Continuus | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
@@ -119,12 +119,12 @@ Task to perform a check in default task command to Continnuus | |||
</tr> | |||
<tr> | |||
<td>task</td> | |||
<td>Specify the task number used to checkin the file (may use 'default')</td> | |||
<td>Specify the task number used to check in the file (may use 'default')</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>path to the ccm excutable file. default serach into the PATH</td> | |||
<td >path to the ccm executable file, required if it is not on the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
@@ -133,7 +133,7 @@ Task to perform a check in default task command to Continnuus | |||
<pre><ccmcheckintask comment="blahblah/> | |||
</pre> | |||
</blockquote> | |||
<p>Does a Checkin default task on all the checkou-ed filed in the current task.</p> | |||
<p>Does a Checkin default task on all the checked out files in the current task.</p> | |||
<hr> | |||
<h2><a name="ccmreconfigure">CCMReconfigure</a></h2> | |||
<h3>Description</h3> | |||
@@ -162,22 +162,22 @@ Task to perform an reconfigure command to Continuus. | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>path to the ccm excutable file. default serach into the PATH</td> | |||
<td >path to the ccm executable file, required if it is not on the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
<h3>Examples</h3> | |||
<blockquote> | |||
<pre><ccmreconfigure ccmproject="ANTCCM_TEST#BMO_1" verbose="true" /> | |||
<pre><ccmreconfigure ccmproject="ANTCCM_TEST#BMO_1" | |||
verbose="true" /> | |||
</pre> | |||
</blockquote> | |||
<p>Does a Continuus <i>reconfiguree</i> on the project <i>ANTCCM_TEST#BMO_1</i>. | |||
<p>Does a Continuus <i>reconfigure</i> on the project <i>ANTCCM_TEST#BMO_1</i>. | |||
</p> | |||
<hr> | |||
<h2><a name="ccmcreatetask">CCMCreateTask</a></h2> | |||
<h3>Description</h3> | |||
Task to perform an create task command to Continuus. | |||
Create a Continuus task. | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
@@ -197,7 +197,7 @@ Task to perform an create task command to Continuus. | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>path to the ccm excutable file. default serach into the PATH</td> | |||
<td >path to the ccm executable file, required if it is not on the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
@@ -223,12 +223,12 @@ Task to perform an create task command to Continuus. | |||
</table> | |||
<h3>Examples</h3> | |||
<blockquote> | |||
<pre><ccmcreatetask resolver="{user.name}" release="ANTCCM_TEST" comment="blahblah" /> | |||
<pre><ccmcreatetask resolver="${user.name}" | |||
release="ANTCCM_TEST" comment="blahblah" /> | |||
</pre> | |||
</blockquote> | |||
<p>Does a Continuus <i>create task</i> for the release <i>ANTCCM_TEST</i> to the | |||
current logged person as the resolver for this task.</p> | |||
<p> </p> | |||
<p>Creates a task for the release <i>ANTCCM_TEST</i> with the | |||
current user as the resolver for this task.</p> | |||
</body> | |||
@@ -54,41 +54,30 @@ relationships are sufficient - it is unusual for a class to depend on another | |||
without having a direct relationship. With closure set, you will notice that | |||
depend typically removes far more class files. </p> | |||
<p>The classpath attribute for <code><depend></code> is optional. If it is present, | |||
depend will check class dependencies against classes and jars on this classpath. | |||
Any classes which depend on an element from this classpath and which are older | |||
than that element will be deleted. A typical example where you would use this | |||
facility would be where you are building a utility jar and want to make sure | |||
classes which are out of date with respect to this jar are rebuilt. You should | |||
<b>not</b> include jars in this classpath which you do not expect to change, | |||
such as the JDK runtime jar or third party jars, since doing so will just slow | |||
down the dependency check. This means that if you do use a classpath for the | |||
depend task it may be different from the classpath necessary to actually | |||
compile your code.</p> | |||
<h3>Performance</h3> | |||
<p> The performance of the depend task is dependent on a | |||
number of factors such as class relationship complexity and how many class files | |||
are out of date. The following tests have been run when build Ant itself, on the | |||
author's machine using JDK1.3 </p> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td>Building Ant from clean using Javac</td> | |||
<td>11 seconds</td> | |||
</tr> | |||
<tr> | |||
<td>Building Ant from clean using Jikes</td> | |||
<td>5 seconds</td> | |||
</tr> | |||
<tr> | |||
<td>Running <depend> when up-to-date and no cache</td> | |||
<td>4 seconds (Depend takes 2 seconds)</td> | |||
</tr> | |||
<tr> | |||
<td>Running <depend> when up-to-date and with a cache</td> | |||
<td>2 seconds (Depend takes 1 seconds)</td> | |||
</tr> | |||
</table> | |||
<p> This involves compiling 177 files. The above figures are indicative only. | |||
The decision about whether it is cheaper to just recompile all classes or to | |||
use the depend task will depend on the size of your project and how interrelated | |||
your classes are. </p> | |||
are out of date. The decision about whether it is cheaper to just recompile all | |||
classes or to use the depend task will depend on the size of your project and | |||
how interrelated your classes are. </p> | |||
<h3>Limitations</h3> | |||
<p> There are some dependencies which depend will not detect. </p> | |||
<p> There are some source dependencies which depend will not detect. </p> | |||
<ul> | |||
<li>If the Java compiler optimizes away a class relationship, | |||
@@ -112,8 +101,8 @@ your classes are. </p> | |||
<tr> | |||
<td valign="top">srcDir</td> | |||
<td valign="top">This is the directory where the source exists. depend | |||
will examine this to determine which classes. If you use multiple | |||
source directories you can pass this a path of source directories.</td> | |||
will examine this to determine which classes are out of date. If you use multiple | |||
source directories you can pass this attribute a path of source directories.</td> | |||
<td valign="top" align="center">Yes</td> | |||
</tr> | |||
<tr> | |||
@@ -137,14 +126,31 @@ depend will traverse the class dependency graph deleting all affected | |||
classes. Defaults to false</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">dump</td> | |||
<td valign="top">If true the dependency information will be written to the debug level log | |||
</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">classpath</td> | |||
<td valign="top">The classpath containg jars and classes for which <code><depend></code> should also | |||
check dependencies</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
</table> | |||
<h3>Nested Elements</h3> | |||
<p><code>depend</code>'s <i>classpath</i> attribute is a | |||
<a href="../using.html#path">PATH like structure</a> and can also be set | |||
via a nested <i>classpath</i> element.</p> | |||
<h3>Examples</h3> | |||
<blockquote> | |||
<pre> <depend srcdir="${java.dir}" | |||
destdir="${build.classes}" | |||
cache="depcache" | |||
closure="yes"/></pre> | |||
<pre><depend srcdir="${java.dir}" | |||
destdir="${build.classes}" | |||
cache="depcache" | |||
closure="yes"/></pre> | |||
</blockquote> | |||
<p> In this example classes in the ${build.classes} directory will be removed if | |||
@@ -9,11 +9,11 @@ | |||
<h2><a name="ftp">FTP</a></h2> | |||
<h3>Description</h3> | |||
<p><b>Note:</b> The ftp-task uses the NetComponents-Package which you will need to download from | |||
<a href="http://www.savarese.org" target="_top">http://www.savarese.org</a> and add to your classpath.</p> | |||
<p>The ftp task implements a basic FTP client that can send, receive, | |||
list, delete files, and create directories. See below for descriptions and examples of how | |||
to perform each task.</p> | |||
<p><b>Note:</b> This task depends on external libraries not included in the Ant distribution. | |||
See <a href="../install.html#librarydependencies">Library Dependencies</a> for more information.</p> | |||
<p>The ftp task makes no attempt to determine what file system syntax is | |||
required by the remote server, and defaults to Unix standards. | |||
<i>remotedir</i> must be specified in the exact syntax required by the ftp | |||
@@ -16,8 +16,7 @@ Instruments Java classes with <a href="http://www.reliable-systems.com/tools/">i | |||
The task can generate a properties file for <a href="http://home.sol.no/~hellesoy/icplus.html">iControl</a>, | |||
a graphical user interface that lets you turn on/off assertions. iControl generates a control file that you can refer to | |||
from this task using the controlfile attribute. | |||
<p/> | |||
| |||
</p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
@@ -133,13 +132,13 @@ Instruments Java classes with <a href="http://www.reliable-systems.com/tools/">i | |||
<p><b>Example:</b></p> | |||
<p/> | |||
<p> | |||
<b>Note:</b> iContract will use the java compiler indicated by the project's | |||
<code>build.compiler</code> property. See documentation of the Javac task for | |||
more information. | |||
<p/> | |||
more information.</p> | |||
<p> | |||
Nested includes and excludes can be done very much the same way as any subclass | |||
of MatchingTask. | |||
of MatchingTask.</p> | |||
<p><b>Example:</b></p> | |||
@@ -1,30 +1,27 @@ | |||
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> | |||
<html> | |||
<head> | |||
<title>JDepend Task</title> | |||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> | |||
<meta http-equiv="Content-Language" content="en-us"> | |||
<title>JDepend Task</title> | |||
</head> | |||
<body> | |||
<h2> | |||
<a NAME="JDepend"></a>JDepend</h2> | |||
<h2><a NAME="JDepend"></a>JDepend</h2> | |||
<h3>Description</h3> | |||
<h3> | |||
Description</h3> | |||
<P>Invokes the <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> parser.</P> | |||
<P>Invokes the <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> parser. | |||
</P> | |||
<P>This parser "traverses a set of Java source file directories and generates design quality metrics for each Java package". | |||
It allows to "automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to | |||
effectively manage and control package dependencies."</P> | |||
<P> | |||
This parser "traverses a set of Java source file directories and generates design quality metrics for each Java package". | |||
It allows to "automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to effectively manage and control package dependencies." | |||
</P> | |||
<p>Source file directories are defined by nested <code><sourcespath></code>, see <a href="#nested">nested elements</a>.</p> | |||
<p>Source file directories are defined by nested <code><sourcespath></code>, see <a href="#nested">nested | |||
elements</a>.<BR> | |||
Optionally, you can also set the <code>outputfile</code> name where the output is stored. By default the task writes its report to the standard output. | |||
</P> | |||
<p>Optionally, you can also set the <code>outputfile</code> name where the output is stored. By default the task writes its report to the standard output.</P> | |||
<p> The task requires at least the JDepend 1.2 version. </p> | |||
@@ -32,88 +29,59 @@ Optionally, you can also set the <code>outputfile</code> name where the output i | |||
<p> | |||
<h3> | |||
Parameters</h3> | |||
<table BORDER CELLSPACING=0 CELLPADDING=2 > | |||
<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>outputfile</td> | |||
<td VALIGN=TOP>The output file name. If not set, the output is printed on the standard output.</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No</td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP>fork</td> | |||
<td VALIGN=TOP>Run the tests in a separate VM.</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No, default is "off"</td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP>haltonerror</td> | |||
<td VALIGN=TOP>Stop the build process if an error occurs during the jdepend analysis.</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No, default is "off"</td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP>timeout</td> | |||
<td VALIGN=TOP>Cancel the operation if it doesn't finish in the given time (measured in milliseconds). (Ignored if fork is disabled.)</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No</td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP>jvm</td> | |||
<td VALIGN=TOP>The command used to invoke the Java Virtual Machine, default is 'java'. The command is resolved by java.lang.Runtime.exec(). (Ignored if fork is disabled.)</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No, default "java"</td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP>dir</td> | |||
<td VALIGN=TOP>The directory to invoke the VM in. (Ignored if fork is disabled)</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No</td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP>classpathref</td> | |||
<td VALIGN=TOP>the classpath to use, given as reference to a PATH defined elsewhere.</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No</td> | |||
</tr> | |||
<h3>Parameters</h3> | |||
<table BORDER=1 CELLSPACING=0 CELLPADDING=2 > | |||
<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>outputfile</td> | |||
<td VALIGN=TOP>The output file name. If not set, the output is printed on the standard output.</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No</td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP>fork</td> | |||
<td VALIGN=TOP>Run the tests in a separate VM.</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No, default is "off"</td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP>haltonerror</td> | |||
<td VALIGN=TOP>Stop the build process if an error occurs during the jdepend analysis.</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No, default is "off"</td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP>timeout</td> | |||
<td VALIGN=TOP>Cancel the operation if it doesn't finish in the given time (measured in milliseconds). (Ignored if fork is disabled.)</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No</td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP>jvm</td> | |||
<td VALIGN=TOP>The command used to invoke the Java Virtual Machine, default is 'java'. The command is resolved by java.lang.Runtime.exec(). (Ignored if fork is disabled.)</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No, default "java"</td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP>dir</td> | |||
<td VALIGN=TOP>The directory to invoke the VM in. (Ignored if fork is disabled)</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No</td> | |||
</tr> | |||
<tr> | |||
<td VALIGN=TOP>classpathref</td> | |||
<td VALIGN=TOP>the classpath to use, given as reference to a PATH defined elsewhere.</td> | |||
<td ALIGN=CENTER VALIGN=TOP>No</td> | |||
</tr> | |||
</table> | |||
<h3><a name="nested">Nested Elements</a></h3> | |||
<p><code>jdepend</code> supports two nested elements <code><classpath></code> and <code><sourcespath></code>, | |||
that represent <a href="../using.html#path">PATH like structures</a>.</p> | |||
<p><code>jdepend</code> supports two nested elements <code><classpath></code> and <code><sourcespath></code>, that represent <a href="../using.html#path">PATH like | |||
structures</a>. | |||
<BR><code><sourcespath></code> is used to define the paths of the source code to analyze.</BR> | |||
</p> | |||
<p><code><sourcespath></code> is used to define the paths of the source code to analyze.</p> | |||
<h3> | |||
Examples</h3> | |||
<h3>Examples</h3> | |||
<blockquote> | |||
<pre> | |||
@@ -127,6 +95,7 @@ Examples</h3> | |||
This invokes JDepend on the <code>src</code> directory, writing the output on the standard output. | |||
The classpath is defined using a classpath reference. | |||
<blockquote> | |||
<pre> | |||
<jdepend outputfile="docs/jdepend.txt" fork="yes"> | |||
@@ -143,8 +112,10 @@ The classpath is defined using a classpath reference. | |||
This invokes JDepend in a separate VM on the <code>src</code> and <code>testsrc</code> directories, writing the output in the <code><docs/jdepend.txt></code> file. | |||
The classpath is defined using nested elements. | |||
<br> | |||
<hr> | |||
</body> | |||
</html> | |||
@@ -14,7 +14,10 @@ the testcases results. | |||
or <a href="http://xml.apache.org/dist/xalan-j/old/xalan-j_1_2_2.zip">Xalan 1.2.2</a>. | |||
<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.</i> | |||
that can be found in the distribution archive. Xerces will need to be before any other | |||
parser (such as the shipped crimson). It is *highly* recommended to use Xalan2 instead | |||
because Xalan1 is no more supported. | |||
</i> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
@@ -11,6 +11,8 @@ | |||
<h3>Description</h3> | |||
<p>Execute a script in a | |||
<a href="http://oss.software.ibm.com/developerworks/opensource/bsf/" target="_top">BSF</a> supported language.</p> | |||
<p><b>Note:</b> 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> | |||
<p>All items (tasks, targets, etc) of the running project are | |||
accessible from the script, using either their <code>name</code> or | |||
<code>id</code> attributes.</p> | |||
@@ -12,6 +12,8 @@ | |||
<p>This executes the apache Stylebook documentation generator. | |||
Unlike the commandline version of this tool, all three arguments | |||
are required to run stylebook.</p> | |||
<p><b>Note:</b> 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"> | |||
@@ -15,6 +15,7 @@ | |||
<a href="sysclasspath.html">build.sysclasspath</a><br> | |||
<a href="CoreTypes/patternset.html">Patternset</a><br> | |||
<a href="CoreTypes/fileset.html">Fileset</a><br> | |||
<a href="CoreTypes/filterset.html">Filterset</a><br> | |||
<a href="CoreTypes/mapper.html">File Mappers</a><br> | |||
<a href="CoreTasks/common.html">Common Attributes</a><br> | |||
@@ -8,18 +8,18 @@ | |||
<body> | |||
<h1>Installing Ant</h1> | |||
<h2><a name="getting">Getting Ant</a></h2> | |||
<h3>Binary edition</h3> | |||
<h3>Binary Edition</h3> | |||
<p>The latest stable version of Ant can be downloaded from <a | |||
href="http://jakarta.apache.org/builds/ant/release/v1.3/bin/"> | |||
http://jakarta.apache.org/builds/ant/release/v1.3/bin/</a>. | |||
href="http://jakarta.apache.org/builds/ant/release/v1.4/bin/"> | |||
http://jakarta.apache.org/builds/ant/release/v1.4/bin/</a>. | |||
If you like living on the edge, you can download the latest version from <a | |||
href="http://jakarta.apache.org/builds/ant/nightly/">http://jakarta.apache.org/builds/ant/nightly/</a>.</p> | |||
<h3>Source Edition</h3> | |||
<p>If you prefer the source edition, you can download the source for the latest Ant release from <a | |||
href="http://jakarta.apache.org/builds/ant/release/v1.3/src/"> | |||
http://jakarta.apache.org/builds/ant/release/v1.3/src/</a>. | |||
href="http://jakarta.apache.org/builds/ant/release/v1.4/src/"> | |||
http://jakarta.apache.org/builds/ant/release/v1.4/src/</a>. | |||
Again, if you prefer the edge, you can access | |||
the code as it is being developed via CVS. The Jakarta website has details on | |||
@@ -38,10 +38,11 @@ Ant CVS repository</a> on-line. </p> | |||
To build and use Ant, you must have a JAXP-compliant XML parser installed and | |||
available on your classpath.</p> | |||
<p> | |||
The binary distribution of Ant includes the reference | |||
implementation of JAXP 1.1. Please see | |||
The binary distribution of Ant includes the latest version of the | |||
<a href="http://xml.apache.org/crimson/index.html">Apache Crimson</a> XML parser. | |||
Please see | |||
<a href="http://java.sun.com/xml/" target="_top">http://java.sun.com/xml/</a> | |||
for more information. | |||
for more information about JAXP. | |||
If you wish to use a different JAXP-compliant parser, you should remove | |||
<code>jaxp.jar</code> and <code>crimson.jar</code> | |||
from Ant's <code>lib</code> directory. | |||
@@ -105,12 +106,12 @@ directory of the JDK/JRE. Ant is an application, whilst the extension | |||
directory is intended for JDK extensions. In particular there are security | |||
restrictions on the classes which may be loaded by an extension.</p> | |||
<h3>Optional Tasks</h3> | |||
<h3><a name="optionalTasks">Optional Tasks</a></h3> | |||
<p>Ant supports a number of optional tasks. An optional task is a task which | |||
typically requires an external library to function. The optional tasks are | |||
packaged separately from the core Ant tasks. This package is available in | |||
the same download directory as the core ant distribution. The current | |||
jar containing optional tasks is named <code>jakarta-ant-1.3-optional.jar</code>. | |||
jar containing optional tasks is named <code>jakarta-ant-1.4-optional.jar</code>. | |||
This jar should be downloaded and placed in the lib directory of your Ant | |||
installation.</p> | |||
@@ -233,8 +234,8 @@ install directory's <code>lib</code> directory if you are using the | |||
indicated feature. Note that only one of the regexp libraries is | |||
needed for use with the mappers. You will also need to install the | |||
Ant optional jar containing the task definitions to make these | |||
tasks available. Please refer to the <a href="#installing"> | |||
Installing Ant</a> section above.</p> | |||
tasks available. Please refer to the <a href="#optionalTasks"> | |||
Installing Ant / Optional Tasks</a> section above.</p> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
@@ -1,42 +0,0 @@ | |||
<html> | |||
<head> | |||
<meta http-equiv="Content-Language" content="en-us"> | |||
<title>Ant User Manual</title> | |||
</head> | |||
<body> | |||
<h1>Ant Resources</h1> | |||
<h2><a name="faq">FAQ</a></h2> | |||
<p>There is an on-line FAQ for Ant at <a target="_top" | |||
href="http://jakarta.apache.org/ant/faq.html">jakarta.apache.org</a>.</p> | |||
<h2><a name="external">External Resources</a></h2> | |||
<p>There is a powerpoint presentation by Patrick Chanezon (chanezon@netscape.com) | |||
here: | |||
<a href="http://people.netscape.com/chanezon/tech/ant/ant_preso.ppt">http://people.netscape.com/chanezon/tech/ant/ant_preso.ppt</a></p> | |||
<p>Another pres by Steve Loughran (steve_l@iseran.com) | |||
<a href="http://www.iseran.com/Steve/modern_development_processes.html">http://www.iseran.com/Steve/modern_development_processes.html</a></a>.</p> | |||
<p>and some articles to get ideas from here: | |||
<a href="http://www-106.ibm.com/developerworks/library/j-ant/?dwzone=java">http://www-106.ibm.com/developerworks/library/j-ant/?dwzone=java</a> | |||
<a href="http://www.javaworld.com/javaworld/jw-10-2000/jw-1020-ant.html">http://www.javaworld.com/javaworld/jw-10-2000/jw-1020-ant.html</a> | |||
<a href="http://jakarta.apache.org/commons/cactus/ant.html">http://jakarta.apache.org/commons/cactus/ant.html</a></p> | |||
<p>Here's another Ant presentation, made at the St. Louis Java Users | |||
Group meeting in March (PowerPoint): | |||
<a href="http://www.ociweb.com/javasig/knowledgebase/March2001/index.html">http://www.ociweb.com/javasig/knowledgebase/March2001/index.html</a></p> | |||
<p>An article about developing tasks with VAJ by Glenn McAllister can | |||
be found at <a href="http://www7.software.ibm.com/vad.nsf/data/document2366?OpenDocument&p=1&BCT=1&Footer=1">http://www7.software.ibm.com/vad.nsf/data/document2366?OpenDocument&p=1&BCT=1&Footer=1</a></p> | |||
<hr> | |||
<p align="center">Copyright © 2000,2001 Apache Software Foundation. All rights | |||
Reserved.</p> | |||
</body> | |||
</html> | |||
@@ -18,7 +18,6 @@ | |||
<a href="ide.html" target="navFrame">Editor/IDE Integration</a><br> | |||
<a href="develop.html">Developing with Ant</a><br> | |||
<a href="api/index.html" target="_top">Ant API</a><br> | |||
<a href="resources.html">Ant Resources</a><br> | |||
<a href="LICENSE">License</a><br> | |||
<a href="feedback.html">Feedback</a><br><br> | |||
<a href="credits.html">Authors</a><br> | |||
@@ -200,7 +200,7 @@ if there is a "builddir" property with the value | |||
<code>${builddir}/classes</code>. | |||
This is resolved as <code>build/classes</code>.</p> | |||
<h3>Built-in Properties</h3> | |||
<h3><a name="built-in-props">Built-in Properties</a></h3> | |||
<p>Ant provides access to all system properties as if they had been | |||
defined using a <code><property></code> task. | |||
For example, <code>${os.name}</code> expands to the | |||
@@ -216,7 +216,7 @@ ant.version the version of Ant | |||
ant.project.name the name of the project that is currently executing; | |||
it is set in the name attribute of <project>. | |||
ant.java.version the JVM version Ant detected; currently it can hold | |||
the values "1.1", "1.2" and "1.3". | |||
the values "1.1", "1.2", "1.3" and "1.4". | |||
</pre> | |||
<h3>Example</h3> | |||
@@ -307,7 +307,7 @@ supports <code>path</code> and | |||
<pathelement path="${classpath}"/> | |||
</classpath> | |||
</pre> | |||
<p>can be abreviated to:</p> | |||
<p>can be abbreviated to:</p> | |||
<pre> | |||
<classpath path="${classpath}"/> | |||
</pre> | |||