(1) Ant 用途
Ant的作用还是很大的,如楼上说到的它可以用来做编译、部署、打包、测试等等工作,虽然现在的IDE环境已经集成了很多这样的功能,但是通常情况下我们还是会很频繁的使用到Ant,一般有这样一些原则:
1.如果你发现你的工作有有许多是每天要做的,或者是经常要反复执行的工作,那么可以考虑使用Ant,这样可以将这样的工作编写为Ant脚本,便于维护和定期执行
2.当你是系统管理员,或者部署人员时,可以考虑使用Ant
3.当你是测试人员,希望在夜晚离开公司时,自动执行一些单元测试,当白天到公司时就能看到结果时,可以考虑使用Ant
4.当你是版本管理人员时可以考虑使用Ant
(2) Ant 搭建环境
设置ANT_HOME,PATH中添加ANT_HOME目录下的bin目录
测试一下你的设置,开始-->运行-->cmd进入命令行-->键入 ant 回车,如果看到
Buildfile: build.xml does not exist!
Build failed
那么恭喜你你已经完成ant的设置
(3) Ant 命令
1)ant
使用当前目录下的build.xml运行Ant,执行缺省的target。
2)ant -buildfile test.xml
使用当前目录下的test.xml运行Ant,执行缺省的target。
3)ant -buildfile test.xml dist
使用当前目录下的test.xml运行Ant,执行一个叫做dist的target。
4)ant -buildfile test.xml -Dbuild=build/classes dist
使用当前目录下的test.xml运行Ant,执行一个叫做dist的target,并设定build属性的值为build/classes。
(4) 一个简单的ANT打包,部署,生成doc的build.xml配置文件写法
<?xml version="1.0" encoding="UTF-8"?>
<!-- name:对应工程的名字;default:需要的缺省任务(运行"ant"不指明任务时执行的任务) -->
<project name="antTest" default="main" basedir=".">
<!-- 建立目录结构
src JAVA源码编辑目录
lib jar包(类库)存放目录
classes 编译生成的class文件存放目录
WebRoot jsp文件存放地方
config 配置文件存放地方
dist war和javadoc存放目录
-->
<property name="appName" value="antTest"/>
<property name="src.dir" value="src"/>
<property name="webroot.dir" value="WebRoot"/>
<property name="lib.dir" value="${webroot.dir}/WEB-INF"/>
<property name="classes.dir" value="bin"/>
<property name="webapps.dir" value="D:/Tomcat6.0/webapps/antTest"/>
<property name="dist.dir" value="dist"/>
<!-- Compilation Classpath 路径设置 -->
<path id="compile.classpath">
<pathelement location="${classes.dir}"/>
<fileset dir="${lib.dir}" includes="**/*.jar" />
</path>
<!-- Clean Target 删除先前的目录结构 -->
<target name="clean">
<delete dir="${clesses.dir}"/>
<delete dir="${webapps.dir}"/>
<delete dir="${dist.dir}"/>
</target>
<!-- Prepare Target 建立打包的目的目录结构 -->
<target name="prepare">
<mkdir dir="${classes.dir}"/>
</target>
<!-- Compile Target 编译代码,在这之前先由prepare建立目录结构 -->
<target name="compile" depends="prepare" description="Compile java sources">
<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true">
<classpath refid="compile.classpath"/>
</javac>
<!-- 把资源文件下的xml和properties 文件拷贝到classes下面-->
<copy todir="${classes.dir}">
<fileset dir="${src.dir}">
<include name="**/*.xml"/>
<include name="**/*.properties" />
</fileset>
</copy>
</target>
<!-- Deploy Target 在tomcat下建立应用目录并部署应用 -->
<target name="deploy" depends="compile" description="Deploy application to servlet container">
<mkdir dir="${webapps.dir}"/>
<copy todir="${webapps.dir}">
<fileset dir="${webroot.dir}"/>
</copy>
<mkdir dir="${webapps.dir}/WEB-INF/classes"/>
<copy todir="${webapps.dir}/WEB-INF/classes">
<fileset dir="${classes.dir}" ><include name="**/**" />
</fileset>
</copy>
<mkdir dir="${webapps.dir}/WEB-INF/lib"/>
<copy todir="${webapps.dir}/WEB-INF/lib">
<fileset dir="${lib.dir}" includes="*.jar" />
</copy>
</target>
<!-- Dist Target 默认的target 将应用打包成war,在这之前先执行clean和deploy -->
<target name="main" depends="clean,javadoc,deploy" description="Create binary destribution">
<jar jarfile="${dist.dir}/${appName}.war" basedir="${webapps.dir}"/>
</target>
<!-- Javadoc Target 生成javadoc -->
<target name="javadoc" depends="compile" description="Create Javadoc API documentation">
<mkdir dir="${dist.dir}/docs/api"/>
<javadoc sourcepath="${src.dir}" destdir="${dist.dir}/docs/api" packagenames="*.*"/>
</target>
</project>