Update ant script to use new launcher. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274793 13f79535-47bb-0310-9956-ffa450edef68master
@@ -101,16 +101,15 @@ public class Launcher { | |||||
String antHomeProperty = System.getProperty(ANTHOME_PROPERTY); | String antHomeProperty = System.getProperty(ANTHOME_PROPERTY); | ||||
File antHome = null; | File antHome = null; | ||||
URL launchJarURL = Locator.getClassLocationURL(getClass()); | |||||
File jarDir = new File(launchJarURL.getFile()).getParentFile(); | |||||
File sourceJar = Locator.getClassSource(getClass()); | |||||
File jarDir = sourceJar.getParentFile(); | |||||
if (antHomeProperty != null) { | if (antHomeProperty != null) { | ||||
antHome = new File(antHomeProperty); | antHome = new File(antHomeProperty); | ||||
} | } | ||||
if (antHome == null || !antHome.exists()) { | if (antHome == null || !antHome.exists()) { | ||||
URL antHomeURL = new URL(launchJarURL, ".."); | |||||
antHome = new File(antHomeURL.getFile()); | |||||
antHome = jarDir.getParentFile(); | |||||
System.setProperty(ANTHOME_PROPERTY, antHome.getAbsolutePath()); | System.setProperty(ANTHOME_PROPERTY, antHome.getAbsolutePath()); | ||||
} | } | ||||
@@ -58,6 +58,8 @@ import java.net.MalformedURLException; | |||||
import java.net.URL; | import java.net.URL; | ||||
import java.io.File; | import java.io.File; | ||||
import java.io.FilenameFilter; | import java.io.FilenameFilter; | ||||
import java.text.CharacterIterator; | |||||
import java.text.StringCharacterIterator; | |||||
/** | /** | ||||
* The Locator is a utility class which is used to find certain items | * The Locator is a utility class which is used to find certain items | ||||
@@ -67,48 +69,101 @@ import java.io.FilenameFilter; | |||||
* @since Ant 1.6 | * @since Ant 1.6 | ||||
*/ | */ | ||||
public class Locator { | public class Locator { | ||||
/** | /** | ||||
* Get the URL for the given class's load location. | |||||
* Find the directory or jar file the class has been loaded from. | |||||
* | |||||
* @return null if we cannot determine the location. | |||||
* | * | ||||
* @param theClass the class whose load URL is desired. | |||||
* @return a URL which identifies the component from which this class | |||||
* was loaded. | |||||
* @throws MalformedURLException if the class' URL cannot be | |||||
* constructed. | |||||
* @since Ant 1.6 | |||||
*/ | */ | ||||
public static URL getClassLocationURL(Class theClass) | |||||
throws MalformedURLException { | |||||
String className = theClass.getName().replace('.', '/') + ".class"; | |||||
URL classRawURL = theClass.getClassLoader().getResource(className); | |||||
String fileComponent = classRawURL.getFile(); | |||||
if (classRawURL.getProtocol().equals("file")) { | |||||
// Class comes from a directory of class files rather than | |||||
// from a jar. | |||||
int classFileIndex = fileComponent.lastIndexOf(className); | |||||
if (classFileIndex != -1) { | |||||
fileComponent = fileComponent.substring(0, classFileIndex); | |||||
} | |||||
public static File getClassSource(Class c) { | |||||
String classResource = c.getName().replace('.', '/') + ".class"; | |||||
return getResourceSource(c.getClassLoader(), classResource); | |||||
} | |||||
/** | |||||
* Find the directory or a give resource has been loaded from. | |||||
* | |||||
* @return null if we cannot determine the location. | |||||
* | |||||
* @since Ant 1.6 | |||||
*/ | |||||
public static File getResourceSource(ClassLoader c, String resource) { | |||||
if (c == null) { | |||||
c = Locator.class.getClassLoader(); | |||||
} | |||||
return new URL("file:" + fileComponent); | |||||
} else if (classRawURL.getProtocol().equals("jar")) { | |||||
// Class is coming from a jar. The file component of the URL | |||||
// is actually the URL of the jar file | |||||
int classSeparatorIndex = fileComponent.lastIndexOf("!"); | |||||
if (classSeparatorIndex != -1) { | |||||
fileComponent = fileComponent.substring(0, classSeparatorIndex); | |||||
URL url = c.getResource(resource); | |||||
if (url != null) { | |||||
String u = url.toString(); | |||||
if (u.startsWith("jar:file:")) { | |||||
int pling = u.indexOf("!"); | |||||
String jarName = u.substring(4, pling); | |||||
return new File(fromURI(jarName)); | |||||
} else if (u.startsWith("file:")) { | |||||
int tail = u.indexOf(resource); | |||||
String dirName = u.substring(0, tail); | |||||
return new File(fromURI(dirName)); | |||||
} | } | ||||
} | |||||
return null; | |||||
} | |||||
return new URL(fileComponent); | |||||
/** | |||||
* Constructs a file path from a <code>file:</code> URI. | |||||
* | |||||
* <p>Will be an absolute path if the given URI is absolute.</p> | |||||
* | |||||
* <p>Swallows '%' that are not followed by two characters, | |||||
* doesn't deal with non-ASCII characters.</p> | |||||
* | |||||
* @param uri the URI designating a file in the local filesystem. | |||||
* @return the local file system path for the file. | |||||
* @since Ant 1.6 | |||||
*/ | |||||
public static String fromURI(String uri) { | |||||
if (!uri.startsWith("file:")) { | |||||
throw new IllegalArgumentException("Can only handle file: URIs"); | |||||
} | |||||
if (uri.startsWith("file://")) { | |||||
uri = uri.substring(7); | |||||
} else { | } else { | ||||
// its running out of something besides a jar. | |||||
// We just return the Raw URL as a best guess | |||||
return classRawURL; | |||||
uri = uri.substring(5); | |||||
} | |||||
uri = uri.replace('/', File.separatorChar); | |||||
if (File.pathSeparatorChar == ';' && uri.startsWith("\\") && uri.length() > 2 | |||||
&& Character.isLetter(uri.charAt(1)) && uri.charAt(2) == ':') { | |||||
uri = uri.substring(1); | |||||
} | } | ||||
StringBuffer sb = new StringBuffer(); | |||||
CharacterIterator iter = new StringCharacterIterator(uri); | |||||
for (char c = iter.first(); c != CharacterIterator.DONE; | |||||
c = iter.next()) { | |||||
if (c == '%') { | |||||
char c1 = iter.next(); | |||||
if (c1 != CharacterIterator.DONE) { | |||||
int i1 = Character.digit(c1, 16); | |||||
char c2 = iter.next(); | |||||
if (c2 != CharacterIterator.DONE) { | |||||
int i2 = Character.digit(c2, 16); | |||||
sb.append((char) ((i1 << 4) + i2)); | |||||
} | |||||
} | |||||
} else { | |||||
sb.append(c); | |||||
} | |||||
} | |||||
String path = sb.toString(); | |||||
return path; | |||||
} | } | ||||
/** | /** | ||||
* Get the URL necessary to load the Sun compiler tools. If the classes | |||||
* Get the File necessary to load the Sun compiler tools. If the classes | |||||
* are available to this class, then no additional URL is required and | * are available to this class, then no additional URL is required and | ||||
* null is returned. This may be because the classes are explcitly in the | * null is returned. This may be because the classes are explcitly in the | ||||
* class path or provided by the JVM directly | * class path or provided by the JVM directly | ||||
@@ -196,7 +251,7 @@ public class Locator { | |||||
urls = new URL[1]; | urls = new URL[1]; | ||||
String path = location.getPath(); | String path = location.getPath(); | ||||
for (int i = 0; i < extensions.length; ++i) { | for (int i = 0; i < extensions.length; ++i) { | ||||
if (path.endsWith(extensions[i])) { | |||||
if (path.toLowerCase().endsWith(extensions[i])) { | |||||
urls[0] = location.toURL(); | urls[0] = location.toURL(); | ||||
break; | break; | ||||
} | } | ||||
@@ -208,7 +263,7 @@ public class Locator { | |||||
new FilenameFilter() { | new FilenameFilter() { | ||||
public boolean accept(File dir, String name) { | public boolean accept(File dir, String name) { | ||||
for (int i = 0; i < extensions.length; ++i) { | for (int i = 0; i < extensions.length; ++i) { | ||||
if (name.endsWith(extensions[i])) { | |||||
if (name.toLowerCase().endsWith(extensions[i])) { | |||||
return true; | return true; | ||||
} | } | ||||
} | } | ||||
@@ -83,6 +83,7 @@ import org.apache.tools.ant.filters.util.ChainReaderHelper; | |||||
import org.apache.tools.ant.filters.TokenFilter; | import org.apache.tools.ant.filters.TokenFilter; | ||||
import org.apache.tools.ant.taskdefs.condition.Os; | import org.apache.tools.ant.taskdefs.condition.Os; | ||||
import org.apache.tools.ant.types.FilterSetCollection; | import org.apache.tools.ant.types.FilterSetCollection; | ||||
import org.apache.tools.ant.launch.Locator; | |||||
/** | /** | ||||
* This class also encapsulates methods which allow Files to be | * This class also encapsulates methods which allow Files to be | ||||
@@ -1258,41 +1259,8 @@ public class FileUtils { | |||||
* @since Ant 1.6 | * @since Ant 1.6 | ||||
*/ | */ | ||||
public String fromURI(String uri) { | public String fromURI(String uri) { | ||||
if (!uri.startsWith("file:")) { | |||||
throw new IllegalArgumentException("Can only handle file: URIs"); | |||||
} | |||||
if (uri.startsWith("file://")) { | |||||
uri = uri.substring(7); | |||||
} else { | |||||
uri = uri.substring(5); | |||||
} | |||||
uri = uri.replace('/', File.separatorChar); | |||||
if (Os.isFamily("dos") && uri.startsWith("\\") && uri.length() > 2 | |||||
&& Character.isLetter(uri.charAt(1)) && uri.charAt(2) == ':') { | |||||
uri = uri.substring(1); | |||||
} | |||||
StringBuffer sb = new StringBuffer(); | |||||
CharacterIterator iter = new StringCharacterIterator(uri); | |||||
for (char c = iter.first(); c != CharacterIterator.DONE; | |||||
c = iter.next()) { | |||||
if (c == '%') { | |||||
char c1 = iter.next(); | |||||
if (c1 != CharacterIterator.DONE) { | |||||
int i1 = Character.digit(c1, 16); | |||||
char c2 = iter.next(); | |||||
if (c2 != CharacterIterator.DONE) { | |||||
int i2 = Character.digit(c2, 16); | |||||
sb.append((char) ((i1 << 4) + i2)); | |||||
} | |||||
} | |||||
} else { | |||||
sb.append(c); | |||||
} | |||||
} | |||||
String path = Locator.fromURI(uri); | |||||
String path = sb.toString(); | |||||
// catch exception if normalize thinks this is not an absolute path | // catch exception if normalize thinks this is not an absolute path | ||||
try { | try { | ||||
path = normalize(path).getAbsolutePath(); | path = normalize(path).getAbsolutePath(); | ||||
@@ -58,6 +58,7 @@ import java.lang.reflect.InvocationTargetException; | |||||
import java.lang.reflect.Method; | import java.lang.reflect.Method; | ||||
import java.net.URL; | import java.net.URL; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.launch.Locator; | |||||
/** | /** | ||||
* ClassLoader utility methods | * ClassLoader utility methods | ||||
@@ -147,6 +148,26 @@ public class LoaderUtils { | |||||
setContextClassLoader != null; | setContextClassLoader != null; | ||||
} | } | ||||
/** | |||||
* Normalize a source location | |||||
* | |||||
* @param source the source location to be normalized. | |||||
* | |||||
* @return the normalized source location. | |||||
*/ | |||||
private static File normalizeSource(File source) { | |||||
if (source != null) { | |||||
FileUtils fileUtils = FileUtils.newFileUtils(); | |||||
try { | |||||
source = fileUtils.normalize(source.getAbsolutePath()); | |||||
} catch (BuildException e) { | |||||
// relative path | |||||
} | |||||
} | |||||
return source; | |||||
} | |||||
/** | /** | ||||
* Find the directory or jar file the class has been loaded from. | * Find the directory or jar file the class has been loaded from. | ||||
* | * | ||||
@@ -155,8 +176,7 @@ public class LoaderUtils { | |||||
* @since Ant 1.6 | * @since Ant 1.6 | ||||
*/ | */ | ||||
public static File getClassSource(Class c) { | public static File getClassSource(Class c) { | ||||
String classFile = c.getName().replace('.', '/') + ".class"; | |||||
return getResourceSource(c.getClassLoader(), classFile); | |||||
return normalizeSource(Locator.getClassSource(c)); | |||||
} | } | ||||
/** | /** | ||||
@@ -167,47 +187,10 @@ public class LoaderUtils { | |||||
* @since Ant 1.6 | * @since Ant 1.6 | ||||
*/ | */ | ||||
public static File getResourceSource(ClassLoader c, String resource) { | public static File getResourceSource(ClassLoader c, String resource) { | ||||
FileUtils fileUtils = FileUtils.newFileUtils(); | |||||
if (c == null) { | if (c == null) { | ||||
c = LoaderUtils.class.getClassLoader(); | c = LoaderUtils.class.getClassLoader(); | ||||
} | } | ||||
URL url = c.getResource(resource); | |||||
if (url != null) { | |||||
String u = url.toString(); | |||||
if (u.startsWith("jar:file:")) { | |||||
int pling = u.indexOf("!"); | |||||
String jarName = u.substring(4, pling); | |||||
return new File(fileUtils.fromURI(jarName)); | |||||
} else if (u.startsWith("file:")) { | |||||
int tail = u.indexOf(resource); | |||||
String dirName = u.substring(0, tail); | |||||
return new File(fileUtils.fromURI(dirName)); | |||||
} | |||||
} | |||||
return null; | |||||
return normalizeSource(Locator.getResourceSource(c, resource)); | |||||
} | } | ||||
// if we want to drop JDK 1.1, here is code that does something similar | |||||
// - stolen from Diagnostics, stolen from Axis, stolen from somewhere else | |||||
// | |||||
// try { | |||||
// java.net.URL url = clazz.getProtectionDomain().getCodeSource().getLocation(); | |||||
// String location = url.toString(); | |||||
// if (location.startsWith("jar")) { | |||||
// url = ((java.net.JarURLConnection) url.openConnection()).getJarFileURL(); | |||||
// location = url.toString(); | |||||
// } | |||||
// | |||||
// if (location.startsWith("file")) { | |||||
// java.io.File file = new java.io.File(url.getFile()); | |||||
// return file.getAbsolutePath(); | |||||
// } else { | |||||
// return url.toString(); | |||||
// } | |||||
// } catch (Throwable t) { | |||||
// } | |||||
// return null; | |||||
} | } | ||||
@@ -4,7 +4,7 @@ | |||||
# reserved. | # reserved. | ||||
# load system-wide ant configuration | # load system-wide ant configuration | ||||
if [ -f "/etc/ant.conf" ] ; then | |||||
if [ -f "/etc/ant.conf" ] ; then | |||||
. /etc/ant.conf | . /etc/ant.conf | ||||
fi | fi | ||||
@@ -12,12 +12,13 @@ fi | |||||
if [ -z "$rpm_mode" ] ; then | if [ -z "$rpm_mode" ] ; then | ||||
rpm_mode=false; | rpm_mode=false; | ||||
fi | fi | ||||
if [ -z "$usejikes" ] ; then | if [ -z "$usejikes" ] ; then | ||||
usejikes=false; | usejikes=false; | ||||
fi | fi | ||||
# load user ant configuration | # load user ant configuration | ||||
if [ -f "$HOME/.antrc" ] ; then | |||||
if [ -f "$HOME/.antrc" ] ; then | |||||
. "$HOME/.antrc" | . "$HOME/.antrc" | ||||
fi | fi | ||||
@@ -28,18 +29,18 @@ case "`uname`" in | |||||
CYGWIN*) cygwin=true ;; | CYGWIN*) cygwin=true ;; | ||||
Darwin*) darwin=true | Darwin*) darwin=true | ||||
if [ -z "$JAVA_HOME" ] ; then | if [ -z "$JAVA_HOME" ] ; then | ||||
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home | |||||
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home | |||||
fi | fi | ||||
;; | ;; | ||||
esac | esac | ||||
if [ -z "$ANT_HOME" ] ; then | if [ -z "$ANT_HOME" ] ; then | ||||
# try to find ANT | # try to find ANT | ||||
if [ -d /opt/ant ] ; then | |||||
if [ -d /opt/ant ] ; then | |||||
ANT_HOME=/opt/ant | ANT_HOME=/opt/ant | ||||
fi | fi | ||||
if [ -d "${HOME}/opt/ant" ] ; then | |||||
if [ -d "${HOME}/opt/ant" ] ; then | |||||
ANT_HOME="${HOME}/opt/ant" | ANT_HOME="${HOME}/opt/ant" | ||||
fi | fi | ||||
@@ -52,17 +53,16 @@ if [ -z "$ANT_HOME" ] ; then | |||||
ls=`ls -ld "$PRG"` | ls=`ls -ld "$PRG"` | ||||
link=`expr "$ls" : '.*-> \(.*\)$'` | link=`expr "$ls" : '.*-> \(.*\)$'` | ||||
if expr "$link" : '/.*' > /dev/null; then | if expr "$link" : '/.*' > /dev/null; then | ||||
PRG="$link" | |||||
PRG="$link" | |||||
else | else | ||||
PRG=`dirname "$PRG"`"/$link" | |||||
PRG=`dirname "$PRG"`"/$link" | |||||
fi | fi | ||||
done | done | ||||
ANT_HOME=`dirname "$PRG"`/.. | ANT_HOME=`dirname "$PRG"`/.. | ||||
# make it fully qualified | # make it fully qualified | ||||
ANT_HOME=`cd "$ANT_HOME" && pwd` | ANT_HOME=`cd "$ANT_HOME" && pwd` | ||||
fi | fi | ||||
# For Cygwin, ensure paths are in UNIX format before anything is touched | # For Cygwin, ensure paths are in UNIX format before anything is touched | ||||
@@ -78,9 +78,9 @@ fi | |||||
# set ANT_LIB location | # set ANT_LIB location | ||||
ANT_LIB="${ANT_HOME}/lib" | ANT_LIB="${ANT_HOME}/lib" | ||||
if [ -z "$JAVACMD" ] ; then | |||||
if [ -z "$JAVACMD" ] ; then | |||||
if [ -n "$JAVA_HOME" ] ; then | if [ -n "$JAVA_HOME" ] ; then | ||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | |||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | |||||
# IBM's JDK on AIX uses strange locations for the executables | # IBM's JDK on AIX uses strange locations for the executables | ||||
JAVACMD="$JAVA_HOME/jre/sh/java" | JAVACMD="$JAVA_HOME/jre/sh/java" | ||||
else | else | ||||
@@ -88,12 +88,12 @@ if [ -z "$JAVACMD" ] ; then | |||||
fi | fi | ||||
else | else | ||||
JAVACMD=`which java 2> /dev/null ` | JAVACMD=`which java 2> /dev/null ` | ||||
if [ -z "$JAVACMD" ] ; then | |||||
if [ -z "$JAVACMD" ] ; then | |||||
JAVACMD=java | JAVACMD=java | ||||
fi | fi | ||||
fi | fi | ||||
fi | fi | ||||
if [ ! -x "$JAVACMD" ] ; then | if [ ! -x "$JAVACMD" ] ; then | ||||
echo "Error: JAVA_HOME is not defined correctly." | echo "Error: JAVA_HOME is not defined correctly." | ||||
echo " We cannot execute $JAVACMD" | echo " We cannot execute $JAVACMD" | ||||
@@ -104,10 +104,10 @@ if [ -n "$CLASSPATH" ] ; then | |||||
LOCALCLASSPATH="$CLASSPATH" | LOCALCLASSPATH="$CLASSPATH" | ||||
fi | fi | ||||
# in rpm_mode get ant/optional/xml parser&api from JAVALIBDIR | |||||
# in rpm_mode get ant/optional/xml parser&api from JAVALIBDIR | |||||
if $rpm_mode; then | if $rpm_mode; then | ||||
JAVALIBDIR=/usr/share/java | JAVALIBDIR=/usr/share/java | ||||
for i in ant ant-optional jaxp_parser xml_apis | |||||
for i in ant ant-optional jaxp_parser xml_apis | |||||
do | do | ||||
if [ -z "$LOCALCLASSPATH" ] ; then | if [ -z "$LOCALCLASSPATH" ] ; then | ||||
LOCALCLASSPATH="$JAVALIBDIR/$i.jar" | LOCALCLASSPATH="$JAVALIBDIR/$i.jar" | ||||
@@ -120,29 +120,14 @@ if $rpm_mode; then | |||||
ANT_LIB="${JAVALIBDIR}/ant" | ANT_LIB="${JAVALIBDIR}/ant" | ||||
fi | fi | ||||
# add in the dependency .jar files in non-RPM mode (the default) | |||||
for i in "${ANT_LIB}"/*.jar | |||||
do | |||||
# if the directory is empty, then it will return the input string | |||||
# this is stupid, so case for it | |||||
if [ -f "$i" ] ; then | |||||
if [ -z "$LOCALCLASSPATH" ] ; then | |||||
LOCALCLASSPATH="$i" | |||||
else | |||||
LOCALCLASSPATH="$i:$LOCALCLASSPATH" | |||||
fi | |||||
fi | |||||
done | |||||
if [ -n "$JAVA_HOME" ] ; then | |||||
if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then | |||||
LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar" | |||||
fi | |||||
if [ -z "$LOCALCLASSPATH" ] ; then | |||||
LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar | |||||
else | |||||
LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH | |||||
fi | |||||
if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then | |||||
LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip" | |||||
fi | |||||
if [ -n "$JAVA_HOME" ] ; then | |||||
# OSX hack to make Ant work with jikes | # OSX hack to make Ant work with jikes | ||||
if $darwin ; then | if $darwin ; then | ||||
OSXHACK="${JAVA_HOME}/../Classes" | OSXHACK="${JAVA_HOME}/../Classes" | ||||
@@ -176,15 +161,14 @@ fi | |||||
if [ -n "$CYGHOME" ]; then | if [ -n "$CYGHOME" ]; then | ||||
if [ -n "$JIKESPATH" ]; then | if [ -n "$JIKESPATH" ]; then | ||||
JIKESPATH=`cygpath --path --windows "$JIKESPATH"` | |||||
exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.Main $ANT_ARGS "$@" | |||||
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 "$@" | |||||
else | else | ||||
exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.Main $ANT_ARGS "$@" | |||||
exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@" | |||||
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.Main $ANT_ARGS "$@" | |||||
exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@" | |||||
else | else | ||||
exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" org.apache.tools.ant.Main $ANT_ARGS "$@" | |||||
exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@" | |||||
fi | fi | ||||
fi | fi |