conor 2003/09/23 08:40:36
Modified: . Tag: ANT_16_BRANCH build.sh
src/main/org/apache/tools/ant/launch Tag: ANT_16_BRANCH
Launcher.java
src/script Tag: ANT_16_BRANCH ant
Log:
Add support for multiple -lib options. Also allow -lib to specify
a directory of jars rather than just the directory itself. Update
build.sh to use this. Unix only for now. Windows later.
Revision Changes Path
No revision
No revision
1.35.2.1 +1 -26 ant/build.sh
Index: build.sh
===================================================================
RCS file: /home/cvs/ant/build.sh,v
retrieving revision 1.35
retrieving revision 1.35.2.1
diff -u -w -u -r1.35 -r1.35.2.1
--- build.sh 11 Aug 2003 13:18:19 -0000 1.35
+++ build.sh 23 Sep 2003 15:40:36 -0000 1.35.2.1
@@ -28,31 +28,6 @@
exit
fi
-LOCALCLASSPATH=
-# add in the dependency .jar files
-DIRLIBS=lib/optional/*.jar
-for i in ${DIRLIBS}
-do
- if [ "$i" != "${DIRLIBS}" ] ; then
- LOCALCLASSPATH=$LOCALCLASSPATH:"$i"
- fi
-done
-
-# make sure the classpath is in unix format
-if $cygwin ; then
- CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-CLASSPATH=$LOCALCLASSPATH:$CLASSPATH
-
-# switch back to Windows format
-if $cygwin ; then
- CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-fi
-
-export CLASSPATH
-
-
if [ "$REALANTHOME" != "" ] ; then
if $cygwin; then
REALANTHOME=`cygpath --path --windows "$REALANTHOME"`
@@ -62,5 +37,5 @@
ANT_INSTALL="-emacs"
fi
-bootstrap/bin/ant "$ANT_INSTALL" $*
+bootstrap/bin/ant -lib lib/optional "$ANT_INSTALL" $*
No revision
No revision
1.5.2.2 +45 -30 ant/src/main/org/apache/tools/ant/launch/Launcher.java
Index: Launcher.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/launch/Launcher.java,v
retrieving revision 1.5.2.1
retrieving revision 1.5.2.2
diff -u -w -u -r1.5.2.1 -r1.5.2.2
--- Launcher.java 22 Sep 2003 21:15:41 -0000 1.5.2.1
+++ Launcher.java 23 Sep 2003 15:40:36 -0000 1.5.2.2
@@ -58,6 +58,10 @@
import java.net.MalformedURLException;
import java.io.File;
import java.util.StringTokenizer;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+
/**
* This is a launcher for Ant.
@@ -118,37 +122,48 @@
throw new IllegalStateException("Ant home is set incorrectly or "
+ "ant could not be located");
}
- String libPath = "";
- String[] newargs = null;
- int argcount = -1;
- for (argcount = 0; argcount < args.length -1; argcount++) {
- if (args[argcount].equals("-lib")) {
- libPath = args[argcount + 1];
- break;
- }
+
+ List libPaths = new ArrayList();
+ List argList = new ArrayList();
+ String[] newArgs;
+
+ for (int i = 0; i < args.length; ++i) {
+ if (args[i].equals("-lib")) {
+ if (i == args.length - 1) {
+ throw new IllegalStateException("The -lib argument must "
+ + "be followed by a library location");
}
- if (libPath.equals("")) {
- newargs = new String[args.length];
- System.arraycopy(args, 0, newargs, 0, args.length);
+ libPaths.add(args[++i]);
} else {
- newargs = new String[args.length - 2];
- // copy the beginning of the args array
- if (argcount > 0 ) {
- System.arraycopy(args, 0, newargs, 0 ,argcount);
- }
- // copy the end of the args array
- if ((argcount + 2 < args.length) && argcount > 0) {
- System.arraycopy(args, argcount + 2, newargs, argcount,
args.length - (argcount + 2));
+ argList.add(args[i]);
}
}
- StringTokenizer myTokenizer = new StringTokenizer(libPath,
System.getProperty("path.separator"));
- URL[] classPathJars = new URL[myTokenizer.countTokens()];
- int classPathJarCount = 0;
+
+ if (libPaths.size() == 0) {
+ newArgs = args;
+ } else {
+ newArgs = (String[]) argList.toArray(new String[0]);
+ }
+
+ List libPathURLs = new ArrayList();
+ for (Iterator i = libPaths.iterator(); i.hasNext();) {
+ String libPath = (String) i.next();
+ StringTokenizer myTokenizer
+ = new StringTokenizer(libPath,
System.getProperty("path.separator"));
while (myTokenizer.hasMoreElements()) {
- String token = myTokenizer.nextToken();
- classPathJars[classPathJarCount++] = new File(token).toURL();
+ File element = new File(myTokenizer.nextToken());
+ if (element.isDirectory()) {
+ // add any jars in the directory
+ URL[] dirURLs = Locator.getLocationURLs(element);
+ for (int j = 0; j < dirURLs.length; ++j) {
+ libPathURLs.add(dirURLs[j]);
+ }
+ }
+ libPathURLs.add(element.toURL());
+ }
}
+ URL[] libJars = (URL[])libPathURLs.toArray(new URL[0]);
// Now try and find JAVA_HOME
File toolsJar = Locator.getToolsJar();
@@ -160,14 +175,14 @@
URL[] userJars = Locator.getLocationURLs(userLibDir);
- int numJars = classPathJars.length + userJars.length +
systemJars.length;
+ int numJars = libJars.length + userJars.length + systemJars.length;
if (toolsJar != null) {
numJars++;
}
URL[] jars = new URL[numJars];
- System.arraycopy(classPathJars, 0, jars, 0, classPathJars.length);
- System.arraycopy(userJars, 0, jars, classPathJars.length,
userJars.length);
- System.arraycopy(systemJars, 0, jars, userJars.length +
classPathJars.length,
+ System.arraycopy(libJars, 0, jars, 0, libJars.length);
+ System.arraycopy(userJars, 0, jars, libJars.length, userJars.length);
+ System.arraycopy(systemJars, 0, jars, userJars.length +
libJars.length,
systemJars.length);
if (toolsJar != null) {
@@ -191,7 +206,7 @@
try {
Class mainClass = loader.loadClass(MAIN_CLASS);
AntMain main = (AntMain) mainClass.newInstance();
- main.startAnt(newargs, null, null);
+ main.startAnt(newArgs, null, null);
} catch (Throwable t) {
t.printStackTrace();
}
No revision
No revision
1.38.2.2 +4 -7 ant/src/script/ant
Index: ant
===================================================================
RCS file: /home/cvs/ant/src/script/ant,v
retrieving revision 1.38.2.1
retrieving revision 1.38.2.2
diff -u -w -u -r1.38.2.1 -r1.38.2.2
--- ant 22 Sep 2003 21:15:41 -0000 1.38.2.1
+++ ant 23 Sep 2003 15:40:36 -0000 1.38.2.2
@@ -71,8 +71,6 @@
ANT_HOME=`cygpath --unix "$ANT_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# set ANT_LIB location
@@ -145,21 +143,20 @@
if $cygwin; then
ANT_HOME=`cygpath --windows "$ANT_HOME"`
JAVA_HOME=`cygpath --windows "$JAVA_HOME"`
- CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"`
CYGHOME=`cygpath --windows "$HOME"`
fi
if [ -n "$CYGHOME" ]; then
if [ -n "$JIKESPATH" ]; then
- exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH"
-Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH"
-Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.launch.Launcher $ANT_ARGS
"$@" -lib "$CLASSPATH"
+ exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH"
-Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH"
-Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.launch.Launcher $ANT_ARGS
-lib "$CLASSPATH" "$@"
else
- exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH"
-Dant.home="${ANT_HOME}" -Dcygwin.user.home="$CYGHOME"
org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@" -lib "$CLASSPATH"
+ exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH"
-Dant.home="${ANT_HOME}" -Dcygwin.user.home="$CYGHOME"
org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib "$CLASSPATH" "$@"
fi
else
if [ -n "$JIKESPATH" ]; then
- exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH"
-Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH"
org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@" -lib "$CLASSPATH"
+ exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH"
-Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH"
org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib "$CLASSPATH" "$@"
else
- exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH"
-Dant.home="${ANT_HOME}" org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@"
-lib "$CLASSPATH"
+ exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH"
-Dant.home="${ANT_HOME}" org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib
"$CLASSPATH" "$@"
fi
fi
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]