diff --git a/WHATSNEW b/WHATSNEW index 2679454c6..12c69046a 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -63,7 +63,7 @@ Other changes: * Added support for specifying CVS_RSH in the task * New tasks bzip2 and bunzip2 to pack and unpack files using the - BZip2 alogrithm, replaceregexp, checksum, translate + BZip2 alogrithm, replaceregexp, checksum, translate, waitfor * The attributes zipfile, jarfile, warfile and earfile (from the Zip, Jar, War and Ear tasks) have been deprecated and superseded by a @@ -72,7 +72,7 @@ Other changes: * Added a new condition that test for the existence of a property to the condition task. -* Added a new condition . +* Added a new conditions , , . * Ant's testcases require JUnit 3.7 or above as they now use the new assertTrue method instead of assert. diff --git a/docs/manual/CoreTasks/condition.html b/docs/manual/CoreTasks/condition.html index 252560cc5..22058f568 100644 --- a/docs/manual/CoreTasks/condition.html +++ b/docs/manual/CoreTasks/condition.html @@ -38,130 +38,8 @@ you must specify exactly one condition.

Parameters specified as nested elements

-

All conditions to test are specified as nested elements.

- -

not

-

The <not> element expects exactly one other -condition to be nested into this element, negating the result of the -condition. It doesn't have any attributes and accepts all nested -elements of the condition task as nested elements as well.

- -

and

-The <and> element doesn't have any attributes and -accepts an arbitrary number of conditions as nested elements - all -nested elements of the condition task are supported. This condition -is true if all of its contained conditions are, conditions will be -evaluated in the order they have been specified in the build file.

-

The <and> condition has the same shortcut -semantics as the Java && operator, as soon as one of the -nested conditions is false, no other condition will be evaluated.

- -

or

-The <or> element doesn't have any attributes and -accepts an arbitrary number of conditions as nested elements - all -nested elements of the condition task are supported. This condition -is true if at least one of its contained conditions is, conditions -will be evaluated in the order they have been specified in the build -file.

The <or> condition has the same -shortcut semantics as the Java || operator, as soon as one of the -nested conditions is true, no other condition will be evaluated.

- -

available

-

This condition is identical to the Available task, all attributes and nested -elements of that task are supported, the property and value attributes -are redundant and will be ignored.

- -

uptodate

-

This condition is identical to the Uptodate task, all attributes and nested -elements of that task are supported, the property and value attributes -are redundant and will be ignored.

- -

os

-

Test whether the current operating system is of a given type. Each -defined attribute is tested and the result is true only if all -the tests succeed. -

- - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionRequired
familyThe name of the operating system family to expect.No
nameThe name of the operating system to expect.No
archThe architecture of the operating system to expect.No
versionThe version of the operating system to expect.No
-

Supported values for the family attribute are: -

    -
  • windows (for all versions of Microsoft Windows)
  • -
  • dos (for all Microsoft DOS based operating systems including - Microsoft Windows and OS/2)
  • -
  • mac (for all Apple Macintosh systems)
  • -
  • unix (for all Unix and Unix-like operating systems)
  • -
  • netware (for Novell NetWare)
  • -
  • os/2 (for OS/2)
  • -
- -

equals

-

Tests whether the two given Strings are identical

- - - - - - - - - - - - - - - - -
AttributeDescriptionRequired
arg1First string to test.Yes
arg2Second string to test.Yes
- -

isset

-

Test whether a given property has been set in this project.

- - - - - - - - - - - -
AttributeDescriptionRequired
propertyThe name of the property to test.Yes
- -

checksum

- -

This condition is identical to the Checksum task, all attributes and nested -elements of that task are supported, the property and overwrite -attributes are redundant and will be ignored.

+

All conditions to test are specified as nested elements, for a +complete list see here.

Examples

diff --git a/docs/manual/CoreTasks/conditions.html b/docs/manual/CoreTasks/conditions.html
new file mode 100644
index 000000000..9c46488b3
--- /dev/null
+++ b/docs/manual/CoreTasks/conditions.html
@@ -0,0 +1,181 @@
+
+
+
+
+Apache Ant User Manual
+
+
+
+
+

Conditions

+ +

These are the nested elements that can be used as conditions in the +<condition> and +<waitfor> tasks.

+ +

not

+

