You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2004/11/16 09:12:38 UTC
cvs commit: ant/docs/manual/OptionalTasks replaceregexp.html
bodewig 2004/11/16 00:12:37
Modified: docs/manual running.html
tutorial-tasks-filesets-properties.html
tutorial-writing-tasks.html
docs/manual/CoreTasks changelog.html chmod.html
docs/manual/CoreTypes filterchain.html
selectors-program.html selectors.html
docs/manual/OptionalTasks replaceregexp.html
Log:
> -> >
Submitted by: Larry Shatzer
Revision Changes Path
1.28 +1 -1 ant/docs/manual/running.html
Index: running.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/running.html,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- running.html 31 Aug 2004 22:32:53 -0000 1.27
+++ running.html 16 Nov 2004 08:12:30 -0000 1.28
@@ -217,7 +217,7 @@
<p>So here the result of a search through the codebase. Because system properties are
available via Project instance, I searched for them with a
<pre>
- grep -r -n "getPropert" * > ..\grep.txt
+ grep -r -n "getPropert" * > ..\grep.txt
</pre>
command. After that I filtered out the often-used but not-so-important values (most of them
read-only values): <i>path.separator, ant.home, basedir, user.dir, os.name, ant.file,
1.5 +178 -178 ant/docs/manual/tutorial-tasks-filesets-properties.html
Index: tutorial-tasks-filesets-properties.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/tutorial-tasks-filesets-properties.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- tutorial-tasks-filesets-properties.html 9 Feb 2004 21:50:05 -0000 1.4
+++ tutorial-tasks-filesets-properties.html 16 Nov 2004 08:12:31 -0000 1.5
@@ -41,16 +41,16 @@
<p>We can use the buildfile from the other tutorial and modify it a little bit.
That�s the advantage of using properties - we can reuse nearly the whole script. :-)</p>
<pre class="code">
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="<b>FindTask</b>" basedir="." default="test">
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="<b>FindTask</b>" basedir="." default="test">
...
- <target name="use.init" description="Taskdef� the <b>Find</b>-Task" depends="jar">
- <taskdef name="<b>find</b>" classname="<b>Find</b>" classpath="${ant.project.name}.jar"/>
- </target>
+ <target name="use.init" description="Taskdef� the <b>Find</b>-Task" depends="jar">
+ <taskdef name="<b>find</b>" classname="<b>Find</b>" classpath="${ant.project.name}.jar"/>
+ </target>
<b><!-- the other use.* targets are deleted --></b>
...
-</project>
+</project>
</pre>
<p>The buildfile is in the archive <a href="tutorial-tasks-filesets-properties.zip">
@@ -63,13 +63,13 @@
<p>Our first step is to set a property to a value and print the value of that property.
So our scenario would be
<pre class="code">
- <find property="test" value="test-value"/>
- <find print="test"/>
+ <find property="test" value="test-value"/>
+ <find print="test"/>
</pre>
ok, can be rewritten with the core tasks
<pre class="code">
- <property name="test" value="test-value"/>
- <echo message="${test}"/>
+ <property name="test" value="test-value"/>
+ <echo message="${test}"/>
</pre>
but I have to start on known ground :-)</p>
<p>So what to do? Handling three attributes (property, value, print) and an execute method.
@@ -117,7 +117,7 @@
<p><i>(by the way: a short word to ants "namespaces" (don�t
be confused with xml namespaces which will be also introduces in the future (1.6 or 1.7):
-an <antcall> creates a new space for property names. All properties from the caller
+an <antcall> creates a new space for property names. All properties from the caller
are passed to the callee, but the callee can set its own properties without notice by the
caller.)</i></p>
@@ -158,9 +158,9 @@
path is simply a fileset (or more precise: a collection of filesets). So our usage
would be
<pre class="code">
- <find file="ant.jar" location="location.ant-jar">
- <fileset dir="${ant.home}" includes="**/*.jar"/>
- </find>
+ <find file="ant.jar" location="location.ant-jar">
+ <fileset dir="${ant.home}" includes="**/*.jar"/>
+ </find>
</pre>
</p>
@@ -315,30 +315,30 @@
environment we have to set that value for our own. And we use the <junit> task in fork-mode.
Therefore we have do modify our buildfile:
<pre class="code">
- <target name="junit" description="Runs the unit tests" depends="jar">
- <delete dir="${junit.out.dir.xml}" />
- <mkdir dir="${junit.out.dir.xml}" />
- <junit printsummary="yes" haltonfailure="no">
- <classpath refid="classpath.test"/>
- <b><sysproperty key="ant.home" value="${ant.home}"/></b>
- <formatter type="xml"/>
- <batchtest fork="yes" todir="${junit.out.dir.xml}">
- <fileset dir="${src.dir}" includes="**/*Test.java"/>
- </batchtest>
- </junit>
- </target>
+ <target name="junit" description="Runs the unit tests" depends="jar">
+ <delete dir="${junit.out.dir.xml}"/>
+ <mkdir dir="${junit.out.dir.xml}"/>
+ <junit printsummary="yes" haltonfailure="no">
+ <classpath refid="classpath.test"/>
+ <b><sysproperty key="ant.home" value="${ant.home}"/></b>
+ <formatter type="xml"/>
+ <batchtest fork="yes" todir="${junit.out.dir.xml}">
+ <fileset dir="${src.dir}" includes="**/*Test.java"/>
+ </batchtest>
+ </junit>
+ </target>
</pre>
<a name="path"/>
<h2>Using nested paths</h2>
<p>A task providing support for filesets is a very comfortable one. But there is another
-possibility of bundling files: the <path>. Fileset are easy if the files are all under
+possibility of bundling files: the <path>. Fileset are easy if the files are all under
a common base directory. But if this is not the case you have a problem. Another disadvantage
is its speed: if you have only a few files in a huge directory structure, why not use a
-<filelist> instead? <path>s combines these datatypes in that way that a path contains
+<filelist> instead? <path>s combines these datatypes in that way that a path contains
other paths, filesets, dirsets and filelists. This is why <a href="http://ant-contrib.sourceforge.net/">
-Ant-Contribs [4]</a> <foreach> task is modified to support paths instead of filesets. So we want that,
+Ant-Contribs [4]</a> <foreach> task is modified to support paths instead of filesets. So we want that,
too.</p>
<p>Changing from fileset to path support is very easy:</p>
@@ -354,15 +354,15 @@
paths.add(path);
}
<i><b>and build file from:</b></i>
- <find file="ant.jar" location="location.ant-jar">
- <fileset dir="${ant.home}" includes="**/*.jar"/>
- </find>
+ <find file="ant.jar" location="location.ant-jar">
+ <fileset dir="${ant.home}" includes="**/*.jar"/>
+ </find>
<i><b>to:</b></i>
- <find file="ant.jar" location="location.ant-jar">
- <b><path></b> *3
- <fileset dir="${ant.home}" includes="**/*.jar"/>
- </path>
- </find>
+ <find file="ant.jar" location="location.ant-jar">
+ <b><path></b> *3
+ <fileset dir="${ant.home}" includes="**/*.jar"/>
+ </path>
+ </find>
</pre>
<p>On <b>*1</b> we rename only the vector. It�s just for better reading the source. On <b>*2</b>
we have to provide the right method: an add<i>Name</i>(<i>Type</i> t). Therefore replace the
@@ -414,13 +414,13 @@
<p>In this section we will extend that task to support returning a list of all files.
Lists as property values are not supported by Ant natively. So we have to see how other
-tasks use lists. The most famous task using lists is Ant-Contribs <foreach>. All list
+tasks use lists. The most famous task using lists is Ant-Contribs <foreach>. All list
elements are concatenated and separated with a customizable separator (default ',').</p>
<p>So we do the following:</p>
<pre class="code">
- <find ... <b>delimiter=""</b>/> ... </find>
+ <find ... <b>delimiter=""</b>/> ... </find>
</pre>
<p>If the delimiter is set we will return all found files as list with that delimiter.</p>
@@ -436,35 +436,35 @@
<p>So we add as testcase:</p>
<pre class="code">
<b><i>in the buildfile:</i></b>
- <target name="test.init">
- <mkdir dir="test1/dir11/dir111"/> *1
- <mkdir dir="test1/dir11/dir112"/>
+ <target name="test.init">
+ <mkdir dir="test1/dir11/dir111"/> *1
+ <mkdir dir="test1/dir11/dir112"/>
...
- <touch file="test1/dir11/dir111/test"/>
- <touch file="test1/dir11/dir111/not"/>
+ <touch file="test1/dir11/dir111/test"/>
+ <touch file="test1/dir11/dir111/not"/>
...
- <touch file="test1/dir13/dir131/not2"/>
- <touch file="test1/dir13/dir132/test"/>
- <touch file="test1/dir13/dir132/not"/>
- <touch file="test1/dir13/dir132/not2"/>
- <mkdir dir="test2"/>
- <copy todir="test2"> *2
- <fileset dir="test1"/>
- </copy>
- </target>
-
- <target name="testMultipleFiles" depends="use.init,<b>test.init</b>"> *3
- <find file="test" location="location.test" <b>delimiter=";"</b>>
- <path>
- <fileset dir="test1"/>
- <fileset dir="test2"/>
- </path>
- </find>
- <delete> *4
- <fileset dir="test1"/>
- <fileset dir="test2"/>
- </delete>
- </target>
+ <touch file="test1/dir13/dir131/not2"/>
+ <touch file="test1/dir13/dir132/test"/>
+ <touch file="test1/dir13/dir132/not"/>
+ <touch file="test1/dir13/dir132/not2"/>
+ <mkdir dir="test2"/>
+ <copy todir="test2"> *2
+ <fileset dir="test1"/>
+ </copy>
+ </target>
+
+ <target name="testMultipleFiles" depends="use.init,<b>test.init</b>"> *3
+ <find file="test" location="location.test" <b>delimiter=";"</b>>
+ <path>
+ <fileset dir="test1"/>
+ <fileset dir="test2"/>
+ </path>
+ </find>
+ <delete> *4
+ <fileset dir="test1"/>
+ <fileset dir="test2"/>
+ </delete>
+ </target>
<b><i>in the test class:</i></b>
public void testMultipleFiles() {
@@ -563,123 +563,123 @@
As a template we have:
<pre class="code">
-<html>
+<html>
-<head>
-<meta http-equiv="Content-Language" content="en-us">
-<title> <b>Taskname</b> Task</title>
-</head>
-
-<body>
-
-<h2><a name="<i>taskname</i>"><b>Taskname</b></a></h2>
-<h3>Description</h3>
-<p> <b>Describe the task.</b></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>
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<title> <b>Taskname</b> Task</title>
+</head>
+
+<body>
+
+<h2><a name="<i>taskname</i>"><b>Taskname</b></a></h2>
+<h3>Description</h3>
+<p> <b>Describe the task.</b></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>
<b>do this html row for each attribute (including inherited attributes)</b>
- <tr>
- <td valign="top">classname</td>
- <td valign="top">the Java class to execute.</td>
- <td align="center" valign="top">Either jar or classname</td>
- </tr>
+ <tr>
+ <td valign="top">classname</td>
+ <td valign="top">the Java class to execute.</td>
+ <td align="center" valign="top">Either jar or classname</td>
+ </tr>
-</table>
+</table>
-<h3>Parameters specified as nested elements</h3>
+<h3>Parameters specified as nested elements</h3>
<b>Describe each nested element (including inherited)</b>
-<h4><b>your nested element</b></h4>
-<p> <b>description</b> </p>
-<p><em>since Ant 1.6</em>.</p>
+<h4>your nested element</b></h4>
+<p> <b>description</b> </p>
+<p><em>since Ant 1.6</em>.</p>
-<h3>Examples</h3>
-<pre>
+<h3>Examples</h3>
+<pre>
<b>A code sample; don�t forget to escape the < of the tags with &lt;</b>
-</pre>
+</pre>
<b>what should that example do?</b>
-</body>
-</html>
+</body>
+</html>
</pre>
<p>For our task we have <a href="CoreTasks/find.html">that [6]</a>:</p>
<pre class="code">
-<html>
+<html>
-<head>
-<meta http-equiv="Content-Language" content="en-us">
-<title> Find Task</title>
-</head>
-
-<body>
-
-<h2><a name="find">Find</a></h2>
-<h3>Description</h3>
-<p>Searchs in a given path for a file and returns the absolute to it as property.
-If delimiter is set this task returns all found locations.</p>
-
-<h3>Parameters</h3>
-<table border="1" cellpadding="2" cellspacing="0">
- <tr>
- <td valign="top"><b>Attribute</b></td>
- <td valign="top"><b>Description</b></td>
- <td align="center" valign="top"><b>Required</b></td>
- </tr>
- <tr>
- <td valign="top">file</td>
- <td valign="top">The name of the file to search.</td>
- <td align="center" valign="top">yes</td>
- </tr>
- <tr>
- <td valign="top">location</td>
- <td valign="top">The name of the property where to store the location</td>
- <td align="center" valign="top">yes</td>
- </tr>
- <tr>
- <td valign="top">delimiter</td>
- <td valign="top">A delimiter to use when returning the list</td>
- <td align="center" valign="top">only if the list is required</td>
- </tr>
-</table>
-
-<h3>Parameters specified as nested elements</h3>
-
-<h4>path</h4>
-<p>The path where to search the file.</p>
-
-<h3>Examples</h3>
-<pre>
- <find file="ant.jar" location="loc">
- <path>
- <fileset dir="${ant.home}"/>
- <path>
- </find>
-</pre>
-Searches in Ants home directory for a file <i>ant.jar</i> and stores its location in
-property <i>loc</i> (should be ANT_HOME/bin/ant.jar).
-
-<pre>
- <find file="ant.jar" location="loc" delimiter=";">
- <path>
- <fileset dir="C:/"/>
- <path>
- </find>
- <echo>ant.jar found in: ${loc}</echo>
-</pre>
-Searches in Windows C: drive for all <i>ant.jar</i> and stores their locations in
-property <i>loc</i> delimited with <i>';'</i>. (should need a long time :-)
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<title> Find Task</title>
+</head>
+
+<body>
+
+<h2><a name="find">Find</a></h2>
+<h3>Description</h3>
+<p>Searchs in a given path for a file and returns the absolute to it as property.
+If delimiter is set this task returns all found locations.</p>
+
+<h3>Parameters</h3>
+<table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Attribute</b></td>
+ <td valign="top"><b>Description</b></td>
+ <td align="center" valign="top"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td valign="top">file</td>
+ <td valign="top">The name of the file to search.</td>
+ <td align="center" valign="top">yes</td>
+ </tr>
+ <tr>
+ <td valign="top">location</td>
+ <td valign="top">The name of the property where to store the location</td>
+ <td align="center" valign="top">yes</td>
+ </tr>
+ <tr>
+ <td valign="top">delimiter</td>
+ <td valign="top">A delimiter to use when returning the list</td>
+ <td align="center" valign="top">only if the list is required</td>
+ </tr>
+</table>
+
+<h3>Parameters specified as nested elements</h3>
+
+<h4>path</h4>
+<p>The path where to search the file.</p>
+
+<h3>Examples</h3>
+<pre>
+ <find file="ant.jar" location="loc">
+ <path>
+ <fileset dir="${ant.home}"/>
+ <path>
+ </find>
+</pre>
+Searches in Ants home directory for a file <i>ant.jar</i> and stores its location in
+property <i>loc</i> (should be ANT_HOME/bin/ant.jar).
+
+<pre>
+ <find file="ant.jar" location="loc" delimiter=";">
+ <path>
+ <fileset dir="C:/"/>
+ <path>
+ </find>
+ <echo>ant.jar found in: ${loc}</echo>
+</pre>
+Searches in Windows C: drive for all <i>ant.jar</i> and stores their locations in
+property <i>loc</i> delimited with <i>';'</i>. (should need a long time :-)
After that it prints out the result (e.g. C:/ant-1.5.4/bin/ant.jar;C:/ant-1.6/bin/ant.jar).
-</body>
-</html>
+</body>
+</html>
</pre>
@@ -755,9 +755,9 @@
are any tests failing on our machine. (We can ignore these failing tests on later
steps; windows syntax used here- translate to xNIX if needed):
<pre class="output">
-ANTHOME> build // 1
-ANTHOME> set ANT_HOME=%CD%\dist // 2
-ANTHOME> ant test -Dtest.haltonfailure=false // 3
+ANTHOME> build // 1
+ANTHOME> set ANT_HOME=%CD%\dist // 2
+ANTHOME> ant test -Dtest.haltonfailure=false // 3
</pre>
First we have to build our Ant distribution (<b>//1</b>). On <b>//2</b> we set the ANT_HOME
@@ -782,14 +782,14 @@
<li>in FindTest.java change the line <tt>configureProject("build.xml");</tt> to
<tt>configureProject("src/etc/testcases/taskdefs/find.xml");</tt> </li>
<li>move the find.html to ANTHOME/docs/manual/CoreTasks/find.html </li>
-<li>add a <tt><a href="CoreTasks/find.html">Find</a><br></tt>
+<li>add a <tt><a href="CoreTasks/find.html">Find</a><br></tt>
in the ANTHOME/docs/manual/coretasklist.html </li>
</ul>
Now our modifications are done and we will retest it:
<pre class="output">
-ANTHOME> build
-ANTHOME> ant run-single-test // 1
+ANTHOME> build
+ANTHOME> ant run-single-test // 1
-Dtestcase=org.apache.tools.ant.taskdefs.FindTest // 2
-Dtest.haltonfailure=false
</pre>
@@ -799,15 +799,15 @@
<p>And ... oh, all tests fail: <i>Ant could not find the task or a class this task relies upon.</i></p>
-<p>Ok: in the earlier steps we told Ant to use the Find class for the <find> task (remember the
-<taskdef> statement in the "use.init" target). But now we want to introduce that task as
+<p>Ok: in the earlier steps we told Ant to use the Find class for the <find> task (remember the
+<taskdef> statement in the "use.init" target). But now we want to introduce that task as
a core task. And nobody wants to taskdef the javac, echo, ... So what to do? The answer is the
src/main/.../taskdefs/default.properties. Here is the mapping between taskname and implementing
class done. So we add a <tt>find=org.apache.tools.ant.taskdefs.Find</tt> as the last core
task (just before the <tt># optional tasks</tt> line). Now a second try:
<pre class="output">
-ANTHOME> build // 1
-ANTHOME> ant run-single-test
+ANTHOME> build // 1
+ANTHOME> ant run-single-test
-Dtestcase=org.apache.tools.ant.taskdefs.FindTest
-Dtest.haltonfailure=false
</pre>
@@ -816,7 +816,7 @@
source path. So we have to rebuild that jar. But now all tests pass and we check whether our class
breaks some other tests.
<pre class="output">
-ANTHOME> ant test -Dtest.haltonfailure=false
+ANTHOME> ant test -Dtest.haltonfailure=false
</pre>
Because there are a lot of tests this step requires a little bit of time. So use the <i>run-single-test</i>
during development and do the <i>test</i> only at the end (maybe sometimes during development too).
@@ -863,7 +863,7 @@
<p>So we will run the tests with
<pre class="output">
-ANTHOME> ant -f check.xml checkstyle htmlreport
+ANTHOME> ant -f check.xml checkstyle htmlreport
</pre>
I prefer the HTML report because there are lots of messages and we can navigate faster.
Open the ANTHOME/build/reports/checkstyle/html/index.html and navigate to the Find.java. Now we
@@ -900,7 +900,7 @@
<tr>
<th>body</th>
<td><i>more details about the path</i></td>
- <td>This new task looks inside a nested <path/> for occurrences of a file and stores
+ <td>This new task looks inside a nested <path/> for occurrences of a file and stores
all locations as a property. See the included manual for details.</td>
</tr>
<tr>
1.5 +151 -151 ant/docs/manual/tutorial-writing-tasks.html
Index: tutorial-writing-tasks.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/tutorial-writing-tasks.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- tutorial-writing-tasks.html 9 Feb 2004 21:50:05 -0000 1.4
+++ tutorial-writing-tasks.html 16 Nov 2004 08:12:31 -0000 1.5
@@ -44,52 +44,52 @@
</ul>
So the buildfile contains three targets.
<pre class="code">
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="MyTask" basedir="." default="jar">
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="MyTask" basedir="." default="jar">
- <target name="clean" description="Delete all generated files">
- <delete dir="classes"/>
- <delete file="MyTasks.jar"/>
- </target>
-
- <target name="compile" description="Compiles the Task">
- <javac srcdir="src" destdir="classes"/>
- </target>
-
- <target name="jar" description="JARs the Task">
- <jar destfile="MyTask.jar" basedir="classes"/>
- </target>
+ <target name="clean" description="Delete all generated files">
+ <delete dir="classes"/>
+ <delete file="MyTasks.jar"/>
+ </target>
+
+ <target name="compile" description="Compiles the Task">
+ <javac srcdir="src" destdir="classes"/>
+ </target>
+
+ <target name="jar" description="JARs the Task">
+ <jar destfile="MyTask.jar" basedir="classes"/>
+ </target>
-</project>
+</project>
</pre>
This buildfile uses often the same value (src, classes, MyTask.jar), so we should rewrite that
-using <property>s. On second there are some handicaps: <javac> requires that the destination
+using <property>s. On second there are some handicaps: <javac> requires that the destination
directory exists; a call of "clean" with a non existing classes directory will fail; "jar" requires
the execution of some steps bofore. So the refactored code is:
<pre class="code">
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="MyTask" basedir="." default="jar">
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="MyTask" basedir="." default="jar">
- <b><property name="src.dir" value="src"/></b>
- <b><property name="classes.dir" value="classes"/></b>
+ <b><property name="src.dir" value="src"/></b>
+ <b><property name="classes.dir" value="classes"/></b>
- <target name="clean" description="Delete all generated files">
- <delete dir="<b>${classes.dir}</b>" <b>failonerror="false"</b>/>
- <delete file="<b>${ant.project.name}.jar</b>"/>
- </target>
-
- <target name="compile" description="Compiles the Task">
- <b><mkdir dir="${classes.dir}"/></b>
- <javac srcdir="<b>${src.dir}</b>" destdir="${classes.dir}"/>
- </target>
-
- <target name="jar" description="JARs the Task" <b>depends="compile"</b>>
- <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/>
- </target>
+ <target name="clean" description="Delete all generated files">
+ <delete dir="<b>${classes.dir}</b>" <b>failonerror="false"</b>/>
+ <delete file="<b>${ant.project.name}.jar</b>"/>
+ </target>
+
+ <target name="compile" description="Compiles the Task">
+ <b><mkdir dir="${classes.dir}"/></b>
+ <javac srcdir="<b>${src.dir}</b>" destdir="${classes.dir}"/>
+ </target>
+
+ <target name="jar" description="JARs the Task" <b>depends="compile"</b>>
+ <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/>
+ </target>
-</project>
+</project>
</pre>
<i>ant.project.name</i> is one of the
<a href="http://ant.apache.org/manual/using.html#built-in-props" target="_blank">
@@ -118,19 +118,19 @@
<p>But after creating the jar we want to use our new Task. Therefore we need a
new target "use". Before we can use our new task we have to declare it with
<a href="http://ant.apache.org/manual/CoreTasks/taskdef.html" target="_blank">
-<taskdef> [2]</a>. And for easier process we change the default clause:
+<taskdef> [2]</a>. And for easier process we change the default clause:
<pre class="code">
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="MyTask" basedir="." default="<b>use</b>">
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="MyTask" basedir="." default="<b>use</b>">
...
- <b><target name="use" description="Use the Task" depends="jar">
- <taskdef name="helloworld" classname="HelloWorld" classpath="${ant.project.name}.jar"/>
- <helloworld/>
- </target></b>
+ <b><target name="use" description="Use the Task" depends="jar">
+ <taskdef name="helloworld" classname="HelloWorld" classpath="${ant.project.name}.jar"/>
+ <helloworld/>
+ </target></b>
-</project>
+</project>
</pre>
Important is the <i>classpath</i>-attribute. Ant searches in its /lib directory for
@@ -226,8 +226,8 @@
<a name="attributes">
<h2>Attributes</h2>
<p>Now we want to specify the text of our message (it seems that we are
-rewriting the <echo/> task :-). First we well do that with an attribute.
-It is very easy - for each attribute provide a <tt>public void set<attributename>(<type>
+rewriting the <echo/> task :-). First we well do that with an attribute.
+It is very easy - for each attribute provide a <tt>public void set<attributename>(<type>
newValue)</tt> method and Ant will do the rest via reflection.</p>
<pre class="code">
import org.apache.tools.ant.Task;
@@ -257,12 +257,12 @@
<p>After that we have to modify our buildfile:
<pre class="code">
- <target name="use" description="Use the Task" depends="jar">
+ <target name="use" description="Use the Task" depends="jar">
<taskdef name="helloworld"
classname="HelloWorld"
- classpath="${ant.project.name}.jar"/>
- <helloworld <b>message="Hello World"</b>/>
- </target>
+ classpath="${ant.project.name}.jar"/>
+ <helloworld <b>message="Hello World"</b>/>
+ </target>
</pre>
That's all.</p>
@@ -275,13 +275,13 @@
<a href="http://ant.apache.org/manual/develop.html#set-magic">Manual
'Writing Your Own Task' [3]</a>)</li>
</ul>
-Before calling the set-method all properties are resolved. So a <tt><helloworld message="${msg}"/></tt>
+Before calling the set-method all properties are resolved. So a <tt><helloworld message="${msg}"/></tt>
would not set the message string to "${msg}" if there is a property "msg" with a set value.
<a name="NestedText"></a>
<h2>Nested Text</h2>
-<p>Maybe you have used the <echo> task in a way like <tt><echo>Hello World</echo></tt>.
+<p>Maybe you have used the <echo> task in a way like <tt><echo>Hello World</echo></tt>.
For that you have to provide a <tt>public void addText(String text)</tt> method.
<pre class="code">
...
@@ -305,7 +305,7 @@
We use the first way of the three described ways. There are several steps for that:<ol>
<li>We create a class for collecting all the infos the nested element should contain.
This class is created by the same rules for attributes and nested elements
- as for the task (set<attributename>() methods). </li>
+ as for the task (set<attributename>() methods). </li>
<li>The task holds multiple instances of this class in a list.</li>
<li>A factory method instantiates an object, saves the reference in the list
and returns it to Ant Core.</li>
@@ -346,10 +346,10 @@
<tt>public <i>classname</i> create<i>XML-name</i>()</tt>. Therefore we write in
the buildfile
<pre class="code">
- <helloworld>
- <message msg="Nested Element 1"/>
- <message msg="Nested Element 2"/>
- </helloworld>
+ <helloworld>
+ <message msg="Nested Element 1"/>
+ <message msg="Nested Element 2"/>
+ </helloworld>
</pre>
@@ -357,76 +357,76 @@
<h2>Our task in a little more complex version</h2>
<p>For recapitulation now a little refactored buildfile:
<pre class="code">
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="MyTask" basedir="." default="use">
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="MyTask" basedir="." default="use">
- <property name="src.dir" value="src"/>
- <property name="classes.dir" value="classes"/>
+ <property name="src.dir" value="src"/>
+ <property name="classes.dir" value="classes"/>
- <target name="clean" description="Delete all generated files">
- <delete dir="${classes.dir}" failonerror="false"/>
- <delete file="${ant.project.name}.jar"/>
- </target>
-
- <target name="compile" description="Compiles the Task">
- <mkdir dir="${classes.dir}"/>
- <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
- </target>
-
- <target name="jar" description="JARs the Task" depends="compile">
- <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/>
- </target>
+ <target name="clean" description="Delete all generated files">
+ <delete dir="${classes.dir}" failonerror="false"/>
+ <delete file="${ant.project.name}.jar"/>
+ </target>
+
+ <target name="compile" description="Compiles the Task">
+ <mkdir dir="${classes.dir}"/>
+ <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
+ </target>
+
+ <target name="jar" description="JARs the Task" depends="compile">
+ <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/>
+ </target>
<target name="use.init"
description="Taskdef the HelloWorld-Task"
- depends="jar">
+ depends="jar">
<taskdef name="helloworld"
classname="HelloWorld"
- classpath="${ant.project.name}.jar"/>
- </target>
+ classpath="${ant.project.name}.jar"/>
+ </target>
<target name="use.without"
description="Use without any"
- depends="use.init">
- <helloworld/>
- </target>
+ depends="use.init">
+ <helloworld/>
+ </target>
<target name="use.message"
description="Use with attribute 'message'"
- depends="use.init">
- <helloworld message="attribute-text"/>
- </target>
+ depends="use.init">
+ <helloworld message="attribute-text"/>
+ </target>
<target name="use.fail"
description="Use with attribute 'fail'"
- depends="use.init">
- <helloworld fail="true"/>
- </target>
+ depends="use.init">
+ <helloworld fail="true"/>
+ </target>
<target name="use.nestedText"
description="Use with nested text"
- depends="use.init">
- <helloworld>nested-text</helloworld>
- </target>
+ depends="use.init">
+ <helloworld>nested-text</helloworld>
+ </target>
<target name="use.nestedElement"
description="Use with nested 'message'"
- depends="use.init">
- <helloworld>
- <message msg="Nested Element 1"/>
- <message msg="Nested Element 2"/>
- </helloworld>
- </target>
+ depends="use.init">
+ <helloworld>
+ <message msg="Nested Element 1"/>
+ <message msg="Nested Element 2"/>
+ </helloworld>
+ </target>
<target name="use"
description="Try all (w/out use.fail)"
depends="use.without,use.message,use.nestedText,use.nestedElement"
- />
+ />
-</project>
+</project>
</pre>
And the code of the task:
@@ -505,7 +505,7 @@
And it works:
<pre class="output">
-C:\tmp\anttests\MyFirstTask>ant
+C:\tmp\anttests\MyFirstTask>ant
Buildfile: build.xml
compile:
@@ -537,7 +537,7 @@
BUILD SUCCESSFUL
Total time: 3 seconds
-C:\tmp\anttests\MyFirstTask>ant use.fail
+C:\tmp\anttests\MyFirstTask>ant use.fail
Buildfile: build.xml
compile:
@@ -552,7 +552,7 @@
C:\tmp\anttests\MyFirstTask\build.xml:36: Fail requested.
Total time: 1 second
-C:\tmp\anttests\MyFirstTask>
+C:\tmp\anttests\MyFirstTask>
</pre>
Next step: test ...
@@ -580,66 +580,66 @@
<a href="http://gump.covalent.net/jars/latest/ant/ant-testutil.jar">
http://gump.covalent.net/jars/latest/ant/ant-testutil.jar [5]</a>.</p>
-<p>For executing the test and creating a report we need the optional tasks <junit>
-and <junitreport>. So we add to the buildfile:
+<p>For executing the test and creating a report we need the optional tasks <junit>
+and <junitreport>. So we add to the buildfile:
<pre class="code">
...
<font color="#9F9F9F"><project name="MyTask" basedir="." </font>default="test"<font color="#9F9F9F">></font>
...
- <property name="ant.test.lib" value="ant-testutil.jar"/>
- <property name="report.dir" value="report"/>
- <property name="junit.out.dir.xml" value="${report.dir}/junit/xml"/>
- <property name="junit.out.dir.html" value="${report.dir}/junit/html"/>
-
- <path id="classpath.run">
- <path path="${java.class.path}"/>
- <path location="${ant.project.name}.jar"/>
- </path>
-
- <path id="classpath.test">
- <path refid="classpath.run"/>
- <path location="${ant.test.lib}"/>
- </path>
-
- <target name="clean" description="Delete all generated files">
- <delete failonerror="false" includeEmptyDirs="true">
- <fileset dir="." includes="${ant.project.name}.jar"/>
- <fileset dir="${classes.dir}"/>
- <fileset dir="${report.dir}"/>
- </delete>
- </target>
-
- <font color="#9F9F9F"><target name="compile" description="Compiles the Task">
- <mkdir dir="${classes.dir}"/>
- <javac srcdir="${src.dir}" destdir="${classes.dir}" </font>classpath="${ant.test.lib}"<font color="#9F9F9F">/>
- </target></font>
+ <property name="ant.test.lib" value="ant-testutil.jar"/>
+ <property name="report.dir" value="report"/>
+ <property name="junit.out.dir.xml" value="${report.dir}/junit/xml"/>
+ <property name="junit.out.dir.html" value="${report.dir}/junit/html"/>
+
+ <path id="classpath.run">
+ <path path="${java.class.path}"/>
+ <path location="${ant.project.name}.jar"/>
+ </path>
+
+ <path id="classpath.test">
+ <path refid="classpath.run"/>
+ <path location="${ant.test.lib}"/>
+ </path>
+
+ <target name="clean" description="Delete all generated files">
+ <delete failonerror="false" includeEmptyDirs="true">
+ <fileset dir="." includes="${ant.project.name}.jar"/>
+ <fileset dir="${classes.dir}"/>
+ <fileset dir="${report.dir}"/>
+ </delete>
+ </target>
+
+ <font color="#9F9F9F"><target name="compile" description="Compiles the Task">
+ <mkdir dir="${classes.dir}"/>
+ <javac srcdir="${src.dir}" destdir="${classes.dir}" </font>classpath="${ant.test.lib}"<font color="#9F9F9F">/>
+ </target></font>
...
- <target name="junit" description="Runs the unit tests" depends="jar">
- <delete dir="${junit.out.dir.xml}" />
- <mkdir dir="${junit.out.dir.xml}" />
- <junit printsummary="yes" haltonfailure="no">
- <classpath refid="classpath.test"/>
- <formatter type="xml"/>
- <batchtest fork="yes" todir="${junit.out.dir.xml}">
- <fileset dir="${src.dir}" includes="**/*Test.java"/>
- </batchtest>
- </junit>
- </target>
-
- <target name="junitreport" description="Create a report for the rest result">
- <mkdir dir="${junit.out.dir.html}" />
- <junitreport todir="${junit.out.dir.html}">
- <fileset dir="${junit.out.dir.xml}">
- <include name="*.xml"/>
- </fileset>
- <report format="frames" todir="${junit.out.dir.html}"/>
- </junitreport>
- </target>
+ <target name="junit" description="Runs the unit tests" depends="jar">
+ <delete dir="${junit.out.dir.xml}"/>
+ <mkdir dir="${junit.out.dir.xml}"/>
+ <junit printsummary="yes" haltonfailure="no">
+ <classpath refid="classpath.test"/>
+ <formatter type="xml"/>
+ <batchtest fork="yes" todir="${junit.out.dir.xml}">
+ <fileset dir="${src.dir}" includes="**/*Test.java"/>
+ </batchtest>
+ </junit>
+ </target>
+
+ <target name="junitreport" description="Create a report for the rest result">
+ <mkdir dir="${junit.out.dir.html}"/>
+ <junitreport todir="${junit.out.dir.html}">
+ <fileset dir="${junit.out.dir.xml}">
+ <include name="*.xml"/>
+ </fileset>
+ <report format="frames" todir="${junit.out.dir.html}"/>
+ </junitreport>
+ </target>
<target name="test"
depends="junit,junitreport"
description="Runs unit tests and creates a report"
- />
+ />
...
</pre></p>
@@ -693,7 +693,7 @@
<p>When starting <tt>ant</tt> we'll get a short message to STDOUT and
a nice HTML-report.
<pre class="output">
-C:\tmp\anttests\MyFirstTask>ant
+C:\tmp\anttests\MyFirstTask>ant
Buildfile: build.xml
compile:
@@ -719,7 +719,7 @@
BUILD SUCCESSFUL
Total time: 7 seconds
-C:\tmp\anttests\MyFirstTask>
+C:\tmp\anttests\MyFirstTask>
</pre></p>
1.16 +2 -2 ant/docs/manual/CoreTasks/changelog.html
Index: changelog.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/CoreTasks/changelog.html,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- changelog.html 9 Feb 2004 21:50:05 -0000 1.15
+++ changelog.html 16 Nov 2004 08:12:31 -0000 1.16
@@ -213,9 +213,9 @@
<revision>1.3</revision>
<prevrevision>1.2</prevrevision>
</file>
- <msg><![CDATA[Use URLs directly rather than go via a FIle.
+ <msg><![CDATA[Use URLs directly rather than go via a File.
-This allows temp[lates to be stored inside jar]]></msg>
+This allows templates to be stored inside jar]]></msg>
</entry>
</changelog>
</pre>
1.17 +2 -2 ant/docs/manual/CoreTasks/chmod.html
Index: chmod.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/CoreTasks/chmod.html,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- chmod.html 9 Feb 2004 21:50:05 -0000 1.16
+++ chmod.html 16 Nov 2004 08:12:31 -0000 1.17
@@ -147,8 +147,8 @@
</blockquote>
<p>keeps non-owners from touching cgi scripts, files with a <code>.old</code>
-extension or directories begining with <code>private_</code>. A directory
-ending in <code>.old</code> or a file begining with private_ would remain
+extension or directories beginning with <code>private_</code>. A directory
+ending in <code>.old</code> or a file beginning with private_ would remain
unaffected.</p>
<hr>
1.21 +12 -12 ant/docs/manual/CoreTypes/filterchain.html
Index: filterchain.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/CoreTypes/filterchain.html,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- filterchain.html 15 Oct 2004 17:05:54 -0000 1.20
+++ filterchain.html 16 Nov 2004 08:12:34 -0000 1.21
@@ -648,34 +648,34 @@
<TABLE>
<TR>
<TD bgcolor="#C0C0C0"> </TD>
- <TD><PRE><filterchain>
+ <TD><PRE><filterchain>
<headfilter lines="2"/>
-</filterchain></PRE></TD>
+</filterchain></PRE></TD>
</TR>
<TR>
<TD bgcolor="#FF00FF"> </TD>
- <TD><PRE><filterchain>
+ <TD><PRE><filterchain>
<tailfilter lines="-1" skip="2"/>
-</filterchain></PRE></TD>
+</filterchain></PRE></TD>
</TR>
<TR>
<TD bgcolor="#008000"> </TD>
- <TD><PRE><filterchain>
+ <TD><PRE><filterchain>
<headfilter lines="-1" skip="2"/>
-</filterchain></PRE></TD>
+</filterchain></PRE></TD>
</TR>
<TR>
<TD bgcolor="#0000FF"> </TD>
- <TD><PRE><filterchain>
- <headfilter lines="-1" skip="2"/>
- <tailfilter lines="-1" skip="2"/>
-</filterchain></PRE></TD>
+ <TD><PRE><filterchain>
+ <headfilter lines="-1" skip="2"/>
+ <tailfilter lines="-1" skip="2"/>
+</filterchain></PRE></TD>
</TR>
<TR>
<TD bgcolor="#00FF00"> </TD>
- <TD><PRE><filterchain>
+ <TD><PRE><filterchain>
<tailfilter lines="2"/>
-</filterchain></PRE></TD>
+</filterchain></PRE></TD>
</TR>
</TABLE>
</TD>
1.6 +2 -2 ant/docs/manual/CoreTypes/selectors-program.html
Index: selectors-program.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/CoreTypes/selectors-program.html,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- selectors-program.html 13 Sep 2003 16:35:52 -0000 1.5
+++ selectors-program.html 16 Nov 2004 08:12:34 -0000 1.6
@@ -201,9 +201,9 @@
As an example of an error JUnit could log<pre>
[junit] FAILED
[junit] Error for files: <font color=blue>.;copy.filterset.filtered;tar/gz/asf-logo.gif.tar.gz</font>
- [junit] expected:<<font color=blue>FTTTFTTTF...</font>> but was:<TTTTTTTTT...>
+ [junit] expected:<<font color=blue>FTTTFTTTF...</font>> but was:<TTTTTTTTT...>
[junit] junit.framework.ComparisonFailure: Error for files: .;copy.filterset.filtered;tar/gz/asf-logo.gif.tar.gz
- [junit] expected:<FTTTFTTTF...> but was:<TTTTTTTTT...>
+ [junit] expected:<FTTTFTTTF...> but was:<TTTTTTTTT...>
[junit] at junit.framework.Assert.assertEquals(Assert.java:81)
[junit] at org.apache.tools.ant.types.selectors.BaseSelectorTest.performTest(BaseSelectorTest.java:194)
</pre></p>
1.26 +44 -44 ant/docs/manual/CoreTypes/selectors.html
Index: selectors.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/CoreTypes/selectors.html,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- selectors.html 17 Jul 2004 16:08:41 -0000 1.25
+++ selectors.html 16 Nov 2004 08:12:34 -0000 1.26
@@ -613,7 +613,7 @@
<blockquote><pre>
<fileset dir="${src}">
- <type type="dir"/>
+ <type type="dir"/>
</fileset>
</pre></blockquote>
@@ -622,12 +622,12 @@
directory, but avoid selecting empty directories, use:
<blockquote><pre>
-<fileset dir="${src}">
- <and>
- <present targetdir="template"/>
- <type type="file"/>
- </and>
-</fileset>
+<fileset dir="${src}">
+ <and>
+ <present targetdir="template"/>
+ <type type="file"/>
+ </and>
+</fileset>
</pre></blockquote>
@@ -816,62 +816,62 @@
<p>Here are some examples of how to use the Modified Selector:</p>
<blockquote><pre>
- <copy todir="dest">
- <fileset dir="src">
- <modified/>
- </fileset>
- </copy
+ <copy todir="dest">
+ <fileset dir="src">
+ <modified/>
+ </fileset>
+ </copy>
</pre></blockquote>
<p>This will copy all files from <i>src</i> to <i>dest</i> which content has changed.
Using an updating PropertyfileCache with cache.properties and
MD5-DigestAlgorithm.</p>
<blockquote><pre>
- <copy todir="dest">
- <fileset dir="src">
+ <copy todir="dest">
+ <fileset dir="src">
<modified update="true"
seldirs="true"
cache="propertyfile"
algorithm="digest"
- comparator="equal">
- <param name="cache.cachefile" value="cache.properties"/>
- <param name="algorithm.algorithm" value="MD5"/>
- </modified>
- </fileset>
- </copy>
+ comparator="equal">
+ <param name="cache.cachefile" value="cache.properties"/>
+ <param name="algorithm.algorithm" value="MD5"/>
+ </modified>
+ </fileset>
+ </copy>
</pre></blockquote>
<p>This is the same example rewritten as CoreSelector with setting the all the values
(same as defaults are).</p>
<blockquote><pre>
- <copy todir="dest">
- <fileset dir="src">
- <custom class="org.apache.tools.ant.types.selectors.modifiedselector.ModifiedSelector">
- <param name="update" value="true"/>
- <param name="seldirs" value="true"/>
- <param name="cache" value="propertyfile"/>
- <param name="algorithm" value="digest"/>
- <param name="comparator" value="equal"/>
- <param name="cache.cachefile" value="cache.properties"/>
- <param name="algorithm.algorithm" value="MD5"/>
- </custom>
- </fileset>
- </copy>
+ <copy todir="dest">
+ <fileset dir="src">
+ <custom class="org.apache.tools.ant.types.selectors.modifiedselector.ModifiedSelector">
+ <param name="update" value="true"/>
+ <param name="seldirs" value="true"/>
+ <param name="cache" value="propertyfile"/>
+ <param name="algorithm" value="digest"/>
+ <param name="comparator" value="equal"/>
+ <param name="cache.cachefile" value="cache.properties"/>
+ <param name="algorithm.algorithm" value="MD5"/>
+ </custom>
+ </fileset>
+ </copy>
</pre></blockquote>
<p>And this is the same rewritten as CustomSelector.</p>
<blockquote><pre>
- <target name="generate-and-upload-site">
- <echo> generate the site using forrest </echo>
- <antcall target="site"/>
-
- <echo> upload the changed file </echo>
- <ftp server="${ftp.server}" userid="${ftp.user}" password="${ftp.pwd}">
- <fileset dir="htdocs/manual">
- <modified/>
- </fileset>
- </ftp>
- </target>
+ <target name="generate-and-upload-site">
+ <echo> generate the site using forrest </echo>
+ <antcall target="site"/>
+
+ <echo> upload the changed file </echo>
+ <ftp server="${ftp.server}" userid="${ftp.user}" password="${ftp.pwd}">
+ <fileset dir="htdocs/manual">
+ <modified/>
+ </fileset>
+ </ftp>
+ </target>
</pre></blockquote>
<p>A useful scenario for this selector inside a build environment
for homepage generation (e.g. with <a href="http://xml.apache.org/forrest/">
1.22 +1 -1 ant/docs/manual/OptionalTasks/replaceregexp.html
Index: replaceregexp.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/OptionalTasks/replaceregexp.html,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- replaceregexp.html 12 Nov 2004 10:36:28 -0000 1.21
+++ replaceregexp.html 16 Nov 2004 08:12:35 -0000 1.22
@@ -123,7 +123,7 @@
<blockquote>
<pre>
-<html> <body>
+<html> <body>
<<TAB>><h1> T E S T </h1> <<TAB>>
<<TAB>> </body></html>
</pre></blockquote>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org