去年在项目启动阶段就一直想在团队中推广TDD,但是由于团队人员配置方面的问题一直未能成功,再加上其它琐碎的事情,这件事情也就一直拖了下来。年后进入SIT阶段,前期开发时团队成员写了很多的Junit测试单元,于是想使用自动化来测试这些测试单元并生成当日测试报告。为了满足上述需求,只需要在项目中
添加Ant即可。
Step 1 : Ant 安装与配置
下载地址: http://ant.apache.org/
解压下载安装包至D:\Java,并添加环境变量ANT_HOME=D:\Java\Ant。
进入CMD,输入ant -version,显示出Ant 版本信息即表示安装成功。
打开Eclipse—>Preferences—>Ant—> Runtime,修改Ant_Home至安装目录。
Step 2 : 构思
在使用Ant之前,需要构思一下我们需要编写的脚本流程,下图为本项目大致流程:
如上图所示,项目在三个环境中(dev,sit,uat),每个环境中的配置都不相同,需要更改的配置文件也有很多,那么,如何才能有效又简捷的进行工程发布呢?
此处,整理出两种解决方案:
1. 针对每种环境创建一个与之相对应的build.xml,如build-dev.xml,build-sit.xml,build-uit.xml。每种环境都有自己相对应的Ant脚本。
此方法太繁琐,build-xxx.xml太多,不利于维护。
2. 使用一个build.xml,运用Ant中的<FILTERSET>,<TOKEN>标签与build-xxx.properties文件相结合。每种环境都有一个与之相对应的properties文件。
此方法个人认为最利于维护,针对每种环境只需要简单的修改一下build.xml中引用的build-xxx.properties即可。
后面我们将使用第二种解决方案来构建Ant脚本。
Step 3 : 创建build.properties
在工程之中创建与三种环境相对应的build-dev.properties,build-sit.properties,build-uat.properties。

buidl-dev.properteis#Mainfest相关信息(以下参数勿改)
build.encoding=UTF-8
build.project.name=batch
build.user.name=Alex
build.main.class=#此处填写入口类
#FTP相关信息
ftp.server=127.0.0.1
ftp.port=21
ftp.userid=db2admin
ftp.password=db2admin
# jar上传至
ftp.remotedir=/batch/lib/
# shell脚本上传至
ftp.command.remotedir=/batch/bin/
#DB相关信息
db.driverClassName=com.ibm.db2.jcc.DB2Driver
db.url=jdbc:db2://127.0.0.1:55000/AntDemo
db.username=db2admin
db.password=db2admin
#Sokcet 相关信息
socket.host=127.0.0.1
socket.port=15000
复制buld-dev.properties为build-sit.properties,build-uat.properties,并修改对应的FTP,DB,Socket相对信息。
Step 4: 创建build.xml
在工程下新建build.xml,根据开发环境中的流程,需要在build.xml中新建如下任务:init—>compile—> test –>report –> mail。
在定义任务之前,需要导入build-xxx.properties文件以及定义相关属性。

property<property name="env" value="dev"/>
<property file="${basedir}/deploy/build-${env}.properties"/>
<property name="src.dir" value="${basedir}/src/main/java"/>
<property name="src.config.dir" value="${basedir}/src/main/resources"/>
<property name="lib.dir" value="${basedir}/lib"/>
<property name="class.dir" value="${basedir}/bin"/>
<property name="dist.dir" value="${basedir}/dist"/>
<property name="jar.name" value="${build.project.name}.jar"/>
<property name="shell.dir" value="${basedir}/sbin"/>
<!-- 设置classPath -->
<path id="lib.class.path">
<fileset dir="${lib.dir}" id="lib.fileset">
<include name="*.jar" />
</fileset>
</path>
<!-- 设置配置文件 -->
<fileset id="resource.path" dir="${src.config.dir}">
<include name="**/*"/>
<exclude name="*.MF"/>
</fileset>
<fileset id="mapping.path" dir="${src.dir}" >
<include name="classMapping/*"/>
</fileset>
<!-- 设置脚本文件 -->
<fileset id="shell.path" dir="${shell.dir}">
<include name="start.sh"/>
<include name="stop.sh"/>
<include name="pause.sh"/>
<include name="resume.sh"/>
</fileset>
如上所示,针对不同的环境,只需要修改env的值即可。
接下来,即可定义对应的Target。
结束语:
项目前期没有使用Ant来做这些实在是太过于失策,进入SIT后,更显得捉襟见肘,每每在WINDOWS下修复BUG后需要发布至AIX下,只能先在本地手工生成jar文件或war文件,然后FTP至服务器再通知测试人员进行测试,花费了大量时间。我是一个比较懒的人,特别不喜欢每天都做着重复的事情,Ant的运用让我从这些琐事中彻底解脱了出来。