diff --git a/build.xml b/build.xml
index 866c472f2..1b6faee37 100644
--- a/build.xml
+++ b/build.xml
@@ -772,7 +772,7 @@
- For more information about
+Prior to Ant 1.6, all jars in the ANT_HOME/lib would be added to the CLASSPATH
+used to run Ant. This was done in the scripts that started Ant. From Ant 1.6,
+two directories are scanned by default and more can be added as required. The
+default directories scanned are ANT_HOME/lib and a user specific directory,
+${user.home}/.ant/lib. This arrangement allows the Ant installation to be
+shared by many users while still allowing each user to deploy additional jars.
+Such additional jars could be support jars for Ant's optional tasks or jars
+containing third-party tasks to be used in the build. It also allows the main Ant
+installation to be locked down which will please system adminstrators.
+
+Additional directories to be searched may be added by using the -lib option.
+The -lib option specifies a search path. Any jars or classes in the directories
+of the path will be added to Ant's classloader. The order in which jars are
+added to the classpath is as follows
+
+Note that the CLASSPATH environment variable is passed to Ant using a -lib
+option. Ant itself is started with a very minimalistic classpath.
+
+The location of ${user.home}/.ant/lib is somewhat dependent on the JVM. On Unix
+systems ${user.home} maps to the user's home directory whilst on recent
+versions of Windows it will be somewhere such as
+C:\Documents and Settings\username\.ant\lib. You should consult your
+JVM documentation for more details.
+-inputhandler
see
InputHandler.
+Library Directories
+
+
+
+Examples
ant
@@ -132,6 +172,13 @@ the target called dist
.
dist
, setting the build
property
to the value build/classes
.
+++ant -lib /home/ant/extras+
runs Ant picking up additional task and support jars from the +/home/ant/extras location +
+The Ant wrapper script for Unix will source (read and evaluate) the @@ -207,19 +254,35 @@ have some documentation inside.
If you have installed Ant in the do-it-yourself way, Ant can be started -with:
+with two entry points:-java -Dant.home=c:\ant org.apache.tools.ant.Main [options] [target]
These instructions actually do exactly the same as the ant
-command. The options and target are the same as when running Ant with the ant
-command. This example assumes you have set your classpath to include:
++ +java -Dant.home=c:\ant org.apache.tools.ant.launch.Launcher [options] [target]+
+The first method runs Ant's traditional entry point. The second method uses +the Ant Launcher introduced in Ant 1.6. The former method does not support +the -lib option and all required classes are loaded from the CLASSPATH. You must +ensure that all required jars are available. At a minimum the CLASSPATH should +include: +
+ant.jar
ant.jar
and ant-launcher.jar
+The latter method supports the -lib option and will load jars from the +specified ANT_HOME. You should start the latter with the most minimal +classpath possible, generally just the ant-launcher.jar. +
+Copyright © 2000-2003 Apache Software Foundation. All rights diff --git a/docs/manual/runninglist.html b/docs/manual/runninglist.html index 587aad9fd..8e973e7e8 100644 --- a/docs/manual/runninglist.html +++ b/docs/manual/runninglist.html @@ -13,6 +13,7 @@
null
.
+ */
+ public LaunchException(String message) {
+ super(message);
+ }
+
+}
diff --git a/src/main/org/apache/tools/ant/launch/Launcher.java b/src/main/org/apache/tools/ant/launch/Launcher.java
index af8bf1dcf..b23fe1d8d 100644
--- a/src/main/org/apache/tools/ant/launch/Launcher.java
+++ b/src/main/org/apache/tools/ant/launch/Launcher.java
@@ -88,6 +88,8 @@ public class Launcher {
try {
Launcher launcher = new Launcher();
launcher.run(args);
+ } catch (LaunchException e) {
+ System.err.println(e.getMessage());
} catch (Throwable t) {
t.printStackTrace();
}
@@ -102,7 +104,7 @@ public class Launcher {
* @exception MalformedURLException if the URLs required for the classloader
* cannot be created.
*/
- private void run(String[] args) throws MalformedURLException {
+ private void run(String[] args) throws LaunchException, MalformedURLException {
String antHomeProperty = System.getProperty(ANTHOME_PROPERTY);
File antHome = null;
@@ -119,7 +121,7 @@ public class Launcher {
}
if (!antHome.exists()) {
- throw new IllegalStateException("Ant home is set incorrectly or "
+ throw new LaunchException("Ant home is set incorrectly or "
+ "ant could not be located");
}
@@ -130,7 +132,7 @@ public class Launcher {
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 "
+ throw new LaunchException("The -lib argument must "
+ "be followed by a library location");
}
libPaths.add(args[++i]);
diff --git a/src/script/ant b/src/script/ant
index f32a356b2..38407ec55 100644
--- a/src/script/ant
+++ b/src/script/ant
@@ -34,7 +34,7 @@ case "`uname`" in
;;
esac
-if [ -z "$ANT_HOME" ] ; then
+if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then
# try to find ANT
if [ -d /opt/ant ] ; then
ANT_HOME=/opt/ant