http://www.blogjava.net/dreamstone 1/21
Ant 介绍
1,什么是 ant
ant 是构建工具
2,什么是构建
概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去
等等操作,当然不仅与此,但是主要用来干这个
3,ant 的好处
跨平台 --因为 ant 是使用 java 实现的,所以它跨平台
使用简单--与 ant 的兄弟 make 比起来
语法清晰--同样是和 make 相比
功能强大--ant 能做的事情很多,可能你用了很久,你仍然不知道它能有多少功能。当
你自己开发一些 ant 插件的时候,你会发现它更多的功能。
4,ant 的兄弟 make
ant 做的很多事情,大部分是曾经有一个叫 make 的所做的,不过对象不同,make 更多
应用于 c/c++ ,ant 更多应用于 Java。当然这不是一定的,但大部分人如此。
下边开始一步步的带你走进 ant 的世界
ant 安装
http://www.blogjava.net/dreamstone
1/21
http://www.blogjava.net/dreamstone 2/21
1、到http://ant.apache.org/bindownload.cgi
下載 Ant,我使用的版本是 1.70
解压缩下载文件到你的工作目录,这里以 d:\ant_home 为例
2,如图新增系统变量
新增系统变量:ANT_HOME,内容:d:\ant_home\apache-ant-1.70
在 PATH 环境变量中加入 Ant 的 bin 目錄:%ANT_HOME%\bin
如果要让 Ant 能支持 JUnit,需要直接將 JUnit 的 junit.jar 放置在 Ant 的 lib 目錄,并记
得改变 CLASSPATH 中原先有关于 JUnit 的设定,例如:%ANT_HOME\lib\junit.jar,虽
然也有其它的方式可以設定,但這是最快最簡單的方法。
如果是 Windows 2000/XP,请 在 [系统内容/高级/环境变量]中设置[系统变量],以完成以
上的设定,例如:
3、测试安装
CMD 进入命令行界面,运行 Ant
出现如下提示,说明安装成功
E:\srcgen\webwork>ant
Buildfile: build.xml does not exist!
Build failed
二、第一个 ant 脚本
http://www.blogjava.net/dreamstone
2/21
http://www.blogjava.net/dreamstone 3/21
使用 ant 来达成目的,完成一件事情的实例
1、目的:
z 编写一个程序
z 编译它们
z 把它打包成 jar 包
z 把他们放在应该放置的地方
z 运行它们
我们用文本编辑器编写一个 HelloWorld 如下
这里为了简单起见只写一个程序,就是 HelloWorld.java 程序代码如下:
package test.ant;
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello world1");
}
};
2,然后用 ant 完成剩下的步骤。
建立一个 build.xml 文件,内容如下
<?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="run" basedir=".">
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<property name="hello_jar" value="hello1.jar"/>
<target name="init">
<mkdir dir="${dest}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>
<target name="build" depends="compile">
<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>
解释上边的配置文件
http://www.blogjava.net/dreamstone
3/21
http://www.blogjava.net/dreamstone 4/21
<?xml version="1.0" encoding="UTF-8" ?>
build.xml 中的第一句话,没有实际的意义,指定一下 encoding,几乎所有的 xml 的第一行
<project name="HelloWorld" default="run" basedir=".">
</project>
ant 的所有内容必须包含在这个里边,name 是你给它取的名字,basedir 故名思意就是工作的
根目录 .代表当前目录。default 代表默认要做的事情。
<property name="src" value="src"/>
类似程序中的变量,为什么这么做想一下变量的作用
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>
把你想做的每一件事情写成一个 target ,它有一个名字,depends 是它所依赖的 target,在 执
行这个 target 例如这里的 compile 之前 ant 会先检查 init 是否曾经被执行过,如果执行过则
直接直接执行 compile,如果没有则会先执行它依赖的 target 例如这里的 init,然后在执行这
个 target
如我们的计划
编译:
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>
做 jar 包:
<target name="build" depends="compile">
<jar jarfile="${hello_jar}" basedir="${dest}"/>
</target>
运行:
<target name="run" depends="build">
<java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
</target>
为了不用拷贝,我们可以在最开始定义好目标文件夹,这样 ant 直接把结果就放在目标文件
夹中了
新建文件夹:
<target name="init">
<mkdir dir="${dest}"/>
</target>
为了更多一点的功能体现,又加入了两个 target
删除生成的文件
http://www.blogjava.net/dreamstone
4/21
http://www.blogjava.net/dreamstone 5/21
<target name="clean">
<delete dir="${dest}" />
<delete file="${hello_jar}" />
</target>
再次运行,这里显示了如何在一个 target 里边调用其他的 target
<target name="rerun" depends="clean,run">
<ant target="clean" />
<ant target="run" />
</target>
好了,解释完成了,下边检验一下你的 ant 吧
新建一个 src 的文件夹,然后把 HelloWorld.java 按照包目录放进去
做好 build.xml 文件
在命令行下键入 ant ,你会发现一个个任务都完成了。每次更改完代码只需要再次键入 ant
有的时候我们可能并不想运行程序,只想执行这些步骤中的某一两个步骤,例如我只想重新
部署而不想运行,键入
ant build
ant 中的每一个任务都可以这样调用 ant + target name
好了,这样一个简单的 ant 任务完成了。
整合 ant
http://www.blogjava.net/dreamstone
5/21