The <not> element expects exactly one other +condition to be nested into this element, negating the result of the +condition. It doesn't have any attributes and accepts all nested +elements of the condition task as nested elements as well.

+ +

and

+The <and> element doesn't have any attributes and +accepts an arbitrary number of conditions as nested elements - all +nested elements of the condition task are supported. This condition +is true if all of its contained conditions are, conditions will be +evaluated in the order they have been specified in the build file.

+

The <and> condition has the same shortcut +semantics as the Java && operator, as soon as one of the +nested conditions is false, no other condition will be evaluated.

+ +

or

+The <or> element doesn't have any attributes and +accepts an arbitrary number of conditions as nested elements - all +nested elements of the condition task are supported. This condition +is true if at least one of its contained conditions is, conditions +will be evaluated in the order they have been specified in the build +file.

The <or> condition has the same +shortcut semantics as the Java || operator, as soon as one of the +nested conditions is true, no other condition will be evaluated.

+ +

available

+

This condition is identical to the Available task, all attributes and nested +elements of that task are supported, the property and value attributes +are redundant and will be ignored.

+ +

uptodate

+

This condition is identical to the Uptodate task, all attributes and nested +elements of that task are supported, the property and value attributes +are redundant and will be ignored.

+ +

os

+

Test whether the current operating system is of a given type. Each +defined attribute is tested and the result is true only if all +the tests succeed. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescriptionRequired
familyThe name of the operating system family to expect.No
nameThe name of the operating system to expect.No
archThe architecture of the operating system to expect.No
versionThe version of the operating system to expect.No
+

Supported values for the family attribute are: +

    +
  • windows (for all versions of Microsoft Windows)
  • +
  • dos (for all Microsoft DOS based operating systems including + Microsoft Windows and OS/2)
  • +
  • mac (for all Apple Macintosh systems)
  • +
  • unix (for all Unix and Unix-like operating systems)
  • +
  • netware (for Novell NetWare)
  • +
  • os/2 (for OS/2)
  • +
+ +

equals

+

Tests whether the two given Strings are identical

+ + + + + + + + + + + + + + + + +
AttributeDescriptionRequired
arg1First string to test.Yes
arg2Second string to test.Yes
+ +

isset

+

Test whether a given property has been set in this project.

+ + + + + + + + + + + +
AttributeDescriptionRequired
propertyThe name of the property to test.Yes
+ +

checksum

+

This condition is identical to the Checksum +task, all attributes and nested elements of that task are supported, +the property and overwrite attributes are redundant and will be +ignored.

+ +

http

+

The http condition checks for a valid response from a +web server of the specified url.

+ + + + + + + + + + + +
AttributeDescriptionRequired
urlThe full URL of the page to request. The web server must + return a status code of <500..Yes.
+ +

socket

+

The socket condition checks for the existence of a +TCP/IP listener at the specified host and port.

+ + + + + + + + + + + + + + + + +
AttributeDescriptionRequired
serverThe DNS name or IP address of the server.Yes.
portThe port number to connect to.Yes.
+ +
+

Copyright © 2001 Apache Software +Foundation. All rights Reserved.

+ + + \ No newline at end of file diff --git a/docs/manual/CoreTasks/waitfor.html b/docs/manual/CoreTasks/waitfor.html new file mode 100644 index 000000000..0b42d8767 --- /dev/null +++ b/docs/manual/CoreTasks/waitfor.html @@ -0,0 +1,79 @@ + + + + +Apache Ant User Manual + + + + +

Waitfor

+

Description

+

Blocks execution until a set of specified conditions become true. This is intended + to be used with the parallel task to + synchronize a set of processes.

+

The conditions to wait for are defined in nested elements, if multiple conditions + are specified, then the task will wait until all conditions are true..

+

+

The time attributes (maxwait and checkevery) are specified in milliseconds + unless the values are followed by one of the following suffixes: "ms", + "s", "m", "h" which cause the value to be interpreted + as milliseconds, seconds, minutes or hours.

+

Parameters

+ + + + + + + + + + + + + + + + +
AttributeDescriptionRequired
maxwaitThe maximum amount of time to wait for all the required conditions + to become true before failing the task. Defaults to 5 minutes.No
checkeveryThe amount of time to wait between each test of the conditions. + Defaults to 200mS.No
+

Nested Elements

