diff --git a/src/main/org/apache/tools/ant/types/Commandline.java b/src/main/org/apache/tools/ant/types/Commandline.java
index 312e45867..06afcdfdd 100644
--- a/src/main/org/apache/tools/ant/types/Commandline.java
+++ b/src/main/org/apache/tools/ant/types/Commandline.java
@@ -82,7 +82,7 @@ import java.util.StringTokenizer;
* @author thomas.haas@softwired-inc.com
* @author Stefan Bodewig
*/
-public class Commandline {
+public class Commandline implements Clonable {
private Vector arguments = new Vector();
private String executable = null;
@@ -335,4 +335,11 @@ public class Commandline {
return getCommandline().length;
}
+ public Object clone() {
+ Commandline c = new Commandline();
+ c.setExecutable(executable);
+ c.addArguments(getArguments());
+ return c;
+ }
+
}
diff --git a/src/main/org/apache/tools/ant/types/CommandlineJava.java b/src/main/org/apache/tools/ant/types/CommandlineJava.java
index d5ec108da..6df59af97 100644
--- a/src/main/org/apache/tools/ant/types/CommandlineJava.java
+++ b/src/main/org/apache/tools/ant/types/CommandlineJava.java
@@ -60,7 +60,7 @@ import org.apache.tools.ant.Project;
*
* @author thomas.haas@softwired-inc.com
*/
-public class CommandlineJava {
+public class CommandlineJava implements Cloneable {
private Commandline vmCommand = new Commandline();
private Commandline javaCommand = new Commandline();
@@ -151,4 +151,13 @@ public class CommandlineJava {
public Path getClasspath() {
return classpath;
}
+
+ public Object clone() {
+ CommandlineJava c = new CommandlineJava();
+ c.vmCommand = (Commandline) vmCommand.clone();
+ c.javaCommand = (Commandline) javaCommand.clone();
+ c.classpath = (Path) classpath.clone();
+ c.vmVersion = vmVersion;
+ return c;
+ }
}
diff --git a/src/main/org/apache/tools/ant/types/Path.java b/src/main/org/apache/tools/ant/types/Path.java
index 8bdfd0b23..7ee1452e4 100644
--- a/src/main/org/apache/tools/ant/types/Path.java
+++ b/src/main/org/apache/tools/ant/types/Path.java
@@ -93,7 +93,7 @@ import java.text.StringCharacterIterator;
* @author Stefan Bodewig
*/
-public class Path {
+public class Path implements Cloneable {
private Vector elements;
private Project project;
@@ -309,6 +309,12 @@ public class Path {
return list().length;
}
+ public Object clone() {
+ Path p = new Path(project);
+ p.append(this);
+ return p;
+ }
+
private static String resolveFile(Project project, String relativeName) {
if (project != null) {
return project.resolveFile(relativeName).getAbsolutePath();