Ant有很多命令行选项。运行下面的命令。
ant -help
将看到可用参数的列表,如清单2-4所示。
清单2-4 执行命令ant -help后的结果
% ant -help
ant [options] [ target [target2 [target3] ...]]
Options:
-help | print this message |
- project help | print project help information |
-version | print the version information and exit |
-diagnostics | print information that might be helpful to diagnose or report problems. |
-quiet, -q | be extra quiet |
- verbose , -v | be extra verbose |
-debug | print debugging information |
-emacs | produce logging information without adornments |
-logfile <file> | use given file for log |
-1 <file> | ‥ |
-logger <classname> | the class which is to perform logging |
-listener <classname> | add an instance of class as a project listener |
-buildfile <file> | use given buildfile |
-file <file> | ‥ |
-f <file> | ‥ |
-D<property>=<value> | use value for given property |
-propertyfile <name> | load all properties from file with -D properties taking precedence |
-inputhandler <class> | the class which will handle input requests |
-find <file> | search for buildfile towards the root of the filesystem and use it |
projecthelp选项可以打印出关于buildfile的 信息 ,包含了主目标和其下级目标。执行了ant -projecthelp后的结果如清单2-5所示。
清单2-5 执行命令ant -projecthelp后的结果
%ant -projecthelp
Buildfile: build.xml
Main targets
test.ant A simple build file to test ant.
Default target: test.ant
正如预料的一样,-version选项将 打印 出当前所使用的Ant的版本号。使用 -quiet选项会减少打印出的调试信息,而使用-verbose选项可以打印出大量的调试信息。
使用-logfile 选项 可 以使Ant输出到一个指定的文件当中,而不是输出到运行Ant的终端的标准输出设备上。这在UNIX系统中进行每日创建的时候是很有用的。- logfile选项还可以和 -listener选项、-logger选项一起使用。-listener选项和 -logger选项为监视和报告创建的结果提供了更多的功能。
和前面提到的一样,使用-buildfile选项可以允许用户指定一个自己的buildfile,而不是使用系统 默认的 build.xml。前面提到的另一个选项-find使得Ant向上搜索目录树以查找buildfile。使用-D选项可以允许用户在命令行中指定属性,这将在后面介绍属性的时候进行深入讨论。
使用Ant初始化文件
运行 Ant时,实际上就是根据不同的操作系统隐式地执行了一个脚本,这个脚本又启动了Java虚拟机来执行Ant的Java代码。可以通过改变从这个脚本传递给Java虚拟机的环境变量来改变Ant的动作。这些环境变量还可以在与操作系统相关联的 文件 中进行设置,并且能够被Ant的隐式脚本调用。当在基于UNIX的操作系统(例如Linux、Solaris、Mac OS X 和Cygwin )上运行Ant的时候,Ant的隐式脚本将在Java虚拟机运行Ant之前 搜索 /.antrc 文件。而当使用Windows操作系统的时候,Ant的隐式脚本将在Java虚拟机运行Ant之前搜索 %HOME%/antrc_pre.bat文件,并且在Ant运行结束后搜索%HOME%/antrc_post.bat文件。
下面来看看buildfile中的环境变量。用户可以通过设定环境变量来改变Ant的行为。环境变量JAVACMD可以被设定为Java虚拟机的绝对路径,如果该变量没有被设定,那么默认的路径是JAVA_HOME/bin/ java (.exe), 这对大多数用户来说是可行的。环境变量ANT_OPTS的作用是包含传递给Java虚拟机的真实参数。所以,任何对JAVA虚拟机来说合法的参数,都能通 过ANT_OPTS环境变量来设定。用户可以执行java-help命令来查看该变量可用的参数,用单引号将多个参数括起来,一同传递给JAVA虚拟机。 举个例子,如果想打印出当前所使用的JAVA虚拟机的版本,并且把栈的最大值设定为500MB,可以像下面这样对Ant初始化文件进行设定。
ANT_OPTS = ‘-showversion –mx 500m ’
在运行了Ant之后,将会出现如下结果。
%ant
java version " 1.4.1 "
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1 -24)
Java HotSpot(TM) Client VM (build 1.4.1 _01-12, mixed mode)
Buildfile: build.xml
test.ant:
[echo] Ant is working properly
BUILD SUCCESSFUL
Total time: 2 seconds
最后,环境变量ANT_ARGS能够设定2.3节讨论过的任何命令行参数。如果在每次使用 Ant的时候都执行同样的命令行参数,那么可以在Ant的初始化文件中设定它,而不必每一次都手工输入。同时,用户还可以编写自己的脚本和批处理文件,这 样在运行Ant的时候就能调用自己需要的命令行参数。例如,设定ANT_ARGS=-find,这样Ant就会像上一节提到的那样自动搜索 buildfile。
因为Ant是Java程序,所以也可以直接运行Ant的类,而不使用Ant内置的隐式脚本。 但这需要进行一些配置。首先,Ant的类(在ant.jar文件中)必须包含在系统变量CLASSPATH中。另外,作为XML解释器的JAR文件也必须 包含在系统变量CLASSPATH中。最后Java 开发工具箱(JDK)需要的所有JAR或ZIP文件都必须包含在系统变量CLASSPATH中。
当用户希望从另外一个Java程序中调用Ant的时候,这种对Ant的直接运行就显得非常有用。通过使用Java解释器来直接运行Ant的类,就可以省去执行Ant内置的隐式脚本的开销,因为执行这个脚本往往需要付出较高的代价(译者注:这里的代价指 消耗 CPU和内存,它影响速度)。同时,这样也利于维护一个独立于应用程序的平台无关性。