diff --git a/build.xml b/build.xml
index bd6e7866b..7101c5151 100644
--- a/build.xml
+++ b/build.xml
@@ -241,6 +241,7 @@
+
diff --git a/src/main/org/apache/tools/ant/taskdefs/Definer.java b/src/main/org/apache/tools/ant/taskdefs/Definer.java
index 34fbbff9c..3c30ac4d8 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Definer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Definer.java
@@ -462,6 +462,30 @@ public abstract class Definer extends DefBase {
this.resource = res;
}
+ /**
+ * Antlib attribute, sets resource and uri.
+ * uri is set the antlib value and, resource is set
+ * to the antlib.xml resource in the classpath.
+ * For example antlib="antlib:org.acme.bland.cola"
+ * corresponds to uri="antlib:org.acme.bland.cola"
+ * resource="org/acme/bland/cola/antlib.xml".
+ * ASF Bugzilla Bug 31999
+ * @param antlib the value to set.
+ */
+ public void setAntlib(String antlib) {
+ if (definerSet) {
+ tooManyDefinitions();
+ }
+ if (!antlib.startsWith("antlib:")) {
+ throw new BuildException(
+ "Invalid antlib attribute - it must start with antlib:");
+ }
+ setURI(antlib);
+ this.resource = antlib.substring("antlib:".length()).replace('.','/')
+ + "/antlib.xml";
+ definerSet = true;
+ }
+
/**
* Name of the definition
* @param name the name of the definition
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/Script.java b/src/main/org/apache/tools/ant/taskdefs/optional/Script.java
index 94721e064..fccca0b5f 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/Script.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/Script.java
@@ -20,7 +20,7 @@ package org.apache.tools.ant.taskdefs.optional;
import java.io.File;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
-import org.apache.tools.ant.util.ScriptRunner;
+import org.apache.tools.ant.util.optional.ScriptRunner;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Reference;
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java b/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java
index f377d1a34..fc7a6cbf6 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java
@@ -36,7 +36,7 @@ import java.util.HashSet;
import java.io.File;
import org.apache.tools.ant.util.ClasspathUtils;
-import org.apache.tools.ant.util.ScriptRunner;
+import org.apache.tools.ant.util.optional.ScriptRunner;
/**
* Define a task using a script
diff --git a/src/main/org/apache/tools/ant/types/optional/AbstractScriptComponent.java b/src/main/org/apache/tools/ant/types/optional/AbstractScriptComponent.java
index 4a2c13f95..83d0beaf0 100644
--- a/src/main/org/apache/tools/ant/types/optional/AbstractScriptComponent.java
+++ b/src/main/org/apache/tools/ant/types/optional/AbstractScriptComponent.java
@@ -18,7 +18,7 @@
package org.apache.tools.ant.types.optional;
import org.apache.tools.ant.ProjectComponent;
-import org.apache.tools.ant.util.ScriptRunner;
+import org.apache.tools.ant.util.optional.ScriptRunner;
import java.io.File;
diff --git a/src/main/org/apache/tools/ant/types/optional/ScriptFilter.java b/src/main/org/apache/tools/ant/types/optional/ScriptFilter.java
index 0cd86bd78..a0b9ac5cd 100644
--- a/src/main/org/apache/tools/ant/types/optional/ScriptFilter.java
+++ b/src/main/org/apache/tools/ant/types/optional/ScriptFilter.java
@@ -20,7 +20,7 @@ package org.apache.tools.ant.types.optional;
import org.apache.tools.ant.filters.TokenFilter;
import java.io.File;
import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.util.ScriptRunner;
+import org.apache.tools.ant.util.optional.ScriptRunner;
/**
diff --git a/src/main/org/apache/tools/ant/types/optional/ScriptSelector.java b/src/main/org/apache/tools/ant/types/optional/ScriptSelector.java
index 1d282dadf..0a75c4490 100644
--- a/src/main/org/apache/tools/ant/types/optional/ScriptSelector.java
+++ b/src/main/org/apache/tools/ant/types/optional/ScriptSelector.java
@@ -18,7 +18,7 @@
package org.apache.tools.ant.types.optional;
import org.apache.tools.ant.types.selectors.BaseSelector;
-import org.apache.tools.ant.util.ScriptRunner;
+import org.apache.tools.ant.util.optional.ScriptRunner;
import org.apache.tools.ant.BuildException;
import java.io.File;
diff --git a/src/main/org/apache/tools/ant/util/ScriptRunner.java b/src/main/org/apache/tools/ant/util/optional/ScriptRunner.java
similarity index 98%
rename from src/main/org/apache/tools/ant/util/ScriptRunner.java
rename to src/main/org/apache/tools/ant/util/optional/ScriptRunner.java
index 641d33eec..0bae5bbb3 100644
--- a/src/main/org/apache/tools/ant/util/ScriptRunner.java
+++ b/src/main/org/apache/tools/ant/util/optional/ScriptRunner.java
@@ -15,7 +15,7 @@
* limitations under the License.
*
*/
-package org.apache.tools.ant.util;
+package org.apache.tools.ant.util.optional;
import java.io.File;
import java.io.FileInputStream;
@@ -29,6 +29,8 @@ import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.ProjectComponent;
import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.FileUtils;
+
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;