git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@275330 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -3,7 +3,6 @@ | |||||
| REM Copyright (c) 2000-2002 The Apache Software Foundation. All rights | REM Copyright (c) 2000-2002 The Apache Software Foundation. All rights | ||||
| REM reserved. | REM reserved. | ||||
| set OLDCLASSPATH=%CLASSPATH% | |||||
| set REAL_ANT_HOME=%ANT_HOME% | set REAL_ANT_HOME=%ANT_HOME% | ||||
| set ANT_HOME=bootstrap | set ANT_HOME=bootstrap | ||||
| if exist bootstrap\lib\ant.jar if exist bootstrap\bin\ant.bat if exist bootstrap\bin\lcp.bat if exist bootstrap\bin\antRun.bat goto runAnt | if exist bootstrap\lib\ant.jar if exist bootstrap\bin\ant.bat if exist bootstrap\bin\lcp.bat if exist bootstrap\bin\antRun.bat goto runAnt | ||||
| @@ -13,21 +12,15 @@ echo Bootstrap FAILED | |||||
| goto cleanup | goto cleanup | ||||
| :runAnt | :runAnt | ||||
| set LOCALCLASSPATH= | |||||
| for %%i in (lib\optional\*.jar) do call bootstrap\bin\lcp.bat %%i | |||||
| set CLASSPATH=lib\optional\xalanj1compat.jar;%LOCALCLASSPATH%;%CLASSPATH% | |||||
| set LOCALCLASSPATH= | |||||
| if not "%REAL_ANT_HOME%" == "" goto install_ant | if not "%REAL_ANT_HOME%" == "" goto install_ant | ||||
| call bootstrap\bin\ant.bat -emacs %1 %2 %3 %4 %5 %6 %7 %8 %9 | |||||
| call bootstrap\bin\ant.bat -lib lib/optional %1 %2 %3 %4 %5 %6 %7 %8 %9 | |||||
| goto cleanup | goto cleanup | ||||
| :install_ant | :install_ant | ||||
| call bootstrap\bin\ant.bat -emacs -Dant.install="%REAL_ANT_HOME%" %1 %2 %3 %4 %5 %6 %7 %8 %9 | |||||
| call bootstrap\bin\ant.bat -lib lib/optional -Dant.install="%REAL_ANT_HOME%" %1 %2 %3 %4 %5 %6 %7 %8 %9 | |||||
| rem clean up | rem clean up | ||||
| :cleanup | :cleanup | ||||
| set ANT_HOME=%REAL_ANT_HOME% | set ANT_HOME=%REAL_ANT_HOME% | ||||
| set REAL_ANT_HOME= | set REAL_ANT_HOME= | ||||
| set CLASSPATH=%OLDCLASSPATH% | |||||
| set OLDCLASSPATH= | |||||
| @@ -28,31 +28,6 @@ if test ! -f bootstrap/lib/ant.jar -o ! -x bootstrap/bin/ant -o ! -x bootstrap/ | |||||
| exit | exit | ||||
| fi | 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 [ "$REALANTHOME" != "" ] ; then | ||||
| if $cygwin; then | if $cygwin; then | ||||
| REALANTHOME=`cygpath --path --windows "$REALANTHOME"` | REALANTHOME=`cygpath --path --windows "$REALANTHOME"` | ||||
| @@ -62,5 +37,5 @@ else | |||||
| ANT_INSTALL="-emacs" | ANT_INSTALL="-emacs" | ||||
| fi | fi | ||||
| bootstrap/bin/ant "$ANT_INSTALL" $* | |||||
| bootstrap/bin/ant -lib lib/optional "$ANT_INSTALL" $* | |||||
| @@ -58,6 +58,10 @@ import java.net.URLClassLoader; | |||||
| import java.net.MalformedURLException; | import java.net.MalformedURLException; | ||||
| import java.io.File; | import java.io.File; | ||||
| import java.util.StringTokenizer; | import java.util.StringTokenizer; | ||||
| import java.util.List; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Iterator; | |||||
| /** | /** | ||||
| * This is a launcher for Ant. | * This is a launcher for Ant. | ||||
| @@ -118,43 +122,48 @@ public class Launcher { | |||||
| throw new IllegalStateException("Ant home is set incorrectly or " | throw new IllegalStateException("Ant home is set incorrectly or " | ||||
| + "ant could not be located"); | + "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"); | |||||
| } | |||||
| libPaths.add(args[++i]); | |||||
| } else { | |||||
| argList.add(args[i]); | |||||
| } | } | ||||
| } | } | ||||
| if (args.length > 0 && args[args.length -1].equals("-lib")) { | |||||
| // if the last argument is -lib | |||||
| // remove it from the arguments passed to Launcher | |||||
| // | |||||
| newargs = new String[args.length - 1]; | |||||
| System.arraycopy(args, 0, newargs, 0, args.length -1); | |||||
| } else if (libPath.equals("")) { | |||||
| newargs = new String[args.length]; | |||||
| System.arraycopy(args, 0, newargs, 0, args.length); | |||||
| } 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)); | |||||
| } | |||||
| if (libPaths.size() == 0) { | |||||
| newArgs = args; | |||||
| } else { | |||||
| newArgs = (String[]) argList.toArray(new String[0]); | |||||
| } | } | ||||
| StringTokenizer myTokenizer = new StringTokenizer(libPath, System.getProperty("path.separator")); | |||||
| URL[] classPathJars = new URL[myTokenizer.countTokens()]; | |||||
| int classPathJarCount = 0; | |||||
| while (myTokenizer.hasMoreElements()) { | |||||
| String token = myTokenizer.nextToken(); | |||||
| classPathJars[classPathJarCount++] = new File(token).toURL(); | |||||
| 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()) { | |||||
| 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 | // Now try and find JAVA_HOME | ||||
| File toolsJar = Locator.getToolsJar(); | File toolsJar = Locator.getToolsJar(); | ||||
| @@ -166,14 +175,14 @@ public class Launcher { | |||||
| URL[] userJars = Locator.getLocationURLs(userLibDir); | URL[] userJars = Locator.getLocationURLs(userLibDir); | ||||
| int numJars = classPathJars.length + userJars.length + systemJars.length; | |||||
| int numJars = libJars.length + userJars.length + systemJars.length; | |||||
| if (toolsJar != null) { | if (toolsJar != null) { | ||||
| numJars++; | numJars++; | ||||
| } | } | ||||
| URL[] jars = new URL[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); | systemJars.length); | ||||
| if (toolsJar != null) { | if (toolsJar != null) { | ||||
| @@ -184,6 +193,10 @@ public class Launcher { | |||||
| // now update the class.path property | // now update the class.path property | ||||
| StringBuffer baseClassPath | StringBuffer baseClassPath | ||||
| = new StringBuffer(System.getProperty("java.class.path")); | = new StringBuffer(System.getProperty("java.class.path")); | ||||
| if (baseClassPath.charAt(baseClassPath.length() - 1) | |||||
| == File.pathSeparatorChar) { | |||||
| baseClassPath.setLength(baseClassPath.length() - 1); | |||||
| } | |||||
| for (int i = 0; i < jars.length; ++i) { | for (int i = 0; i < jars.length; ++i) { | ||||
| baseClassPath.append(File.pathSeparatorChar); | baseClassPath.append(File.pathSeparatorChar); | ||||
| @@ -197,7 +210,7 @@ public class Launcher { | |||||
| try { | try { | ||||
| Class mainClass = loader.loadClass(MAIN_CLASS); | Class mainClass = loader.loadClass(MAIN_CLASS); | ||||
| AntMain main = (AntMain) mainClass.newInstance(); | AntMain main = (AntMain) mainClass.newInstance(); | ||||
| main.startAnt(newargs, null, null); | |||||
| main.startAnt(newArgs, null, null); | |||||
| } catch (Throwable t) { | } catch (Throwable t) { | ||||
| t.printStackTrace(); | t.printStackTrace(); | ||||
| } | } | ||||
| @@ -71,8 +71,6 @@ if $cygwin ; then | |||||
| ANT_HOME=`cygpath --unix "$ANT_HOME"` | ANT_HOME=`cygpath --unix "$ANT_HOME"` | ||||
| [ -n "$JAVA_HOME" ] && | [ -n "$JAVA_HOME" ] && | ||||
| JAVA_HOME=`cygpath --unix "$JAVA_HOME"` | JAVA_HOME=`cygpath --unix "$JAVA_HOME"` | ||||
| [ -n "$CLASSPATH" ] && | |||||
| CLASSPATH=`cygpath --path --unix "$CLASSPATH"` | |||||
| fi | fi | ||||
| # set ANT_LIB location | # set ANT_LIB location | ||||
| @@ -145,21 +143,20 @@ fi | |||||
| if $cygwin; then | if $cygwin; then | ||||
| ANT_HOME=`cygpath --windows "$ANT_HOME"` | ANT_HOME=`cygpath --windows "$ANT_HOME"` | ||||
| JAVA_HOME=`cygpath --windows "$JAVA_HOME"` | JAVA_HOME=`cygpath --windows "$JAVA_HOME"` | ||||
| CLASSPATH=`cygpath --path --windows "$CLASSPATH"` | |||||
| LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"` | LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"` | ||||
| CYGHOME=`cygpath --windows "$HOME"` | CYGHOME=`cygpath --windows "$HOME"` | ||||
| fi | fi | ||||
| if [ -n "$CYGHOME" ]; then | if [ -n "$CYGHOME" ]; then | ||||
| if [ -n "$JIKESPATH" ]; 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 | 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 | fi | ||||
| else | else | ||||
| if [ -n "$JIKESPATH" ]; then | 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 | 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 | ||||
| fi | fi | ||||
| @@ -54,7 +54,6 @@ goto end | |||||
| :checkJava | :checkJava | ||||
| set _JAVACMD=%JAVACMD% | set _JAVACMD=%JAVACMD% | ||||
| set LOCALCLASSPATH=%ANT_HOME%\lib\ant-launcher.jar | |||||
| if "%JAVA_HOME%" == "" goto noJavaHome | if "%JAVA_HOME%" == "" goto noJavaHome | ||||
| if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome | if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome | ||||
| @@ -69,24 +68,23 @@ if not "%JIKESPATH%"=="" goto runAntWithJikes | |||||
| :runAnt | :runAnt | ||||
| if not "%CLASSPATH%"=="" goto runAntWithClasspath | if not "%CLASSPATH%"=="" goto runAntWithClasspath | ||||
| "%_JAVACMD%" %ANT_OPTS% -classpath "%LOCALCLASSPATH%" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS% | |||||
| "%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS% | |||||
| goto end | goto end | ||||
| :runAntWithClasspath | :runAntWithClasspath | ||||
| "%_JAVACMD%" %ANT_OPTS% -classpath "%LOCALCLASSPATH%" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS% -lib "%CLASSPATH%" | |||||
| "%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -lib "%CLASSPATH%" %ANT_CMD_LINE_ARGS% | |||||
| goto end | goto end | ||||
| :runAntWithJikes | :runAntWithJikes | ||||
| if not "%CLASSPATH%"=="" goto runAntWithJikesAndClasspath | if not "%CLASSPATH%"=="" goto runAntWithJikesAndClasspath | ||||
| "%_JAVACMD%" %ANT_OPTS% -classpath "%LOCALCLASSPATH%" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS% | |||||
| "%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS% | |||||
| goto end | goto end | ||||
| :runAntWithJikesAndClasspath | :runAntWithJikesAndClasspath | ||||
| "%_JAVACMD%" %ANT_OPTS% -classpath "%LOCALCLASSPATH%" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS% -lib "%CLASSPATH%" | |||||
| "%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -lib "%CLASSPATH%" %ANT_CMD_LINE_ARGS% | |||||
| goto end | goto end | ||||
| :end | :end | ||||
| set LOCALCLASSPATH= | |||||
| set _JAVACMD= | set _JAVACMD= | ||||
| set ANT_CMD_LINE_ARGS= | set ANT_CMD_LINE_ARGS= | ||||