Ant是Java平台下非常棒的批处理命令执行程序,能非常方便地自动完成编译,测试,打包,部署等等一系列任务,大大提高开发效率。简言之,Ant是一个基于Java,并且主要用于Java工程的构建工具。Ant本意是Another Neat Tool,也就是另一种整洁的工具,取首字符就是Ant。构建工具就是为了减少重复工作而产生的。
ant的好处:1,跨平台,因为ant是使用java实现的;2,使用简单;3,语法清晰;4,功能强大.
1 Ant安装
首先到ant官方网站(http://ant.apache.org)上下载并解压,eclipse自带Ant,可不必下载。
其次,增加环境变量,在path中加入Ant的bin目录。
最后在cmd命令行运行ant命令,如果显示:
Buildfile: build.xml does not exist!
Build failed
说明安装成功。
2 Ant能完成的工作
init:初始化工作
compile:编译工作,将java代码编译成class
javadoc:生产文档,即API的相关文档
jar:打包,即将编译后的class文件打成jar
deploy:部署工作
clean:清除工作,即清空初始化的环境
all:执行全部任务
3 build.xml配置文件
在根目录下创建build.xml文件,通过Ant运行它即可完成相应的工作。
示例代码如下:
<?xml version="1.0"?> <project name="Hello world" default="doc"> <!-- properies --> <property name="src.dir" value="src" /> <property name="report.dir" value="report" /> <property name="classes.dir" value="classes" /> <property name="lib.dir" value="lib" /> <property name="dist.dir" value="dist" /> <property name="doc.dir" value="doc"/> <!-- 定义classpath --> <path id="master-classpath"> <fileset file="${lib.dir}/*.jar" /> <pathelement path="${classes.dir}"/> </path> <!-- 初始化任务 --> <target name="init"> </target> <!-- 编译 --> <target name="compile" depends="init" description="compile the source files"> <mkdir dir="${classes.dir}"/> <javac srcdir="${src.dir}" destdir="${classes.dir}" target="1.4"> <classpath refid="master-classpath"/> </javac> </target> <!-- 测试 --> <target name="test" depends="compile" description="run junit test"> <mkdir dir="${report.dir}"/> <junit printsummary="on" haltonfailure="false" failureproperty="tests.failed" showoutput="true"> <classpath refid="master-classpath" /> <formatter type="plain"/> <batchtest todir="${report.dir}"> <fileset dir="${classes.dir}"> <include name="**/*Test.*"/> </fileset> </batchtest> </junit> <fail if="tests.failed"> *********************************************************** **** One or more tests failed! Check the output ... **** *********************************************************** </fail> </target> <!-- 打包成jar --> <target name="pack" depends="test" description="make .jar file"> <mkdir dir="${dist.dir}" /> <jar destfile="${dist.dir}/hello.jar" basedir="${classes.dir}"> <exclude name="**/*Test.*" /> <exclude name="**/Test*.*" /> </jar> </target> <!-- 输出api文档 --> <target name="doc" depends="pack" description="create api doc"> <mkdir dir="${doc.dir}" /> <javadoc destdir="${doc.dir}" author="true" version="true" use="true" windowtitle="Test API"> <packageset dir="${src.dir}" defaultexcludes="yes"> <include name="example/**" /> </packageset> <doctitle><![CDATA[<h1>Hello, test</h1>]]></doctitle> <bottom><![CDATA[<i>All Rights Reserved.</i>]]></bottom> <tag name="todo" scope="all" description="To do:" /> </javadoc> </target> </project> |
以上xml依次定义了init(初始化),compile(编译),test(测试),doc(生成文档),pack(打包)任务,可以作为模板。
解释上面的配置文件
<?xml version="1.0" encoding="UTF-8" ?>,指定一下版本号和编码方式,几乎所有的XML文件的第一行都是这样.
<project name="HelloWorld" default="run" basedir=".">,ant的所有内容必须包含在project元素里面,basedir是工作的根目录,default是默认要做的事.
<property name="src" value="src"/>,指定变量
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>,要运行的一个命令,depends是它所依赖的target,在执行前先检查depends是否被执行过,如果执行过则直接执行name的命令,否则先执行depends
的命令.
<target name="jar" depends="compile">
<jar jarfile="${dist.jar}/ww.jar" basedir="${mm.classes}" includes="org/gd/**"></jar>
</target>,创建一个jarfile定义的jar文件,包含basedir目录下前缀是org.gd.*的类文件。