用Ant构建脚本(1)

来源:互联网 发布:网络接入服务商查询 编辑:程序博客网 时间:2024/06/03 09:07

 用Ant构建脚本(1)

首先声明,本文基于Apache Ant官方网站http://ant.apache.org/manual/的《Apache Ant 1.7.0Beta2 Manual》翻译而得。
一、Apache Ant简介
1、Ant是Java开源组织Apache的一个项目,是一个基于Java的build工具。其构建脚本有4个不同的实现:
(1)Sun Microsystems公司的参考实现;
(2)SolarMetric的Kodo实现;
(3)Libelis的Lido实现;
(4)SignSoft的IntelliBO实现。
其实只要实现提供Ant可以使用的命令行工具,就可以实现增加新的脚本。
Ant可以通过其脚本语言,自动将项目文件复制到某个目录、开发项目,或者生成一些代码、执行SQL语言。总之,Ant可以帮助程序员完成项目开发中除了开发代码以外的大部分辅助性的工作。很多IDE工具能自动生成脚本,但总有些缺点,如不能完成用户的自定义的要求。
2、Ant的优点:
(1)语法简单易学,脚本使用XML格式编写;
(2)易于使用,构建过程自动化;
(3)跨平台,Java类路径和目录结构都是以可移植的方式进行处理;
(4)速度快,像编译和打包这样的Java常规工作都可以在Ant的JVM中进行,节省了启动其他JVM所耗费的时间;
(5)集成JUnit,适合进行XP开发模式所提倡的单元测试;
(6)易于使用Java进行功能扩展;
(7)支持J2EE部署;
(8)善于Java项目的部署工作;
(9)已经成为大多数开源项目的标准构建工具;
(10)由于Ant支持测试和部署,因此可以用于“编译-测试-部署”的过程。
3、Ant的安装:两种方式:
(1)用已编译好的binary文件安装Ant;
(2)用源代码自己编译Ant。
要想自己编译Ant,需将一个JAXP兼容的XML解析器(parser)放在CLASSPATH环境变量中。binary形式的Ant包括最新版的Apache Crimson XML解析器。如想使用其他的JAXP兼容的解析器,需要从Ant的lib目录中删掉jaxp.jar以及crimson.jar,然后将自己的解析器的JAR文件放到Ant的lib目录中或放在CLASSPATH环境变量中。
安装有三个步骤:
(1)将下载的binary压缩包解压到所需目录;
(2)将bin目录加入path环境变量;
(3)设定ANT_HOME环境变量,指向Ant目录;
(4)设定JDK的环境变量。
在windows下的安装非常简单,所以本文以在UNIX下安装Ant为例,假定安装在/usr/local/ant目录下,设定环境变量如下:
export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.5.0
export PATH=${PATH}:${ANT_HOME}/bin

4、Ant命令行使用方法:
ant [options] [target1[target2[target3...]]]
其中,options参数和意义:
-help:显示描述antml及其选项的帮助信息;
-projecthelp:显示包含在构建文件种的、所有用户编写的构建文档,也即各个<target>中description属性的文本,以及包含在<description>元素中的任何文本;
-version:显示Ant及其版本信息,然后退出;
-quiet:阻止不是由构建文件中的echo任务所产生的大多数信息;
-verbose:显示构建过程中每个操作的详细信息,此选项与debug选项只能二选其一;
-debug:显示Ant和任务发布人员已经标志为调试信息的信息;
-emacs:对日志消息进行格式化;
-logfile:将日志输出重定向到指定的文件;
-logger:指定一个类来处理Ant的日志记录,所指定的类必须实现org.apache.tools.ant.BuildLogger接口;
-listener:为Ant声明一个监听器,并增加到其监听者列表中;
-buildfile:指定Ant需要处理的构建文件,默认的文件为build.xml;
-find:指定Ant需要处理的构建文件,如果找不到,则到父目录中去搜索,直到系统根目录为止。
5、默认的项目目录
常用的项目目录:
bin:公共的二进制文件,以及运行脚本;
build:临时创建的文件,如类文件等;
dist:目标输出文件,如生成jar文件等;
doc/javadocs:文档;
lib:需要导出的java包;
src:源文件。
6、构建文件
Ant的build文件包含一个根节点project,每个project定义了至少一个或多个target,每个target又是一系列task的集合。
每个task是一段可被执行的代码,学习Ant的过程其实就是掌握这大量的task。