ANT脚本示例教程

什么是ANT?

Ant是一种基于Java的build工具。它有以下的优点。

安装&配置ANT

开始ANT之旅

Ant的构件文件是基于XML编写的,默认名称为build.xml。由一系列关键元素组合而成,现一一介绍。

1.project元素

project元素是Ant构件文件的根元素,Ant构件文件至少应该包含一个project元素,否则会发生错误。在每个project元素下,可包含多个target元素。接下来向读者展示一下project元素的各属性。

用于指定project元素的名称。

用于指定project默认执行时所执行的target的名称。

用于指定基路径的位置。该属性没有指定时,使用Ant的构件文件的父目录作为基准目录。

<project name="MyDemo" default="build" basedir=".">
</project>

2.target元素

target为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target可以存在相互依赖关系。它有如下属性:

<target name="clean" if="${build.dir}" description="delete the temp directory">
<delete dir="${build.dir}" />
</target>

<target name="prepare" depends="clean">
<mkdir dir="${build.dir}" />
</target>

3.property元素

property元素可看作变量或者参数的定义,project的属性可以通过property元素来设定,也可在Ant之外设定。若要在外部引入某文件,例如build.properties文件,可以通过如下内容将其引入:

<property file="build.properties"/>

property元素可用作task的属性值。在task中是通过将属性名放在${}之间,并放在task属性值的位置来实现的。

Ant提供了一些内置的属性,它能得到的系统属性的列表与Java文档中System.getPropertis()方法得到的属性一致。同时,Ant还提供了一些它自己的内置属性,如下:

<property  name ="name"  value ="cyj"/>

4.taskdef

Ant中的任务可以为3类:

对于自定义任务,如FindBugs,定义如下:

<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" classpathref="jar.classpath" />

此外,还有另外一种形式,定义一个properties文件,在该文件中将任务的名称和类名相对应,在一个文件中可以定义多个任务,如Emma:

<taskdef resource="emma_ant.properties" classpathref="jar.classpath" />

其实emma也是遵循上述的任务定义格式的,只不过它把name和classname定义到了文件emma_ant.properties里面了。

更多的Ant任务,请参见官方文档

如何运行ANT脚本?

运行指定build.xml中的xxx任务,并附带参数key,示例:

ant -buildfile=C:\build.xml xxx -Dkey=value