最近在项目中用到Ant自动构建,在此记录Ant的学习及使用过程,以备后用;也希望刚初学Ant的javaeyer们提供一些帮助,呵呵.
一.Ant环境搭配
下载ANT包 http://ant.apache.org/bindownload.cgi 俺用的是apache-ant-1.7.1-bin.zip
在搭配及使用Ant前,需要安装好JDK,及配置好JDK的环境;例如JDK安装在D:\javaprogram\Java;
WINDOWS XP:
右击我的电脑-->属性-->高级-->环境变量
JAVA_HOME: D:\javaprogram\Java\jdk1.6.0_02;
PATH: %JAVA_HOME%\bin;%ANT_HOME%\bin ;
CLASSPATH: .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar ;
将apache-ant-1.7.1-bin.zip解压在D:\javaprogram\ 下;设置Ant环境:
ANT_HOME:D:\javaprogram\apache-ant-1.7.1
PATH:%JAVA_HOME%\bin;%ANT_HOME%\bin (添加在原先设置的path之后)
测试ant是否配置好:
打开 cmd,运行 ant -version 如果出现 Apache Ant version 1.7.1 compiled on June 27 2008
则配置成功 ;
Linux中搭配Ant:
首先要安装好JDK(Linux中的jdk安装在俺的博客中有说道) ;俺用的是apache-ant-1.7.1-bin.tar.gz,将其解压在
/usr/local/下,修改 /etc/profile 文件,在原先配置的JDK路径中加入以下内容(红色为添加的内容)
ANT_HOME=/usr/local/apache-ant-1.7.1
JAVA_HOME=/usr/java/jdk1.6.0_10
JRE_HOME=/usr/java/jdk1.6.0_10/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ANT_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/jt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export ANT_HOME JAVA_HOME JRE_HOME PATH CLASSPATH
保存退出;在shell下运行 source /etc/profile;
linux中测试ant是否测试成功:
shell下运行:ant -version 出现 Apache Ant version 1.7.1 compiled on June 27 2008 (恭喜配置成功)
二.Ant的build.xml配置文件
以下build.xml的配置内容是网上各个资料的总结,及测试通过的,功能有:编译,打包, 部署,生成javadoc 和 junitdoc ;
<?xml version="1.0" encoding="utf-8"?> <!-- ==================================================== --> <!-- Build file for AntDemoWeb--> <!-- Author: yushan --> <!-- ==================================================== --> <project name="AntDemoWeb" default="dist" basedir="."> <!-- 建立目录结构 src JAVA源码编辑目录 lib jar包(类库)存放目录 bin 编译生成的class文件存放目录 dist war,junitReport和javadoc存放目录 WebRoot jsp文件存放地方 --> <property name="appName" value="AntDemoWeb" /> <property name="src.dir" value="../src" /> <property name="lib.dir" value="../WebRoot/WEB-INF/lib" /> <property name="dist.dir" value="../dist" /> <property name="classes.dir" value="../WebRoot/WEB-INF/classes" /> <!-- web 项目部署环境 --> <property name="webapps.dir" value="D:/javaprogram/tomcat6.0/webapps/AntDemoWeb" /> <property name="webroot.dir" value="../WebRoot" /> <!-- Compilation Classpath 路径设置 --> <path id="compile.classpath"> <pathelement location="${classes.dir}" /> <fileset dir="${lib.dir}" includes="**/*.jar" /> </path> <!-- Clean Target 删除先前的目录结构 --> <target name="clean" description="Delete old build and dist directories"> <delete dir="${clesses.dir}" /> <delete dir="${dist.dir}" /> <delete dir="${webapps.dir}" /> <echo>clean is complete!</echo> </target> <!-- Prepare Target 建立打包的目的目录结构 --> <target name="prepare"> <mkdir dir="${classes.dir}" /> <mkdir dir="${dist.dir}" /> <echo>prepare is complete!</echo> </target> <!-- Compile Target 编译代码,在这之前先由prepare建立目录结构 encoding="utf-8" 处理乱码 --> <target name="compile" depends="prepare" description="Compile java sources"> <!-- Compile java class as necessary --> <!-- 注意:如果有两个源代码目录应该: srcdir="${src.dir};${test.dir}",用分号隔开--> <javac srcdir="${src.dir}" destdir="${classes.dir}" encoding="utf-8" debug="true"> <classpath refid="compile.classpath" /> </javac> <copy todir="${classes.dir}"> <fileset dir="${src.dir}"> <include name="**/*.xml" /> <include name="**/*.properties" /> </fileset> </copy> <echo>compile is complete!</echo> </target> <!-- Deploy Target 在tomcat下建立应用目录并部署应用 --> <target name="deploy" depends="compile" description="Deploy application to servlet container"> <!-- Copy the contents of the build directory --> <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> <echo>deploy is complete!</echo> </target> <!-- Dist Target 将应用打包成war,在这之前先执行javadoc和deploy --> <target name="dist" depends="clean,deploy" description="Create binary destribution"> <jar jarfile="${dist.dir}/${appName}.war" basedir="${webapps.dir}" /> <echo>dist is complete!</echo> </target> <!-- Javadoc Target 生成javadoc --> <!--这里 的encoding 就是指的你 java 文件的编码格式 javac 和javadoc 都有这个参数charset 指的是 生成 doc 后的编码方式 javadoc 的参数--> <target name="javadoc" depends="compile" description="Create Javadoc API documentation"> <mkdir dir="${dist.dir}/docs/api" /> <javadoc sourcepath="${src.dir}" charset="utf-8" encoding="utf-8" source="1.6" destdir="${dist.dir}/docs/api"> <classpath refid="compile.classpath" /> </javadoc> <echo>javadoc is complete!</echo> </target> <!-- Report Target 生成 junit 报告 --> <target name="report" depends="compile"> <mkdir dir="${dist.dir}/junitReport" /> <junit printsummary="on" fork="true" showoutput="true"> <classpath refid="compile.classpath" /> <formatter type="xml" /> <batchtest todir="${dist.dir}/junitReport"> <fileset dir="${classes.dir}"> <include name="**/*Test.class" /> </fileset> </batchtest> </junit> <echo>auto test successfully</echo> <junitreport todir="${dist.dir}/junitReport"> <fileset dir="${dist.dir}/junitReport"> <include name="TEST-*.xml" /> </fileset> <report format="frames" todir="${dist.dir}/junitReport" /> </junitreport> <echo>junit report with HTML Documents successfully!</echo> </target> </project>
将该文件放在 项目的src同级目录下,也可以放在项目根目录下,但必须改变其相应的路径如:
三.运行build.xml
1.myeclipse中:
2. 在windows 中的cmd 中 ,找到该文件所在的目录运行 ant 即可执行 build.xml定义的默认target;
(在此注意项目的编码都是utf-8,否则根据这个build.xml会出现乱码不能编译或不能生产javadoc;如果是其他的编码应改变build中的编码格式)
3. Linux中的shell中:找到build所在的目录运行 ant 即可执行 build.xml定义的默认target; 可以 ant javadoc (红色为target名称)
以上内容为俺的ant学习过程,测试通过,如有那些不足之处或缺陷或有更好的,请大家指出谢谢;