一、ant 是什么
ant是一个基于JAVA的自动化脚本引擎,脚本格式为XML。除了做JAVA编译相关任务外,ANT还可以通过插件实现很多应用的调用。
当一个代码项目大了以后,每次重新编译,打包,测试等都会变得非常复杂而且重复,因此c语言中有make脚本来帮助这些工作的批量完成。在Java 中应用是平台无关性的,当然不会用平台相关的make脚本来完成这些批处理任务了,ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些。
每个ant脚本(缺省叫build.xml)中设置了一系列任务(target):比如对于一个一般的项目可能需要有以下任务。
任务1:usage 打印本脚本的帮助信息(缺省)
任务2:clean <-- init 清空初始化环境
任务3:javadoc <-- build <-- init 生成JAVADOC
任务4:jar <-- build <-- init 生成JAR
任务5:all <-- jar + javadoc <-- build <-- init 完成以上所有任务:jar javadoc
而多个任务之间往往又包含了一定了依赖关系:比如把整个应用打包任务(jar)的这个依赖于编译任务(build),而编译任务又依赖于整个环境初始化任务(init)等。
注:我看到很多项目的ant脚本中的命名基本上都是一致的,比如:编译一般叫build或者compile;打包一般叫jar或war;生成文档一般命名为javadoc或javadocs;执行全部任务all。在每个任务的中,ANT会根据配置调用一些外部应用并配以相应参数执行。虽然ANT可调用的外部应用种类非常丰富,但其实最常用的就2,3个:比如javac javadoc jar等。
二、ant 的下载安装与配置
ant 的下载地址:http://jakarta.apache.org/builds
ant 的安装:
1.Windows 下:把下载的包解压到一个目录下就可以了
配置环境变量:ANT_HOME = 你解压的目录 (如C:/ant)
PATH = 解压的目录/bin (如 C:/ant/bin)
测试安装是否成功:开始->运行->cmd->ant -> 回车
若出现:
Buildfile:build.xml does not exits!
Build failed
表明Ant安装成功 .
2.Linux/GNU 下:把包解压放入用户的主目录下
把以下配置加入/etc/profile中:
export ANT_HOME=/home/ant
export JAVA_HOME=/usr/java/j2sdk1.4.1
export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
三、ant 的使用
使用命令行 ant 。
四, build.xml的编写
<?xml version="1.0"? encoding="gbk">
<project name="Learning Hibernate" default="prepare" basedir=".">
<!-- 定义全局变量 -->
<property name="source.root" value="src">
<property name="web-inf.dir" value="WEB-INF" />
<property name="class.root" value="WEB-INF/classes"/>
<property name="lib.dir" value="WEB-INF/lib" />
<path id="project.class.path" >
<pathelement location="${class.root}"/>
<fileset dir="${lib.dir}">
<include name="*.jar">
</fileset>
</path>
<target name="prepare" description="Sets up build structures">
<delete dir="${class.root}">
<mkdir dir="${class.root}">
<copy todir="${class.root}">
<fileset dir="${source.root}">
<include name="**/*.properties"/>
<include name="**/*.hbm.xml"/>
<include name="**/*.xml"/>
<include name="**/*.gif"/>
</fileset>
</copy>
</target>
<target name="compile" depends="prepare" description="Compiles all Java classes ">
<javac srcdir="${source.root}" destdir="${class.root}" debug="on" optimize="off" description="on">
<classpath ref-"project.class.path"/>
</javac>
</target>
<target name="run" description="Run a Hibernate Sample" depends="compile">
<java classname="mypack.BussinessService" fork="true">
<classpath refid="project.class.path"/>
</java>
</target>
</project>
(未完待续)