第十二章学习使用Ant•ApacheAnt是一个基于Java的构建工具,它可以会构建多种项目,但是目前主要被用于Java项目的构建,Ant是用Java语言编写,可以在多个操作系统中运行,目前在绝大部分的Java开源项目中,都选择使用Ant作为构建项目的工具,Ant已经成为Java开源项目构建的事实标准,而且越来越多的开发人员选择了Ant来构建自己的项目,合理的使用Ant可以大大降低项目构建、部署的难度,在本章的内容中,将介绍Ant构建项目的基本用法,利用这里基本的知识,读者可以尝试使用Ant来构建自己的项目,体验Ant给我们带来的方便和高效。12.1Ant简介•对于一般的Java项目来说,构建也就是对这个项目进行编译,Ant就是针对这一系列问题而推出的,Ant不仅可以对Java源文件进行编译,而且还可以执行其他各种项目构建任务。使用Ant,仅仅需要编写一个构建配置文件,Ant会根据这个配置文件执行对应的操作,在这个配置文件中,可以指定构建、部署项目中的各种动作,而且还可以配置各种动作之间的依赖关系,因此,无论是什么类型的Java项目,只要在配置文件中把项目构建的要求说明清楚,就可以使用Ant来对项目进行构建、部署。12.2Ant的安装配置•Ant目前最新的版本是1.7,可以在Ant的官方网站下载,下载下来的文件为apache-ant-1.7.0-bin.zip,Ant无需安装,直接解压然后设置环境变量即可。下面来设置Ant的环境变量。Ant环境变量的设置需要两个步骤,添加ANT_HOME和修改系统的Path变量,(具体内容请参照书。)12.3Ant简单示例――构建HelloWorld工程•在本节中,将对一个HelloWorld工程进行构建,在这个工程中,有一个src文件夹,用来放置工程中的源代码,其中只有一个HelloWorld类的源代码。HelloWorld的代码如下。//--------文件名:HelloWorld.java--------------------publicclassHelloWorld{•publicstaticvoidmain(String[]args){System.out.println(Helloworld!);•}}12.3.1手工构建HelloWorld工程•在没有使用Ant之前,我们先采用手工的方式来构建这个HelloWorld工程,构建工程简单的说就是编译、打包、运行、部署等操作,而对于这个简单的HelloWorld工程来说,就没有部署这个步骤,下面将介绍手工在命令行中编译、运行、打包HelloWorld这个工程。(具体内容请参照书。)12.3.2使用Ant分步构建HelloWorld工程•手工构建工程是相当麻烦的,这就促使我们要寻找一种构建工具,来辅助完成工程构建的任务,在这里我们选择使用Ant,Ant在构建工程的时候,只需要一个简单的脚本,在这个脚本中描述构建任务,Ant就可以根据这个构建描述文件完成构建工程的任务。12.3.3自动构建HelloWorld工程•在上节的示例中,我们使用Ant分步对HelloWrold工程进行构建,在本节的内容中,将使用Ant对HelloWorld这个工程那个进行自动构建。(具体内容请参照书。)12.4Ant构建文件解析•在以上章节的内容中,展示了Ant的使用方法,但是对于Ant脚本的具体内容并没有做详细的解释,在本节的内容中,将详细解释各个配置标签的具体含义和用法,通过本节内容的学习,读者可以掌握最基本的Ant脚本的简单语法。12.4.1Project•在Ant脚本中,Project是这个XML文档的根节点,project节点有以下几个属性。•name属性,这个属性指明构建任务的名称,一般情况下选择要构建的项目名称即可。•default属性,一个项目可以定义多个target。target就是需要Ant执行的动作,执行Ant时,你可以选择执行哪个target。basedir属性,这个属性这个Ant脚本工作的根路径,12.4.2Target•在Ant脚本中,可以把想做的事情用target描述,每个target描述一件事情,target有以下几种常用的属性。12.4.3Properties•在一个Ant脚本中可以有多个属性,这些属性可以用property标签指定,也可以在Ant脚本之外使用properties属性文件描述。在本节中着重介绍使用property标签指定的情况,使用properties属性文件的情况在本书的12.6.1小节中将会详细介绍。(具体内容请参照书。)12.4.4Classpath•在Java程序的开发和部署过程中,经常遇到的问题就是classpath的设置问题,在使用Ant构建工程的时候,不可避免的要涉及到classpath的问题,例如在程序中使用到第三方的类库,那么在使用Ant构建这个工程的时候,必须指明这个第三方类库的classpath,否则工程的编译工作就不能通过。(具体内容请参照书。)12.5Ant中的文件操作•在构建过程中,通常会遇到很多的文件操作,像创建目录、拷贝文件或者目录这种工作是比不可少的,在Ant中,提供了一系列命令类支持文件的操作,从而可以方便的实现工程构建过程中的文件操作需要。在接下来的内容中,将介绍Ant文件操作的基本使用方法。12.5.1创建目录•在Ant中,创建目录可以使用mkdir指令,这个指令可以创建指定的目录,如果这个目录的父目录不存在,会被同时创建。这个指令的使用方法如下。•mkdirdir=build/classes/12.5.2拷贝文件或者目录•在构建部署项目的时候,尤其是部署Web项目的时候,需要把构建得到的文件拷贝到目标位置,例如在Web项目中,需要把构建得到的文件部署在Web服务器下,也就是把构建得到的文件拷贝到Web服务器的指定目录下。在Ant中,可以使用copy命令拷贝文件或者整个目录,copy命令的具体基12.5.3移动文件或者目录•在Ant中,同样可以移动文件或者目录,实现这个功能的命令是move,这个命令的基本用法有以下几种。12.5.4删除文件或者目录•在移除工程或者是重新部署工程的时候,都需要删除以前构建生成的文件,在这种情况下,可以使用Ant提供的删除命令delete来完成这个任务。12.6在Ant中使用属性配置文件•在Ant脚本中,同样可以使用配置文件类,例如连接数据库的配置信息,或者是构建工程过程中用到的一些属性,使用配置文件统一管理这些信息以后,在这些配置信息发生改变的时候,只需修改配置文件即可,而不用修改Ant脚本,是Ant脚本可以重复使用,这样就方便了项目工程的构建。(具体内容请参照书。)12.7在Ant中执行数据库脚本•目前应用的开发过程中,大部分都离不开数据库的支持,在部署这种需要数据库的应用项目的时候,都需要初始话数据库,在一般情况下需要执行一个数据库脚本,用来完成那个建表、初始化数据等工作,在Ant中,同样执行这样的功能,我们可是使用Ant的sql直接执行数据库脚本,从而完成数据库初始化的工作。12.7.1直接执行数据库脚本•在Ant中执行数据库脚本需要使用sql指令,(具体内容请参照书。)12.7.2使用配置文件执行数据库脚本•在上面的示例脚本中,我们直接把数据库的连接信息放在Ant的sql指令中,这样处理以后,如果要更换数据库用户名或者是密码,就需要修改Ant脚本,为了是Ant脚本有更好的通用性,在这里我们使用配置文件提供数据库的连接信息。12.8Ant构建部署Web应用综合示例•在前面的章节中,介绍了Ant构建工程的基本知识,在本节接下来的内容中,将通过一个具体的Web应用(假设这个Web应用的项目名称就是HelloWorld),展示使用Ant构建类似工程的具体操作方法。具体内容包括属性文件的配置、执行数据库初始化脚本、配置数据库连接池、配置classpath、编译部署工程等内容。12.8.1属性配置•在我们要部署的这个Web应用项目中,执行数据库脚本需要数据库连接的信息,还有在生成数据库连接池配置文件的时候,同样需要使用数据库的配置信息,在这种情况下,如果更改数据库配置信息势必要修改Ant脚本,为了提高这个Ant脚本的适应性,在这里选择使用属性配置文件来提供数据库的配置信息,这个配置文件和前面使用的内容是一样的,具体配置信息如下。12.8.2执行数据库初始化脚本•在部署项目之前,初始化数据库是必需要做的一项工作,例如在我们要部署的这个Web项目中,提供了一个数据库脚本,这个数据库脚本文件的名称为initate.sql,这个数据库脚本的内容是创建相关的数据库表格,并且初始化系统的基础数据。12.8.3配置数据库连接池•在我们要部署的这个项目中,需要使用的数据库连接池的功能,而且我们选择在tomcat的conf\Catalina\localhost目录下单独配置数据库连接池的配置信息,12.8.4配置path•如果在项目中使用到了第三方的类,在编译部署工程的时候都需要指明路径,尤其是在部署的时候,需要把指定的第三方类放在固定的文件夹中,这样就需要使用到这些类库的路径信息,下面这段Ant脚本中,就定义了一个id为project.class.path的路径,在后面的脚本中可以根据id来引用这个path的信息。12.8.5编译工程•在前面的准备工作完成以后,就可以对工程进行编译,编译工程的任务就是编译src中的所有java源代码,并把编译得到的所有class文件放在WebRoot\WEB-INF\classes目录下。12.8.6部署工程•在完成了编译工作以后和数据库的初始化工作以后,就可以部署编译过的项目,其中部署项目的target的具体内容如下。12.8.7完整构建脚本文件•这个项目构建Ant脚本的完整内容如下所示。(具体内容请参照书。)12.9在Eclipse中使用Ant•Ant不仅可以在DOS命令行中运行,也可以在一些集成的开发工具中运行,其中在Eclipse中,即内置了Ant的功能,在Eclipse中,提供了Ant脚本的语法高亮显示,而且还可以非常方便的执行Ant脚本,并在控制台显示Ant脚本的运行信息。•在接下来的内容中,将简单介绍在Eclipse中使用Ant的基本方法。12.9.1在Eclipse中编写Ant脚本•如果要在Eclipse中使用Ant,需要打开“Ant视图”,在Eclipse的菜单中选择“Window”|“ShowView”|“Other”可以得到(具体内容请参照书。)12.9.2在Eclipse中运行Ant任务•在Eclipse中运行Ant任务也是非常方便的。在这里仍然以HelloWorld这个工程为例,使用的Ant脚本是12.3.3中自动构建工程的脚本。在Eclipse的文件目录中,右键选择build.xml,在弹出的菜单中选择“OpenWith”|AntEditor,就可以在Eclipse集成的Ant编辑器中打开Ant脚本,同时在右侧的Ant视图中列出了各个target,而且默认执行的target使用蓝色表示,(具体内容请参照书。)12.10小结•在本章的内容中,介绍了Ant的基础知识和在实际项目构建中的用法,通过本章的学习,读者可以使用Ant自己构建应用项目,逐步适应脱离集成开发环境来构建部署自己的项目,虽然在这些开发环境中都会支持项目的构建和部署,但是为了适应不同的运行环境,提高项目部署的效率和速度,熟练使用Ant的功能是必不可少的。