ANT学习笔记
Ant是Apache项目组的一个子项目,是一个基于JAVA的自动化脚本引擎,脚本格式为XML。除了做JAVA编译相关任务外,ANT还可以通过插件实现很多应用的调用。
大体的学习思路:
- ANT的一些基本知识和概念
- ANT的安装,解包,设置和使用
- ANT的简单的应用和操作
当项目开发的规模越来越大,越来越繁重时,每次都重新编译,打包,测试,部署等一些操作都变得非常复杂而重复。在Java中的应用是于平台无关的,若用集成得IDE编程开发工具来实现这些操作,虽说容易而省事,但实际上应用时,还是需要像ANT这样的工具来处理这些复杂而重复的工作。ANT本身就是这样的一个流程教本引擎,用于自动化调用程序完成项目的编译,打包,测试,部署等操作。除了基于Java是平台无关外,脚本的格式是基于XML的,易于编写和修改,也是与平台无关的。
每一个ANT脚本(一般都是build.xml文件)中设置了一些任务。这些任务不是散乱无序的,它们之间有一定的依赖关系,并且都是有先后执行的顺序的。比如,在Java的教本中,一般都有这些的任务:init,compile,javadoc,jar,deploy,clean等任务(当然这里的任务的名字,你可以随意而定,只要你能够知道它要执行什么操作和它们的依赖关系),这些任务顾名思义,看到它们的名字也就知道它大概要做什么了。
- init是要执行初始化操作的,也就是说在执行编译,打包等操作之前要对这个环境和所需要的资源进行初始操作。
- compile是用来编译java类的,生成.class文件
- javadoc是用来生成API文档用的
- jar是用来将所写的class文件打包生成.jar文件
- deploy是用来执行部署操作的
- clean是执行一些清除操作的。可有可无
从这里就可以看出,它们之间是有一定的依赖关系的,这里的compile,javadoc,jar都要依赖于初始化的操作的完成,deploy要依赖于compile,jar等操作的完成。这样就可以看出它们之间是有一定关系的。ANT就是根据这些任务之间的相互关联来组织和执行一项又一项的操作。 在ANT中的脚本一般都是用XML文件来完成的(一般都是build.xml),用XML文件层次分明,任务和任务之间的关系也就一目了然了,便于改写操作。一般要用到的元素是project,target这两个(这也是最起码的要求,否则那还叫ant脚本嘛! ),project是作为根元素的,这里的它一般定义于要执行操作的项目名字和目录等属性。target那就是一项又一项的任务了,你可以定义多个。下面会用实例来讲述ANT脚本的编写规则。
ANT的安装,解包,设置和使用
- ANT的安装可以从Apache的网站下载:http://ant.apache.org,目前最新的版本是ANT1.6.2。它一般都是以压缩格式的文件
- ANT的解包,一般你可以将它单独解压到一个ant_home的目录下。用Winrar或Winzip工具来解压
- ANT的设置,(默认你的机子已经安装上了JDK,并且设置了JAVA_HOME等这些纯Java的设置了)这需要根据不同的操作系统来决定你该如何配置,我这里只介绍用Windows系统来设置,其它系统的设置可到Apache Ant的官方网站来查询。一般解压后就要在windows的环境变量中进行设置。这需要在path中设置ant_home,classpath 中设置它的ant.jar包路径,还需要设置一个ANT_HOME的环境变量。我以Windows 2000来举例说明。我将下载后的ant_1.6.2.zip在D:/盘根目录下解压后得到ant_home,也就是D:/ant_1.6.2;在Windows 2000里的"我的电脑"里点击右键,取它的环境变量,来进行设置,你要在它的环境变量里找到Path这一项,添加D:/ant_1.6.2/bin目录,在classpath的这项里,添加D:/ant1.6.2/lib目录,还要新建一个ANT_HOME环境变量,设置它的值为D:/ant_1.6.2。这样就可以打开dos工具,你来ant一下吧,呵呵!
- ANT的使用,这一般需要在你的工程的根目录下写一个build.xml文件,作为ANT执行的脚本,这样整个工程就可以根据你的这个脚本来执行编译,打包,测试,部署等这些烦杂而重复的工作了。
ANT的简单的应用和操作
我在这里举一个实例来简单的介绍一下ANT的使用和脚本的编写,希望对大家有所启迪。
一般用ant来操作,实际上就是写一个ANT脚本,然后用ant命令来执行这个脚本,这样所有在脚本中定义的任务就全部执行了。一般build.xml要放到工程的根目录下,这样就可以从这里来对整个工程来执行全面的操作。我这里的所举的工程目录结构是这样的:源程序(纯java文件)放在src目录下,工程所需的jar包放到lib目录下,build.xml也就是要编写的文件放到工程的根目录下。然后我们来编写一个build.xml文件,为ant执行创造一个脚本吧。build.xml |
<?xml version="1.0" encoding="GB2312"?> <!-- 一个项目,可包含很多任务组(target) --> <property name="Project Name" value="Work Project"/> <!--初始化操作--> <!--编译,生成的类保存在work.location下--> <!--指定缺省任务--> <!--生成JavaDoc文档--> <!--清除任务--> <!--使用说明--> |
上面的脚本非常简单,而且实用。这里我定义了几个任务,也就是我刚才说过的那几个:init,compile,javadoc,jar等这些任务。usage是用来显示你编写的任务说明和任务列表,dist就是deploy,这里只是名字不同了。这里不在赘述了,大体上和上面讲的一样。
在工程的定义里(元素project)有一个default属性,它是用来作为这个工程缺省的任务的,也就是,你需要指定一个缺省的任务来执行,这样ANT才能最起码执行一个任务。这也是在ANT中规定好了的。这个缺省的任务,你可以随意指定一个,但要根据你的工程的需要来设置,这样每次ant时,就直接就可以生成你想要的东西了。
它们的依赖关系,我们可以通过每个任务中的属性标识depends来看到,比如:compile要依赖于init,那么你就需要在compile的任务属性定义中添加上depends这个属性,并且指定它依赖于init,其它任务的依赖关系与此类似,不在赘述。其它的一些属性,都可以从ANT的指南中得到,这里就不在讲述。
参考资料:
- 车东有关ANT的介绍:http://www.chedong.com/tech/ant.html
- ANT官方网站:http://ant.apache.org/
- Ant1.6.2的使用手册(英文):http://ant.apache.org/manual/index.html