diff --git a/docs/index.html b/docs/index.html index 6a5bcfe30..2e35da291 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,51 +1,1555 @@ +
-BuildTool is a Java based build tool. In theory it is kind of like make without - makes wrinkles.
-Why another build tool when there is already make, gnumake, nmake, jam, and - others? Because all of those tools have limitations that its original author - couldn't live with when developming software across multiple platforms. Make - like tools are inherently shell based. They evaluate a set of dependencies and - then execute commands not unlike what you would issue on a shell. This means - that you can easily extend these tools by using or writing any program for the - OS that you are working on. However, this also means that you limit yourself - to the OS, or at least the OS type such as Unix, that you are working on.
-Makefiles are inherently evil as well. Anybody who has worked on them for any - time has run into the dreaded tab problem. "Is my command not executing - because I have a space in front of my tab!!!" said the original author - of BuildTool way too many times. Tools like Jam took care of this to a great - degree, but still use yet another format to use and remember.
-BuildTool is different. Instead a model where it is extended with shell based - commands, it is extended using Java classes. Instead of writing shell commands, - the configuration files are XML based calling out a target tree where various - tasks get executed. Each task is run by an object which implments a particular - Task interface.
-Granted, this removes some of the expressive power that is inherent by being - able to construct a shell command such as `find . -name foo -exec rm {}` but - it gives you the ability to be cross platform. To work anywhere and everywhere.And - hey, if you really need to execute a shell command, BuildTool has an exec rule - that allows different commands to be executed based on the OS that it is executing - on.
-To get started using BuildTool check out the following topics:
+ + +by
+Version 1.0.2 - 2000/01/26
+Ant is a Java based build tool. In theory it is kind of like make without +makes wrinkles.
+Why another build tool when there is already make, gnumake, nmake, jam, and +others? Because all of those tools have limitations that its original author +couldn't live with when developing software across multiple platforms. Make like +tools are inherently shell based. They evaluate a set of dependencies and then +execute commands not unlike what you would issue on a shell. This means that you +can easily extend these tools by using or writing any program for the OS that +you are working on. However, this also means that you limit yourself to the OS, +or at least the OS type such as Unix, that you are working on.
+Makefiles are inherently evil as well. Anybody who has worked on them for any +time has run into the dreaded tab problem. "Is my command not executing +because I have a space in front of my tab!!!" said the original author of +Ant way too many times. Tools like Jam took care of this to a great degree, but +still use yet another format to use and remember.
+Ant is different. Instead a model where it is extended with shell based +commands, it is extended using Java classes. Instead of writing shell commands, +the configuration files are XML based calling out a target tree where various +tasks get executed. Each task is run by an object which implements a particular +Task interface.
+Granted, this removes some of the expressive power that is inherent by being +able to construct a shell command such as `find . -name foo -exec rm {}` but it +gives you the ability to be cross platform. To work anywhere and everywhere. And +hey, if you really need to execute a shell command, Ant has an exec rule that +allows different commands to be executed based on the OS that it is executing +on.
+The latest stable version of Ant can be downloaded from http://jakarta.apache.org/builds/tomcat/release/v3.0/ant.zip. +If you like living on the edge, you can download the latest version from http://jakarta.apache.org/builds/tomcat/nightly/ant.zip.
+If you prefer the source edition, you can download Ant from http://jakarta.apache.org/builds/tomcat/release/v3.0/src/jakarta-tools.src.zip +(latest stable) or from http://jakarta.apache.org/from-cvs/jakarta-ant/ +(current). See the section Building Ant on how to +build Ant from the source code.
+Go to the directory jakarta-ant
.
Make sure the JDK is in you path.
+Run bootstrap.bat
(Windows) or bootstrap.sh
(UNIX)
+to build a bootstrap version of Ant.
When finished, use
++++
build.bat -Ddist.dir=<directory to install Ant> dist
for Windows, and
++++
build.sh -Ddist.dir=<directory to install Ant> dist
for UNIX, to create a binary distribution of Ant. This distribution can be +found in the directory you specified.
+The binary distribution of Ant consists of three directories: bin
,
+docs
and lib
. Only the bin
and lib
+directory are crucial for running Ant. To run Ant, the following must be done:
bin
directory to your path.bin
and lib
directory.Assume Ant is installed in c:\ant\
. The following sets up the
+environment:
set ANT_HOME=c:\ant +set JAVA_HOME=c:\jdk1.2.2 +set PATH=%PATH%;%ANT_HOME%\bin+
Assume Ant is installed in /usr/local/ant
. The following sets up
+the environment:
export ANT_HOME=/usr/local/ant +export JAVA_HOME=/usr/local/jdk-1.2.2 +export PATH=${PATH}:${ANT_HOME}/bin+
There are lots of variants that can be used to run Ant. What you need is at +least the following:
+The classpath for Ant must contain ant.jar
and xml.jar
.
When you need JDK functionality (like a javac task, or a
+rmic task), then for JDK 1.1, the classes.zip
+file of the JDK must be added to the classpath; for JDK 1.2, tools.jar
+must be added.
When you are executing platform specific applications (like the exec task, or the cvs task), the property ant.home
+must be set to the directory containing a bin directory, which contains antRun.bat
+(Windows) or antRun
(Unix).
Running Ant is simple, when you installed it as described in the previous
+section. Just type ant
.
When nothing is specified, Ant looks for a build.xml
file in the
+current directory. When found, it uses that file as a buildfile. To make Ant use
+another buildfile, use the commandline option -buildfile <file>,
+where <file> is the buildfile you want to use.
You can also set properties which override properties specified in the +buildfile. This can be done with the -D<property>=<value> +option, where <property> is the name of the property and <value> +the value.
+To more options are -quiet which instructs Ant to print less +information on the console when running. The option -verbose on the other +hand makes Ant print more information on the console.
+It is also possible to specify the target that should be executed. Default +the target that is mentioned in the default attribute of the project is +used. This can be overridden by adding the target name to the end of the +commandline.
+Commandline option summary:
+ant [options] [target] +Options: +-help print this message +-quiet be extra quiet +-verbose be extra verbose +-logfile <file> use given file for log +-buildfile <file> use given buildfile +-D<property>=<value> use value for given property+
++ant+
runs Ant using the build.xml
file in the current directory, on
+the default target.
++ant -buildfile test.xml+
runs Ant using the test.xml
file in the current directory, on
+the default target.
++ant -buildfile test.xml dist+
runs Ant using the test.xml
file in the current directory, on a
+target called dist
.
++ant -buildfile test.xml -Dbuild=build/classes dist+
runs Ant using the test.xml
file in the current directory, on a
+target called dist
. It also sets the build property to the
+value build/classes.
When you have installed Ant in the do-it-yourself way, Ant can be started +with:
+++set CLASSPATH=c:\ant\lib\ant.jar;c:\ant\lib\xml.jar;c:\jdk1.2.2\lib\tools.jar +java -Dant.home=c:\ant org.apache.tools.ant.Main [options] [target]+
These instructions actually do exactly the same as the ant
+command. The options and target are the same as when running Ant with the ant
+command.
The buildfile is an written in XML. Each buildfile contains one project.
+A project has three attributes:
+Attribute | +Description | +Required | +
name | +the name of the project. | +Yes | +
default | +the default target to use when no target is supplied. | +Yes | +
basedir | +the base directory from which all path calculations are + done. This attribute might be overridden by setting the "basedir" + property on forehand. When this is done, it might be ommitted in the + project tag. | +Yes | +
Each project defines one or more targets. A target is a set of tasks you want +to be executed. When starting Ant, you can select which target you want to have +executed. When no target is given, the project's default is used.
+A target can depend on other targets. You might have a target for compiling, +for instance, and a target for creating a distributable. You can only build a +distributable when you have compiled first, so the distribute target depends on +the compile target. Ant resolves all these dependencies.
+Ant tries to execute the targets in the depends attribute in the order +they appear (from left to right). Keep in mind that it is possible that a target +can get executed earlier when an earlier target depends on it:
+<target name="A"/> +<target name="B" depends="A"/> +<target name="C" depends="B"/> +<target name="D" depends="C,B,A"/>+
Suppose we want to execute target D. From its depends attribute, you +might think that first target C, then B and then A is executed. Wrong! C depends +on B, and B depends on A, so first A is executed, then B, then C, and finally D.
+In situations without such dependencies, you can rely on the order of the +targets in the depends attributes.
+A target gets executed only once. Even when more targets depend on it (see +the previous example).
+A target has the following attributes:
+Attribute | +Description | +Required | +
name | +the name of the project. | +Yes | +
depends | +a comma separated list of names of targets on which this + target depends. | +No | +
A task is a piece of code that can be executed.
+A task can have multiple attributes (or arguments if you prefer). The value +of an attribute might contain references to a property. These references will be +resolved before the task is executed.
+Tasks have a common structure:
+++<name attribute1="value1" attribute2="value2" ... />+
where name is the name of the task, attribute-x the attribute name, and +value-x the value of this attribute.
+There is a set of built in tasks, but it is also very +easy to write your own.
+A project can have a set of properties. These might be set in the buildfile +by the property task, or might be set outside Ant. A +property has a name and a value. Properties might be used in in the value of +task attributes. This is done by placing the property name between +"${" and "}" in the attribute value.
+If there is a property called "builddir" with the value +"build", then this could be used in an attribute like this: "${builddir}/classes". +This is resolved as "build/classes".
+++<project name="foo" default="dist" basedir="."> + <target name="init"> + <tstamp/> + <property name="build" value="build" /> + <property name="dist" value="dist" /> + </target> + + <target name="prepare" depends="init"> + <mkdir dir="${build}" /> + </target> + + <target name="compile" depends="prepare"> + <javac srcdir="${src}" destdir="${build}" /> + </target> + + <target name="dist" depends="compile"> + <mkdir dir="${dist}/lib" /> + <jar jarfile="${dist}/lib/foo${DSTAMP}.jar" + basedir="${build}" items="com"/> + </target> + + <target name="clean" depends="init"> + <deltree dir="${build}" /> + <deltree dir="${dist}" /> + </target> +</project> ++
To provide feedback on this software, please send mail to duncan@x180.com.
Java is a trademark of Sun Microsystems.
+Runs Ant on a supplied buildfile. This can be used to build subprojects.
+When the antfile attribute is omitted, the file "build.xml" +in the supplied directory (dir attribute) is used.
+If no target attribute is supplied, the default target of the new project is +used.
+The properties of the current project will be available in the new project. +These properties will override the properties that are set in the new project. +(See also the properties task).
+Attribute | +Description | +Required | +
antfile | +the buildfile to use. | +No | +
dir | +the directory to use as a basedir for the new Ant project. | +Yes | +
target | +the target of the new Ant project that should be executed. | +No | +
+++
<ant antfile="subproject/subbuild.xml" dir="subproject" +target="compile" />
+
<ant dir="subproject" />
Changes the permissions of a file. Right now it has efect only under Unix. +The permissions are also UNIX style, like the argument for the chmod command.
+Attribute | +Description | +Required | +
src | +the file of which the permissions must be changed. | +Yes | +
perm | +the new permissions. | +Yes | +
+++
<chmod src="${dist}/start.sh" perm="ugo+rx" +/>
makes the "start.sh" file readable and executable for anyone on a +UNIX system.
+Copies a directory tree from the source to the destination.
+It is possible to exclude a set of files from the files that are being +copied. This can be done with the ignore attribute. This attribute +contains the names of the files/directories that must be excluded from the copy. +The names specified in the ignore attribute are just names, they do not +contain any path information!
+Attribute | +Description | +Required | +
src | +the directory to copy. | +Yes | +
dest | +the directory to copy to. | +Yes | +
ignore | +comma separated list of filenames/directorynames to ignore. | +No | +
+++
<copydir src="${src}/resources" dest="${dist}" +/>
copies the directory ${src}/resources
to ${dist}
.
+++
<copydir src="${src}/resources" dest="${dist}" +ignore="old, Test.java" />
copies the directory ${src}/resources
to ${dist}
.
+All files/directories with the names old
and Test.java
+are excluded from the copy. When old
or Test.java
is
+the name of a directory, then that whole directory is excluded from the copy.
Copies a file from the source to the destination. The file is only copied if +the source file is newer than the destination file, or when the destination file +does not exist.
+Attribute | +Description | +Required | +
src | +the filename of the file to copy. | +Yes | +
dest | +the filename of the file where to copy to. | +Yes | +
+++
<copyfile src="test.java" dest="subdir/test.java" +/>
+
<copyfile src="${src}/index.html" dest="${dist}/help/index.html" +/>
Checks out a package/module from a CVS +repository.
+When doing automated builds, the get task should be +preferred, because of speed.
+Attribute | +Description | +Required | +
cvsRoot | +the CVSROOT variable. | +Yes | +
dest | +the directory where the checked out files should be placed. | +Yes | +
package | +the package/module to check out. | +Yes | +
tag | +the tag of the package/module to check out. | +No | +
+++
<cvs cvsRoot=":pserver:anoncvs@jakarta.apache.org:/home/cvspublic" +package="jakarta-tools" dest="${ws.dir}" />
This checks out the package/module "jakarta-tools" from the CVS +repository pointed to by the cvsRoot attribute, and stores the files in "${ws.dir}".
+Deletes a single file.
+Attribute | +Description | +Required | +
file | +the file to delete. | +Yes | +
+++
<delete file="/lib/ant.jar" />
+
<delete file="${ant}" />
Deletes a directory with all its files and subdirectories.
+Attribute | +Description | +Required | +
dir | +the directory to delete. | +Yes | +
+++
<deltree dir="dist" />
+
<deltree dir="${dist}" />
Echoes a message to System.out.
+Attribute | +Description | +Required | +
message | +the message to echo. | +Yes | +
+++
<echo message="Hello world" />
Executes a system command. When the os attribute is specified, then +the command is only executed when Ant is run on one of the specified operating +systems.
+Attribute | +Description | +Required | +
command | +the command to execute. | +Yes | +
dir | +the directory in which the command should be executed. | +Yes | +
os | +list of Operating Systems on which the command may be + executed. | +No | +
output | +the file to which the output of the command should be + redirected. | +Yes | +
+++
<exec dir="${src}" command="dir" os="windows" +output="dir.txt" />
Unzips a zipfile.
+Attribute | +Description | +Required | +
src | +zipfile to expand. | +Yes | +
dest | +directory where to store the expanded files. | +Yes | +
+++
<expand src="${tomcat_src}/tools-src.zip" dest="${tools.home}" +/>
Gets a file from an URL. When the verbose option is "on", this task +displays a '.' for every 100 Kb retrieved.
+This task should be preferred above the CVS task when +doing automated builds. CVS is significant slower than loading a compressed +archive with http/ftp.
+Attribute | +Description | +Required | +
src | +the URL from which to retrieve a file. | +Yes | +
dest | +the file where to store the retrieved file. | +Yes | +
verbose | +show verbose information ("on"/"off"). | +No | +
+++
<get src="http://jakarta.apache.org/" dest="help/index.html" +/>
GZips a file.
+Attribute | +Description | +Required | +
src | +the file to gzip. | +Yes | +
zipfile | +the destination file. | +Yes | +
+++
<gzip src="test.tar" zipfile="test.tar.gz" />
Jars a set of files.
+The basedir attribute is the reference directory from where to jar.
+When "*" is used for items, all files in the basedir, and its +subdirectories, will be jarred. Otherwise all the files and directories +mentioned in the items list will jarred. When a directory is specified, then all +files within it are also jarred.
+With the ignore attribute, you can specify files or directories to +ignore. These files will not be jarred. The items in the ignore attribute +override the items in the items attribute. The names specified in the ignore +attribute are just names, they do not contain any path information!
+Attribute | +Description | +Required | +
jarfile | +the jar-file to create. | +Yes | +
basedir | +the directory from which to jar the files. | +Yes | +
items | +a comma separated list of the files/directories to jar. | +Yes | +
ignore | +a comma separated list of the filenames/directorynames to + exclude from the jar. | +No | +
manifest | +the manifest file to use. | +No | +
+++
<jar jarfile="${dist}/lib/app.jar" basedir="${build}/classes" +items="*" />
jars all files in the ${build}/classes
directory in a file
+called app.jar
in the ${dist}/lib
directory.
+++
<jar jarfile="${dist}/lib/app.jar" basedir="${build}/classes" +items="*" ignore="Test.class" />
jars all files in the ${build}/classes
directory in a file
+called app.jar
in the ${dist}/lib
directory.
+Files/directories with the name Test.class
are excluded.
Executes a Java class within the running (Ant) VM or forks another VM if +specified.
+Be careful that the executed class doesn't call System.exit(), because it +will terminate the VM and thus Ant. In case this happens, it's highly suggested +that you set the fork attribute so that System.exit() stops the other VM and not +the one that is currently running Ant.
+Attribute | +Description | +Required | +
class | +the Java class to execute. | +Yes | +
args | +the arguments for the class that is executed. | +No | +
fork | +if enabled triggers the class execution in another VM + (disabled by default) | +No | +
jvmargs | +the arguments to pass to the forked VM (ignored if fork is + disabled) | +No | +
+++
<java class="test.Main" />
+
<java class="test.Main" args="-h" />
+
<java class="test.Main" args="-h" +fork="yes" jvmargs="-Xrunhprof:cpu=samples,file=log.txt,depth=3" +/>
Compiles a source tree within the running (Ant) VM.
+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.
+Files in the source tree, that are no java files, are copied to the +destination directory, allowing support files to be located properly in the +classpath.
+The directory structure of the source tree should follow the package +hierarchy.
+It is possible to use different compilers. This can be selected with the +"build.compiler" property. There are three choices:
+For JDK 1.1/1.2 is classic the default. For JDK 1.3 is modern the default.
+Attribute | +Description | +Required | +
srcdir | +location of the java files. | +Yes | +
destdir | +location where to store the class files. | +Yes | +
classpath | +the classpath to use. | +No | +
bootclasspath | +location of bootstrap class files. | +No | +
extdirs | +location of installed extensions. | +No | +
debug | +indicates whether there should be compiled with debug + information ("on"). | +No | +
optimize | +indicates whether there should be compiled with + optimization ("on"). | +No | +
deprecation | +indicates whether there should be compiled with deprecation + information ("on"). | +No | +
+++
<javac srcdir="${src}" destdir="${build}" -classpath="xyz.jar" +-debug="on" />
Generates code documentation using the javadoc tool.
+The source directory will be recursively scanned for Java +source files to but only those matching the inclusion rules will be passed to +the javadoc tool. This allows wildcards to be used to choose between package +names, reducing verbosity and management costs over time. This task, however, +has no notion of "changed" files, unlike the javac +task, but it's not used so frequently.
+This task works seamlessly between different javadoc versions (1.1 and 1.2), +with the obvious restriction that the 1.2 attributes will be ignored if run in a +1.1 VM.
+NOTE: since javadoc calls System.exit(), we cannot run javadoc inside the +same VM without breaking functionality. For this reason, this task always forks +the VM. But this is not a performance penalty since javadoc is normally a heavy +application and must be called just once.
+DEPRECATION: the javadoc2 task simply points to the javadoc task and it's +there for back compatibility reasons. Since this task will be removed in future +versions, you are strongly encouraged to use javadoc +instead.
+Attribute | +Description | +Availability | +Required | +
sourcepath | +Specify where to find source files | +all | +yes | +
destdir | +Destination directory for output files | +all | +yes | +
sourcefiles | +Space separated list of source files | +all | +at least one of the two | +
packagenames | +Space separated list of package files (with terminating + wildcard) | +all | +|
Classpath | +Specify where to find user class files | +all | +no | +
Bootclasspath | +Override location of class files loaded by the bootstrap class loader | +1.2 | +no | +
Extdirs | +Override location of installed extensions | +1.2 | +no | +
Overview | +Read overview documentation from HTML file | +1.2 | +no | +
Public | +Show only public classes and members | +all | +no | +
Protected | +Show protected/public classes and members (default) | +all | +no | +
Package | +Show package/protected/public classes and members | +all | +no | +
Private | +Show all classes and members | +all | +no | +
Old | +Generate output using JDK 1.1 emulating doclet | +1.2 | +no | +
Verbose | +Output messages about what Javadoc is doing | +1.2 | +no | +
Locale | +Locale to be used, e.g. en_US or en_US_WIN | +1.2 | +no | +
Encoding | +Source file encoding name | +all | +no | +
Version | +Include @version paragraphs | +all | +no | +
Use | +Create class and package usage pages | +1.2 | +no | +
Author | +Include @author paragraphs | +all | +no | +
Splitindex | +Split index into one file per letter | +1.2 | +no | +
Windowtitle | +Browser window title for the documenation (text) | +1.2 | +no | +
Doctitle | +Include title for the package index(first) page + (html-code) | +1.2 | +no | +
Header | +Include header text for each page (html-code) | +1.2 | +no | +
Footer | +Include footer text for each page (html-code) | +1.2 | +no | +
bottom | +Include bottom text for each page (html-code) | +1.2 | +no | +
link | +Create links to javadoc output at the given + URL | +1.2 | +no | +
linkoffline | +Link to docs at <url> using package list at <url2> | +1.2 | +no | +
group | +Group specified packages together in overview page | +1.2 | +no | +
nodeprecated | +Do not include @deprecated information | +all | +no | +
nodeprecatedlist | +Do not generate deprecated list | +1.2 | +no | +
notree | +Do not generate class hierarchy | +all | +no | +
noindex | +Do not generate index | +all | +no | +
nohelp | +Do not generate help link | +1.2 | +no | +
nonavbar | +Do not generate navigation bar | +1.2 | +no | +
serialwarn | +Generate warning about @serial tag | +1.2 | +no | +
helpfile | +Specifies the HTML help file to use | +1.2 | +no | +
stylesheetfile | +Specifies the CSS stylesheet to use | +1.2 | +no | +
charset | +Charset for cross-platform viewing of generated documentation | +1.2 | +no | +
docencoding | +Output file encoding name | +1.1 | +no | +
++<javadoc packagenames="com.dummy.test.*" + sourcepath="src" + destdir="docs/api" + author="true" + version="true" + use="true" + windowtitle="Test API" + doctitle="<h1>Test</h1>" + bottom="<i>Copyright © 2000 Dummy Corp. All Rights Reserved.</i>" +/>+
Performs keyword substitution in the source file, and writes the result to +the destination file.
+Keys in the source file are of the form ${keyname}. The keys attribute +contains key/value pairs. When a key is found in the keys attribute, then +"${keyname}" is replaced by the corresponding value.
+The keys attribute is of the form +"name1=value1*name2=value2*name3=value3". The '*' is called the +separator, which might we changed with the sep attribute.
+Note: the source file and destination file may not be the same.
+Attribute | +Description | +Required | +
src | +the source file. | +Yes | +
dest | +the destination file. | +Yes | +
sep | +the separator for the name/value pairs. | +No | +
keys | +name/value pairs for replacement. | +Yes | +
+++
<keysubst src="abc.txt" dest="def.txt" +keys="VERSION=1.0.3*DATE=2000-01-10" />
Creates a directory. Also non-existent parent directories are created, when +necessary.
+Attribute | +Description | +Required | +
dir | +the directory to create. | +Yes | +
+++
<mkdir dir="${dist}" />
+
<mkdir dir="${dist}/lib" />
Sets a property (by name and value), or set of properties (from file or +resource) in the project.
+When a property was set by the user, or was a property in a parent project +(that started this project with the ant task), then this +property cannot be set, and will be ignored. This means that properties set +outside the current project always override the properties of the current +project.
+There are three ways to set properties:
+Although combinations of the three ways are possible, only one should be used +at a time. Problems might occur with the order in which properties are set, for +instance.
+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.
+Attribute | +Description | +Required | +
name | +the name of the property to set. | +No | +
value | +the value of the property. | +No | +
resource | +the resource name of the property file. | +No | +
file | +the filename of the property file . | +No | +
+++
<property name="foo.dist" value="dist"/>
+
<property file="foo.properties" />
+
<property resource="foo.properties" />
Replaces the occurrence of a given string with another string in a file. When +the value attribute is omitted, it defaults to "".
+Attribute | +Description | +Required | +
file | +file for which the token should be replaced | +Yes | +
token | +the token which must be replaced | +Yes | +
value | +the new value for the token | +No | +
+++
<replace file="${src}/index.html" token="@@@" +value="wombat" />
Runs the rmic compiler for a certain class.
+Attribute | +Description | +Required | +
base | +the location to store the compiled files. | +Yes | +
class | +the class for which to run rmic . |
+ Yes | +
+++
<rmic class="com.xyz.FooBar" +base="${build}/classes" />
Adds a task definition to the current project, such that this new task can be +used in the current project. Two attributes are needed, the name that identifies +this task uniquely, and the full name of the class (including the packages) that +implements this task.
+Taskdef should be used to add your own tasks to the system. See also "Writing your own task".
+Attribute | +Description | +Required | +
name | +the name of the task | +Yes | +
class | +the full class name implementing the task | +Yes | +
+++
<taskdef name="myjavadoc" value="com.mydomain.JavadocTask" +/>
Sets the DSTAMP, TSTAMP and TODAY properties in the current project. The DSTAMP is +in the "yyyymmdd" format, the TSTAMP is in the "hhmm" format +and TODAY is "month day year".
+These properties can be used in the buildfile, for instance, to create +timestamped filenames or used to replace placeholder tags inside documents to +indicate, for example, the release date. The best place for this task is in the init target.
+Attribute | +Description | +Required | +
+++
<tstamp/>
Creates a zipfile.
+The basedir attribute is the reference directory from where to zip.
+When "*" is used for items, all files in the basedir, and its +subdirectories, will be zipped. Otherwise all the files and directories +mentioned in the items list will zipped. When a directory is specified, then all +files within it are also zipped.
+With the ignore attribute, you can specify names of files or +directories to ignore. These files will not be zipped. The items in the ignore +attribute override the items in the items attribute. The names specified +in the ignore attribute are just names, they do not contain any path +information!
+Attribute | +Description | +Required | +
zipfile | +the zip-file to create. | +Yes | +
basedir | +the directory from which to zip the files. | +Yes | +
items | +a comma separated list of the files/directories to zip. | +Yes | +
ignore | +a comma separated list of the filenames/directorynames to + exclude from the zip. | +No | +
+++
<zip zipfile="${dist}/manual.zip" basedir="htdocs/manual" +items="*" />
zips all files in the htdocs/manual
directory in a file called manual.zip
+in the ${dist}
directory.
+++
<zip zipfile="${dist}/manual.zip" basedir="htdocs/manual" +items="*" ignore="mydocs, todo.html"/>
zips all files in the htdocs/manual
directory in a file called manual.zip
+in the ${dist}
directory. Files/directories with the names mydocs
+and todo.html
are excluded.
It is very easy to write your own task:
+org.apache.tools.ant.Task
.public
+ void
method that takes one String
as an argument. The
+ name of the method must begin with "set", followed by the
+ attribute name, with the first character in uppercase, and the rest in
+ lowercase.public void execute
method, with no arguments, that
+ throws a BuildException
. This method implements the task
+ itself.It is important to know that Ant first calls the setters for the attributes +it encounters for a specific task in the buildfile, before it executes is.
+Let's write our own task, that prints a message on the System.out stream. The +task has one attribute called "message".
+++public class MyVeryOwnTask extends Task { + private String msg; + + // The method executing the task + public void execute() throws BuildException { + System.out.println(message); + } + + // The setter for the "message" attribute + public void setMessage(String msg) { + this.msg = msg; + } +}+
It's really this simple;-)
+Adding your task to the system is rather simple too:
+++<project name="TaskTest" default="test" basedir="."> + <target name="init"> + <taskdef name="mytask" class="com.mydomain.MyVeryOwnTask"/> + </target> + + <target name="test"> + <mytask myattr="wombat" /> + </target> +</project> ++
Another way to add a task (more permanently), is to add the task name and
+implementing class name to the default.properties
file in the org.apache.tools.ant.taskdefs
+package. Then you can use it as if it were a built in task.
To provide feedback on this software, please subscribe to the Ant Development +Mail List (ant-dev-subscribe@jakarta.apache.org)
+Copyright © 2000 Apache Software Foundation. All +rights Reserved.
+ +