+ +

The available conditions that satisfy the +<waitfor> task are the same as those for the +<condition> task. See +here for the full list.

+ +

Examples

+
+

<waitfor maxwait="30s">
+     <available file="errors.log"/>
+ </waitfor>

+
+

waits up to 30 seconds for a file called errors.log to appear.

+
+

<waitfor maxwait="3m" checkevery="500ms">
+     <http url="http://localhost/myapp/index.html"/>
+ </waitfor>

+
+

waits up to 3 minutes (and checks every 500mS) for a web server on localhost + to serve up the specified URL.

+
+

<waitfor maxwait="10s">
+     <and>
+         <socket server="dbserver" port="1521"/>
+         <http url="http://webserver/mypage.html"/>
+     </and>
+ </waitfor>

+
+

waits up to 10 seconds for a server on the dbserver machine to begin listening + on port 1521 and for the http://webserver/mypage.html web page + to become available.

+

Copyright © 2000,2001 Apache Software Foundation. All rights +Reserved.

+ + + + diff --git a/docs/manual/coretasklist.html b/docs/manual/coretasklist.html index 31e4e5be2..666094c81 100644 --- a/docs/manual/coretasklist.html +++ b/docs/manual/coretasklist.html @@ -81,6 +81,8 @@ Unwar
Unzip
Uptodate
+Waitfor
+Waitfor
War
Zip
diff --git a/src/main/org/apache/tools/ant/taskdefs/WaitFor.java b/src/main/org/apache/tools/ant/taskdefs/WaitFor.java new file mode 100644 index 000000000..7dc71f607 --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/WaitFor.java @@ -0,0 +1,174 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 1999 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Ant", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ + +package org.apache.tools.ant.taskdefs; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.taskdefs.condition.ConditionBase; +import org.apache.tools.ant.taskdefs.condition.Condition; + +import java.io.File; +import java.io.IOException; +import java.net.*; +import java.util.Vector; + +/** + * Wait for an external event to occur. + * + * Wait for an external process to start or to complete some + * task. This is useful with the parallel task to + * syncronize the execution of tests with server startup. + * + * The following attributes can be specified on a waitfor task: + *
    + *
  • maxwait - maximum length of time to wait before giving up
  • + *
  • checkevery - amount of time to sleep between each check
  • + *
