different tasks due to my change to javac and the introduction of ${build.sysclasspath} git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268407 13f79535-47bb-0310-9956-ffa450edef68master
@@ -105,11 +105,13 @@ public class AntClassLoader extends ClassLoader { | |||||
* Create a classloader for the given project using the classpath given. | * Create a classloader for the given project using the classpath given. | ||||
* | * | ||||
* @param project the project to ehich this classloader is to belong. | * @param project the project to ehich this classloader is to belong. | ||||
* @param classpath the classpath to use to load the classes. | |||||
* @param classpath the classpath to use to load the classes. This | |||||
* is combined with the system classpath in a manner | |||||
* determined by the value of ${build.sysclasspath} | |||||
*/ | */ | ||||
public AntClassLoader(Project project, Path classpath) { | public AntClassLoader(Project project, Path classpath) { | ||||
this.project = project; | this.project = project; | ||||
this.classpath = classpath; | |||||
this.classpath = classpath.concatSystemClasspath(); | |||||
// JDK > 1.1 should add these by default, but some VMs don't | // JDK > 1.1 should add these by default, but some VMs don't | ||||
addSystemPackageRoot("java"); | addSystemPackageRoot("java"); | ||||
@@ -420,28 +420,7 @@ public class Javac extends MatchingTask { | |||||
if (compileClasspath == null) { | if (compileClasspath == null) { | ||||
classpath.addExisting(Path.systemClasspath); | classpath.addExisting(Path.systemClasspath); | ||||
} else { | } else { | ||||
String order = project.getProperty("build.sysclasspath"); | |||||
if (order == null) order="first"; | |||||
if (order.equals("only")) { | |||||
// only: the developer knows what (s)he is doing | |||||
classpath.addExisting(Path.systemClasspath); | |||||
} else if (order.equals("last")) { | |||||
// last: don't trust the developer | |||||
classpath.addExisting(compileClasspath); | |||||
classpath.addExisting(Path.systemClasspath); | |||||
} else if (order.equals("ignore")) { | |||||
// ignore: don't trust anyone | |||||
classpath.addExisting(compileClasspath); | |||||
addRuntime = true; | |||||
} else { | |||||
// first: developer could use a little help | |||||
classpath.addExisting(Path.systemClasspath); | |||||
classpath.addExisting(compileClasspath); | |||||
} | |||||
classpath.addExisting(compileClasspath.concatSystemClasspath()); | |||||
} | } | ||||
// optionally add the runtime classes | // optionally add the runtime classes | ||||
@@ -571,6 +571,8 @@ public class Javadoc extends Task { | |||||
// ------------------------------------------------ general javadoc arguments | // ------------------------------------------------ general javadoc arguments | ||||
if (classpath == null) | if (classpath == null) | ||||
classpath = Path.systemClasspath; | classpath = Path.systemClasspath; | ||||
else | |||||
classpath = classpath.concatSystemClasspath(); | |||||
if (!javadoc1) { | if (!javadoc1) { | ||||
toExecute.createArgument().setValue("-classpath"); | toExecute.createArgument().setValue("-classpath"); | ||||
@@ -190,7 +190,7 @@ public class CommandlineJava implements Cloneable { | |||||
} | } | ||||
if (classpath != null && classpath.size() > 0) { | if (classpath != null && classpath.size() > 0) { | ||||
result[pos++] = "-classpath"; | result[pos++] = "-classpath"; | ||||
result[pos++] = classpath.toString(); | |||||
result[pos++] = classpath.concatSystemClasspath().toString(); | |||||
} | } | ||||
System.arraycopy(javaCommand.getCommandline(), 0, | System.arraycopy(javaCommand.getCommandline(), 0, | ||||
result, pos, javaCommand.size()); | result, pos, javaCommand.size()); | ||||
@@ -466,4 +466,38 @@ public class Path extends DataType implements Cloneable { | |||||
} | } | ||||
} | } | ||||
/** | |||||
* Concatenates the system class path in the order specified | |||||
* by the ${build.sysclasspath} property. | |||||
*/ | |||||
public Path concatSystemClasspath() { | |||||
Path result = new Path(project); | |||||
String order = project.getProperty("build.sysclasspath"); | |||||
if (order == null) order="first"; | |||||
if (order.equals("only")) { | |||||
// only: the developer knows what (s)he is doing | |||||
result.addExisting(Path.systemClasspath); | |||||
} else if (order.equals("last")) { | |||||
// last: don't trust the developer | |||||
result.addExisting(this); | |||||
result.addExisting(Path.systemClasspath); | |||||
} else if (order.equals("ignore")) { | |||||
// ignore: don't trust anyone | |||||
result.addExisting(this); | |||||
} else { | |||||
// first: developer could use a little help | |||||
result.addExisting(Path.systemClasspath); | |||||
result.addExisting(this); | |||||
} | |||||
return result; | |||||
} | |||||
} | } |