Ant的概念
当一个代码项目大了以后,每次重新编译,打包,测试等都会变得非常复杂而且重复,因此c语言中有make脚本来帮助这些工作的批量完成。在Java 中应用是平台无关性的,当然不会用平台相关的make脚本来完成这些批处理任务了,ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些。
ANT是一个构建工具,它有跨平台、操作简单、 安装简单、占用资源少等特点,它只有一个配置文件build.xml,我们要做的事情就是在build.xml中去定义我们想要做的事情,ANT它本身有 很多命令和语法,刚接触时也是比较头大,后面慢慢去学习查询,基本上了解了整个build.xml包含的内容,学习办法就是查看例子,通过例子 去熟悉不同标签里面的属性和参数的含义,我们不需要全部都要记住,只要在使用的时候知道如何去查询即可。
build.xml是什么
Ant的构建文件:当开始一个新的项目时,首先应该编写Ant构建文件。构建文件定义了构建过程,并被团队开发中每个人使用。Ant构建文件默认命名为build.xml,也可以取其他的名字。只不过在运行的时候把这个命名当作参数传给Ant。构建文件可以放在任何的位置。一般做法是放在项目顶层目录中,这样可以保持项目的简洁和清晰。
- ant 的配置文件,用于打包发布,里面含有配置文件。有点类似于linux/unix下的makefile。
- build.xml就是一个XML文件,它包含一个project节点和至少一个target节点,target节点包含多个task元素。简单说,target节点代表着你的构建目标,而该目标是由多个操作/任务(task)来达成的。

build.xml详解
下面来构建个build.xml文件,这只是简单的开始:
在D:/test/ant/src下创建HelloWorld.java文件
package test.ant; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }
在上一级目录创建build.xml文件,键入以下内容:
<?xml version="1.0" encoding="UTF-8"?> <project name="HelloWorld" default="run" basedir="."><!-- 项目名为HelloWorld,default代表默认要做的事情,.代表当前目录--> <property name="src" value="src"/><!-- 定义src变量 --> <property name="dest" value="classes"/> <!-- 定义dest变量--> <property name="hello_jar" value="hello.jar"/><!-- 定义hello_jar变量--> <target name="init"> <!-- 定义一个目标,这里表示初始化,mkdir表示创建一个目录,${dest}表示取变量dest的值 --> <mkdir dir="${dest}"/> </target> <!-- 编译目标,depends是它依赖的target,在init执行过才执行compile--> <target name="complie" depends="init"> <!-- 运行javac命令 srcdir源目录 destdir目标目录--> <javac srcdir="${src}" destdir="${dest}"/> </target> <!-- 构建目标,依赖compile--> <target name="build" depends="complie"> <!-- 运行jar命令 jarfile为jar文件 basedir为classes--> <jar jarfile="${hello_jar}" basedir="${dest}"/> </target> <!--运行--> <target name="run" depends="build"> <java classname="test.ant.HelloWorld" classpath="${hello_jar}"/> </target> <!-- 删除生成的文件--> <target name="clean"> <delete dir="${dest}"/> <delete file="${hello_jar}"/> </target> <!--再次运行--> <target name="rerun" depends="clean,run"> <ant target="clean"/> <ant target="run"/> </target> </project>
来总结一下以上用到的元素:
project节点元素 Ant构建文件的根元素,属性: name属性:用于指定project元素的名称。 default属性:用于指定project默认执行时执行的target的名称。 basedir属性:用于指定基路径的位置。 ------------------------------------------------------- property节点元素 用于定义变量或参数的定义,属性: name属性:变量名字 value属性:变量值 ------------------------------------------------------- ant有一些内建的特性如: ant.file–>构建文件如build.xml文件所在的路径 ant.home->ant的根路径 ant.java.version->java版本 ant.project.name->当前project的名字,在build.xml的开头指定 ant.version->ant版本 ------------------------------------------------------- target节点元素 可以看做是一个任务,它有如下属性: name属性:指定target元素的名称。 depends属性:用于描述target之间的依赖关系。 if属性:用于验证指定的属性是否存在,若不存在,所在target将不会被执行。 unless 属性:该属性的功能与 if 属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在 target 将会被执行。 description 属性:该属性是关于 target 功能的简短描述和说明。 ------------------------------------------------------- mkdir命令 :创建目录 javac命令 :用于编译一个或一组java文件。 jar命令:用来生成一个JAR文件。 delete命令 :对文件或目录进行删除。