+ * + * The time value can include a suffix of "ms", "s", "m", "h" to + * indicate that the value is in milliseconds, seconds, minutes or + * hours. The default is milliseconds. + * + * @author Denis Hennessy + */ + +public class WaitFor extends ConditionBase { + private long maxWaitMillis = 1000 * 60 * 3; // default max wait time + private long checkEveryMillis = 500; + + /** + * Set the maximum length of time to wait + */ + public void setMaxWait(String time) { + maxWaitMillis = parseTime(time); + } + + /** + * Set the time between each check + */ + public void setCheckEvery(String time) { + checkEveryMillis = parseTime(time); + } + + /** + * Check repeatedly for the specified conditions until they become + * true or the timeout expires. + */ + public void execute() throws BuildException { + if (countConditions() > 1) { + throw new BuildException("You must not nest more than one condition into "); + } + if (countConditions() < 1) { + throw new BuildException("You must nest a condition into "); + } + Condition c = (Condition) getConditions().nextElement(); + + long start = System.currentTimeMillis(); + long end = start + maxWaitMillis; + + while (System.currentTimeMillis() < end) { + if (c.eval()) { + return; + } + try { + Thread.sleep(checkEveryMillis); + } catch (InterruptedException e) { + } + } + + throw new BuildException("Task did not complete in time"); + } + + /** + * Parse a time in the format nnnnnxx where xx is a common time + * multiplier suffix. + */ + protected long parseTime(String value) { + int i = 0; + for (i = 0; i < value.length(); i++) { + char ch = value.charAt(i); + if (ch < '0' || ch > '9') { + break; + } + } + if (i == 0) { + throw new NumberFormatException(); + } + String digits = value.substring(0, i); + return Long.parseLong(digits) * getMultiplier(value.substring(i)); + } + + /** + * Look for and decipher a multiplier suffix in the string. + * @param value - a string with a series of digits followed by the + * scale suffix. + */ + protected long getMultiplier(String value) { + String lowercaseValue = value.toLowerCase(); + if (lowercaseValue.startsWith("ms")) { + return 1; + } + if (lowercaseValue.startsWith("s")) { + return 1000; + } + if (lowercaseValue.startsWith("m")) { + return 1000 * 60; + } + if (lowercaseValue.startsWith("h")) { + return 1000 * 60 * 60; + } + return 1; + } +} diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java b/src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java index 2c61f8a80..090b51150 100644 --- a/src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java +++ b/src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java @@ -154,6 +154,20 @@ public abstract class ConditionBase extends ProjectComponent { */ public void addIsSet(IsSet i) {conditions.addElement(i);} + /** + * Add an <http> condition. + * + * @since 1.7 + */ + public void addHttp(Http h) {conditions.addElement(h);} + + /** + * Add a <socket> condition. + * + * @since 1.7 + */ + public void addSocket(Socket s) {conditions.addElement(s);} + /** * Inner class that configures those conditions with a project * instance that need it. diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/Http.java b/src/main/org/apache/tools/ant/taskdefs/condition/Http.java new file mode 100644 index 000000000..6254dfa22 --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/condition/Http.java @@ -0,0 +1,107 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Ant", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ + +package org.apache.tools.ant.taskdefs.condition; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.ProjectComponent; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.HttpURLConnection; +import java.net.URLConnection; +import java.net.URL; + +/** + * Condition to wait for a HTTP request to succeed. Its attribute(s) are: + * url - the URL of the request. + * + * @author Denis Hennessy + */ +public class Http extends ProjectComponent implements Condition { + String spec = null; + + public void setUrl(String url) { + spec = url; + } + + public boolean eval() throws BuildException { + if (spec == null) { + throw new BuildException("No url specified in HTTP task"); + } + log("Checking for " + spec, Project.MSG_VERBOSE); + try { + URL url = new URL(spec); + try { + URLConnection conn = url.openConnection(); + if (conn instanceof HttpURLConnection) { + HttpURLConnection http = (HttpURLConnection) conn; + int code = http.getResponseCode(); + log("Result code for " + spec + " was " + code, Project.MSG_VERBOSE); + if (code > 0 && code < 500) { + return true; + } else { + return false; + } + } + } catch (java.io.IOException e) { + return false; + } + } catch (MalformedURLException e) { + throw new BuildException("Badly formed URL: " + spec, e); + } + return true; + } +} diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/Socket.java b/src/main/org/apache/tools/ant/taskdefs/condition/Socket.java new file mode 100644 index 000000000..4f4caffd5 --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/condition/Socket.java @@ -0,0 +1,98 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Ant", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ + +package org.apache.tools.ant.taskdefs.condition; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.ProjectComponent; + +import java.io.IOException; + +/** + * Condition to wait for a TCP/IP socket to have a listener. Its attribute(s) are: + * server - the name of the server. + * port - the port number of the socket. + * + * @author Denis Hennessy + */ +public class Socket extends ProjectComponent implements Condition { + String server = null; + int port = 0; + + public void setServer(String server) { + this.server = server; + } + + public void setPort(int port) { + this.port = port; + } + + public boolean eval() throws BuildException { + if (server == null) { + throw new BuildException("No server specified in Socket task"); + } + if (port == 0) { + throw new BuildException("No port specified in Socket task"); + } + log("Checking for listener at " + server + ":" + port, Project.MSG_VERBOSE); + try { + java.net.Socket socket = new java.net.Socket(server, port); + } catch (IOException e) { + return false; + } + return true; + } + +} diff --git a/src/main/org/apache/tools/ant/taskdefs/defaults.properties b/src/main/org/apache/tools/ant/taskdefs/defaults.properties index 1617d9ea6..be6a46374 100644 --- a/src/main/org/apache/tools/ant/taskdefs/defaults.properties +++ b/src/main/org/apache/tools/ant/taskdefs/defaults.properties @@ -56,6 +56,7 @@ dependset=org.apache.tools.ant.taskdefs.DependSet bzip2=org.apache.tools.ant.taskdefs.BZip2 bunzip2=org.apache.tools.ant.taskdefs.BUnzip2 checksum=org.apache.tools.ant.taskdefs.Checksum +waitfor=org.apache.tools.ant.taskdefs.WaitFor # optional tasks script=org.apache.tools.ant.taskdefs.optional.Script