git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@275404 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -772,7 +772,7 @@ | |||
| </manifest> | |||
| </jar> | |||
| <jar destfile="${build.lib}/nodeps.jar" | |||
| <jar destfile="${build.lib}/ant-nodeps.jar" | |||
| basedir="${build.classes}" | |||
| manifest="${manifest.tmp}"> | |||
| <and> | |||
| @@ -87,6 +87,7 @@ Options: | |||
| -verbose, -v be extra verbose | |||
| -debug print debugging information | |||
| -emacs produce logging information without adornments | |||
| -lib <path> specifies a path to search for jars and classes | |||
| -logfile <file> use given file for log | |||
| -l <file> '' | |||
| -logger <classname> the class which is to perform logging | |||
| @@ -109,6 +110,45 @@ Options: | |||
| <p>For more information about <code>-inputhandler</code> see | |||
| <a href="inputhandler.html">InputHandler</a>. | |||
| <h3><a name="libs">Library Directories</a></h3> | |||
| <p> | |||
| 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. | |||
| </p> | |||
| <p> | |||
| 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 | |||
| </p> | |||
| <ul> | |||
| <li>-lib jars in the order specified by the -lib elements on the command line</li> | |||
| <li>jars from ${user.home}/.ant/lib</li> | |||
| <li>jars from ANT_HOME/lib</li> | |||
| </ul> | |||
| <p> | |||
| Note that the CLASSPATH environment variable is passed to Ant using a -lib | |||
| option. Ant itself is started with a very minimalistic classpath. | |||
| </p> | |||
| <p> | |||
| 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. | |||
| </p> | |||
| <h3>Examples</h3> | |||
| <blockquote> | |||
| <pre>ant</pre> | |||
| @@ -132,6 +172,13 @@ the target called <code>dist</code>.</p> | |||
| the target called <code>dist</code>, setting the <code>build</code> property | |||
| to the value <code>build/classes</code>.</p> | |||
| <blockquote> | |||
| <pre>ant -lib /home/ant/extras</pre> | |||
| </blockquote> | |||
| <p>runs Ant picking up additional task and support jars from the | |||
| /home/ant/extras location | |||
| </p> | |||
| <h3><a name="files">Files</a></h3> | |||
| <p>The Ant wrapper script for Unix will source (read and evaluate) the | |||
| @@ -207,19 +254,35 @@ have some documentation inside.</p> | |||
| <h2><a name="viajava">Running Ant via Java</a></h2> | |||
| <p>If you have installed Ant in the do-it-yourself way, Ant can be started | |||
| with:</p> | |||
| with two entry points:</p> | |||
| <blockquote> | |||
| <pre>java -Dant.home=c:\ant org.apache.tools.ant.Main [options] [target]</pre> | |||
| </blockquote> | |||
| <p>These instructions actually do exactly the same as the <code>ant</code> | |||
| command. The options and target are the same as when running Ant with the <code>ant</code> | |||
| command. This example assumes you have set your classpath to include:</p> | |||
| <blockquote> | |||
| <pre>java -Dant.home=c:\ant org.apache.tools.ant.launch.Launcher [options] [target]</pre> | |||
| </blockquote> | |||
| <p> | |||
| 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: | |||
| </p> | |||
| <ul> | |||
| <li><code>ant.jar</code></li> | |||
| <li><code>ant.jar</code> and <code>ant-launcher.jar</code></li> | |||
| <li>jars/classes for your XML parser</li> | |||
| <li>the JDK's required jar/zip files</li> | |||
| </ul> | |||
| <p> | |||
| 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. | |||
| </p> | |||
| <br> | |||
| <hr> | |||
| <p align="center">Copyright © 2000-2003 Apache Software Foundation. All rights | |||
| @@ -13,6 +13,7 @@ | |||
| <h3>Running Ant</h3> | |||
| <a href="running.html#commandline">Command Line</a><br> | |||
| <a href="running.html#options">Options</a><br> | |||
| <a href="running.html#libs">Library Directories</a><br> | |||
| <a href="running.html#files">Files</a><br> | |||
| <a href="running.html#envvars">Environment Variables</a><br> | |||
| <a href="running.html#cygwin">Cygwin Users</a><br> | |||
| @@ -291,7 +291,8 @@ public class Main implements AntMain { | |||
| /** | |||
| * Process command line arguments. | |||
| * When ant is started from Launcher, the -lib argument does not get passed through to this routine. | |||
| * When ant is started from Launcher, the -lib argument does not get | |||
| * passed through to this routine. | |||
| * | |||
| * @param args the command line arguments. | |||
| * | |||
| @@ -808,6 +809,7 @@ public class Main implements AntMain { | |||
| msg.append(" -verbose, -v be extra verbose" + lSep); | |||
| msg.append(" -debug, -d print debugging information" + lSep); | |||
| msg.append(" -emacs, -e produce logging information without adornments" + lSep); | |||
| msg.append(" -lib <path> specifies a path to search for jars and classes" + lSep); | |||
| msg.append(" -logfile <file> use given file for log" + lSep); | |||
| msg.append(" -l <file> ''" + lSep); | |||
| msg.append(" -logger <classname> the class which is to perform logging" + lSep); | |||
| @@ -0,0 +1,77 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2003 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "Ant" and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.launch; | |||
| import java.io.PrintStream; | |||
| import java.io.PrintWriter; | |||
| /** | |||
| * Signals an error condition during launching | |||
| * | |||
| * @author Conro MacNeill | |||
| * @since Ant 1.6 | |||
| */ | |||
| public class LaunchException extends Exception { | |||
| /** | |||
| * Constructs an exception with the given descriptive message. | |||
| * | |||
| * @param message A description of or information about the exception. | |||
| * Should not be <code>null</code>. | |||
| */ | |||
| public LaunchException(String message) { | |||
| super(message); | |||
| } | |||
| } | |||
| @@ -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]); | |||
| @@ -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 | |||