1.Ant是什么
Apache Ant 是一个基于java的build工具,在理论上,它有点像make,但是没有make的缺陷。
为什么已经有了make,gnumake,make,jam等build工具,还要一种新的build工具呢?因为Ant的原作者无法忍受这些工具在跨平台开发时所带来的限制和不便。类似make的工具本质上都是基于shell的:它们计算依赖关系,然后执行命令。这些命令和你在命令行下执行的命令没有太大的区别。这意味着你能很容易的使用你的操作系统编写程序来扩展该工具;这也意味着你将自己限制在特定的操作系统上,至少是操作系统的类型上,例如Unix。
Makefiles也是很可恶的。任何使用过他们的人都碰到过可恶的tab问题。“我的命令不能执行是否只是因为我的tab前面有一个空格?”Ant的作者说过这句话很多次了。有的工具比如Jam能很好的处理这类问题,但是用户必须使用和记住另外一种新的格式。
Ant就不同了。与基于shell命令的扩展模式不同,Ant用Java的类来扩展。(用户)不必编写shell命令,配置文件是基于XML的,通过调用target树,可以执行各种task。每个task由一个实现特定task interface(接口)的object(对象)来运行。(如果你对Ant一点概念都没有的话,可能看不懂这一节,没有关系,后面会对target,task做详细的介绍。你如果没有太多的时间甚至可以略过这一节,然后再回来浏览一下这里的介绍,那时你就会看懂了。同样,如果你对make之类的工具不熟悉也没关系,下面的介绍根本不会用到make中的概念。)
必须承认,这样做,在构造shell命令时会失去一些特有的表达能力。如`find . -name foo -exec rm {}`,但却给了你跨平台的能力-你可以在任何地方工作。如果你真的需要执行一些shell命令,Ant有一个<exec> task,这个task允许执行特定OS上的命令。
2.安装Ant
2.1获得Ant
二进制版本(Binary Edition)
在Ant的web网页http://ant.apache.org/可以得到Ant最新的稳定的版本的信息。如果你疯狂的技术追求者(living on the edge?),你可以从http://cvs.apache.org/builds/ant/nightly/处下载到最新的版本
源码版本(Source Edition)
如果你更喜欢源码版本,你可以从 http://ant.apache.org/srcdownload.cgi处下载到最新版本的源码。同样的如果你疯狂的技术追求者,你可以通过CVS获得这些正在开发中的代码。在Jakarta网站上有有关访问CVS的详细资料。请checkout(检验)ant模块。阅读Build Ant部分关于如何使用源码构建ant,你也可以在线访问Ant CVS repository。
2.2系统需求
Ant可以使用在多种平台上,包括Linux, 商业Unix(如Solaris和HP-UX),Windows 9X 和 NT, OS/2 Warp, Novell Netware 6 以及 MacOS X。
为了构建和使用Ant,你必须有一个JAXP兼容的XML解析器在你的classpath路径中。
binary 形式的Ant包括最新版的Apache Xerces2 XML解析器。请查阅http://java.sun.com/xml/获得关于JAXP的更加详细的信息。如果你希望使用一个不同的JAXP兼容的XML解析器,你需要把xercesImpl.jar和xml-apis.jar从Ant的lib目录中删除。然后你即可以把你想要用的JAXP兼容的XML解析器放到Ant的lib目录中,也可以把jar路径加入系统的classpath变量中。
对于当前版本的Ant,你需要安装1.2或者更高版本的JDK。
注意:Microsoft(微软) JVM/JDK是不支持的。
注意2:如果只有JRE运行环境而没有JDK,会导致许多task不能执行。
2.3安装Ant
binary 形式的Ant的目录结构组成如下:
ant
+--- bin // 包含了运行脚本
|
+--- lib // 包含了Ant必需的jar文件
|
+--- docs // 包含了文档
| +--- ant2 // ant2需求的简述
| |
| +--- images // html文档用到的logos
| |
| +--- manual // Ant文档
|
+--- etc // 包含了xsl文件:
只有bin目录和lib目录是运行ant所必需的。选择一个目录然后把ant复制到该目录下,即可完成ant的安装,这个目录将由ANT_HOME识别。
Windows 95, Windows 98 & Windows ME 注意:
在这些系统下,如果ANT_HOME有一个很长的文件名(比如 文件名不是被识别的格式"8.3"??),运行ant的脚本可能回产生问题。这是由该操作系统处理“for”批处理文件命令的限制造成的。推荐使用短的文件名,比如c:\Ant。
在这些系统下,你也需要配置更多的环境空间来迎合ant运行脚本的环境变量的使用。为了达到这个目的,你必须在config.sys中增加或修正下面这行:
shell=c:\command.com c:\ /p /e:32768
设置
在你能运行ant之前,还有一些额外的必需的设置
·在path变量中增加bin目录的路径。
·设置ANT_HOME环境变量,值为ant的安装路径。在一些操作系统上,ant封装脚本能推测ANT_HOME(Unix dialects and Windows NT/2000)。但是最好不要依赖这些特性。
·可选择的,设置JAVA_HOME环境变量(查看后面的Advanced部分)。这必须指向JDK的安装目录。
注意:不要把Ant的ant.jar文件放到JDK/JRE的lib/ext目录下。Ant是一个应用程序,而lib/ext目录是为JDK扩展使用的(如JCE,JSSE扩展)。而且通过扩展装入的类会有安全方面的限制。
可选TASK
Ant支持一些可选task,一个可选的task一般需要一个额外的库才能工作。这些可选的task和core Ant tasks打包在一起。
每个可选task所需的外部库可参看依赖库(Library Dependencies)部分。这些外部库可以放到Ant的lib目录下,这样Ant就能自动装入,或者将其放入环境变量中。
Windows and OS/2
假设ant安装在c:\ant\。使用下面的命令设置环境变量。
set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.2.2
set PATH=%PATH%;%ANT_HOME%\bin
Unix (bash)
假设ant安装在/usr/local/ant。使用下面的命令设置环境变量。
export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.2.2
export PATH=${PATH}:${ANT_HOME}/bin
Unix (csh)
假设ant安装在/usr/local/ant。使用下面的命令设置环境变量。
setenv ANT_HOME /usr/local/ant
setenv JAVA_HOME /usr/local/jdk-1.2.2
set path=( $path $ANT_HOME/bin )
高级
运行ant需要用到许多变量,你至少需要下面这些:
·ant的classpath必须包含ant.jar文件和你所选择的JAXP兼容XML解析器的jar/classes文件。
·当你需要JDK的功能时(例如javac task或rmic task),对JDK1.1,JDK的classes.zip文件必须加入classpath中,对于JDK1.2或JDK1.3,tools.jar是必须的。Ant支持脚本,在bin目录中,如果设置了ANT_HOME环境变量,JDK的类会自动加载。
·当你执行特定平台的程序,例如exex task或cvs task,ant.home的属性必须指向Ant的安装目录,同样,Ant所带的脚本利用ANT_HOME环境变量自动设置该属性。
提供的ant shell脚本都支持ANT_OPTS环境变量,这个变量用于提供额外的可供选择的选项。存贮在users home 目录(能用于设置这样的选项)下的一些脚本也被读入。
构建Ant (Building Ant)
你即可以安装source形式的Ant,也可以从CVS上checkout Ant 模块来Building Ant。
安装完源码后,进入安装目录。
设定JAVA_HOME环境变量指向JDK的安装目录。要想知道怎么做请参看安装Ant部分。
确保你已下载了任何辅助jar文件,以便build你所感兴趣的task。这些jar文件可以放在CLASSPATH中,也可以放在lib目录下。参看依赖库部分可知不同的task需要那些jar文件。注意这些jar文件只是用作build Ant之用。要想运行Ant,你还要像安装Ant部分中所做的那样设定这些jar文件。