介绍
Ant 是一个 Apache 基金会下的跨平台的基于 Java 语言开发的构件工具。在我们详细了解 Apache Ant 之前, 让我们来讲解为什么构建工具是需要最先了解的。
构建工具的需求
一般情况,开发人员花费大量的时间做一般性的任务,比如:构建和部署,通常包含下面的工作:
- 编译代码
- 封装二进制文件
- 在测试服务器上部署二进制文件
- 测试改变
- 从一个地点拷贝代码到另一个地点
为了自动和简化上面的工作,Apache Ant 是非常有用的。这是一个基于开放的操作系统构建和部署的工具,该工具需要从命令行执行。
Apache Ant 的历史
- Ant 是由 James Duncan Davidson 开发的(也就是 Tomcat 最初的开发者)。
- 最初是用来构建 Tomcat,被作为一个 Tomcat 的发行版的一部分。
- Apach Make 工具包的复杂性与诸多问题催生了 Apache Ant。
- 在 2000 年的时候,Ant 被作为一个独立的项目。最新的 Apache Ant 版本是 2014 年 5 月的 1.9.4 版本。
Apache Ant 的特点
- Ant 是最完整的基于 Java 语言开发的构建和部署工具。
- Ant 具有平台无关性,可以处理平台特有的属性,诸如文件分隔符。
- Ant 还可以用来执行平台特有的任务,比如使用 touch 命令修改一个文件的修改时间。
- Ant 脚本是用 XML 来完成的。如果你已经对 XML 有所了解,那么你学习 Ant,将会比较得心应手。
- Ant 擅长自动完成重复任务。
- Ant 开始需要一系列的预先定义好的任务。
- Ant 提供了开发自定义任务的接口。
- Ant 可以很容易从命令行调用,并且它能够很好地集成免费和商用的集成开发环境。
Ant 环境搭建
Apache Ant 是 Apache 软件许可证下发布的。Apache 是一个由一个开源机构认证的完全成熟的开源许可证。Apache Ant 最新的版本包括了以下的部分:完整的源代码, 类文件和文档,这些内容都可以在 http://ant.apache.org上面找到。
安装 Apache Ant
安装 Apache Ant 的前提是你的电脑上已经下载并且安装了 Java 开发工具包(JDK)。如果电脑上没有安装的话,请按照下列的提示进行下载和安装。
- 确保设置 JAVA_HOME 环境变量为你安装 Java 开发工具包的文件夹。
- 从 http://ant.apache.org 下载库。
- 将文件解压到一个方便的地址,如 c:\folder 。可以使用 Winzip, winRAR, 7-zip 或者其他类似的工具进行解压缩操作。
- 创建一个新的环境变量,命名为 ANT_HOME, 该环境变量指向 Ant 的安装文件夹,在这个例子中,该文件夹为 c:\apache-ant-1.8.2-bin。
- 将 Apache Ant 的批处理文件的路径添加到 PATH 环境变量里。在这个例子中,该路径应为 c:\apache-ant-1.8.2-bin\bin 文件夹。
验证 Apache Ant 安装
为了验证你的电脑上是否已经成功安装了 Apache Ant ,你可以在命令提示符中输入 ant。你应该会看到一个与下列相似的输出:
> C:\>ant -version
Apache Ant(TM) version 1.8.2 compiled on December 20 2010
如果你没有看到与上述相类似的输出,请重新检查一下你是否已经正确按照之前的步骤进行了安装。
安装 Eclipse
这个教程也包括了 Ant 和 Eclipse 继承开发环境的整合。因此,如果你还没有安装好 Eclipse, 请下载并安装 Eclipse。
安装 Eclipse 请按照下述步骤:
- 从 www.eclipse.org 上面下载最新版的 Eclipse 文件。
- 解压 Eclipse 文件到一个方便的位置,比如 c:\folder 。
- 从 c:\eclipse\eclipse.exe 处运行 Eclipse 。
Ant 构建文件
一般来说,Ant 的构建文件默认为 build.xml,放在项目顶层目录中。然而,并没有限制构建文件必须命名为 bulid.xml,也并不限制放在项目顶层目录中。你可以将构建文件命名为其他名字,也可以将它放在项目的其他地方。
这个教程将以简单的方式向你展示如何利用 Apache Ant 来自动地构建和部署项目的过程。在完成本教程的学习以后,你将会发现你已经具备下一阶段学习 Apache Ant 中等水平的专业知识 。
对于下面的练习,创建一个文件命名为 build.xml 的文件,存储在你电脑的任意地方 ,并包含一下的内容:
<?xml version="1.0"?>
<project name="Hello World Project" default="info">
<target name="info">
<echo>Hello World - Welcome to Apache Ant!</echo>
</target>
</project>
注意到上面的练习中,在 xml 文件的声明前面没有任何空行或者空格。如果你在写 xml 文件的声明时加入了空行或者空格,执行 ant -build 操作时,将会出现下面的错误信息:
The processing instruction target matching "[xX][mM][lL]" is not allowed.
错误信息的意思是:处理指令目标匹配 "[xX][mM][lL]"
不被允许。所有的构建文件需要包含项目元素 (project 标签) 和至少一个目标元素 (target 标签)。
构建文件的项目元素 有 3 个属性:
属性 | 描述 |
项目名 (name) | 表示项目的名称。(可选) |
默认 (default) | 表示构建脚本默认运行的目标,即制定默认的 target。一个项目 (project) 可以包含多个目标 (target)。(必须) |
基准目录 (basedir) | 表示当该属性没有指定时,使用 Ant 的构件文件的附目录作为基准目录。(可选) |
一个目标 (target) 是一系列你想运行的任务 (tasks),运行时看成一个单元。在我们的例子中,我们用一个简单的目标来为用户提供一个有信息的消息。
目标和目标之间可以有依赖关系。举个例子,一个部署 (deploy) 目标可能依赖于封装 (package) 目标,而这个封装目标可能又依赖于编译 (compile) 目标等。依赖关系被表示成依赖属性 (depends)。例如:
<target name="deploy" depends="package">
....
</target>
<target name="package" depends="clean,compile">
....
</target>
<target name="clean" >
....
</target>
<target name="compile" >
....
</target>
构建文件的目标元素有以下属性:
属性 | 描述 |
---|---|
目标名 (name) | 表示目标的名称。(必须) |
依赖 (depends) | 用于描述 target 之间的依赖关系,若与多个 target 存在依赖关系时,需要以“,”间隔。Ant 会依照 depends 属性中 target 出现的顺序依次执行每个 target。被依赖的 target 会先执行。(可选) |
描述 (description) | 关于 target 功能的简单描述。(可选) |
如果 (if) | 用于验证指定的属性是否存在,若不存在,所在 target 将不会被执行。(可选) |
除非 (unless) | 该属性的功能与 if 属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在 target 将会被执行。(可选) |
在上面的例子中 echo 任务主要负责打印消息。在我们的例子中,执行 echo 任务后,打印出 “hello world” 消息。
为了运行 ant 的构建文件,打开命令提示符并导航到 build.xml 建立的文件夹。输入 ant info 命令或者 ant 命令。这两种命令都可以运行,因为 info 是构建文件的默认目标。你讲会看到下面的输出信息:
C:\>ant
Buildfile: C:\build.xml
info: [echo] Hello World - Welcome to Apache Ant!
BUILD SUCCESSFUL
Total time: 0 seconds
C:\>
我的Demo:
<?xml version="1.0" encoding="UTF-8"?>
<!-- name:项目名,default:指定默认target,basedir(可选):用于指定基路径的位置。该属性没有指定时,使用Ant的构件文件的附目录作为基准目录 -->
<project name="Hello World Project" default="info">
<!-- name:目标的名称,depends:用于描述 target 之间的依赖关系,description(可选):关于 target 功能的简单描述 -->
<!-- if:验证指定的属性是否存在,存在执行。unless:不存在执行 -->
<!--
在例子中 echo 任务主要负责打印消息。在我们的例子中,执行 echo 任务后,打印出 “hello world” 消息。
为了运行 ant 的构建文件,打开命令提示符并导航到 build.xml 建立的文件夹。输入 ant info 命令或者 ant 命令。这两种命令都可以运行,因为 info 是构建文件的默认目标。你讲会看到下面的输出信息:
-->
<target name="info" depends="package" description="这是info的描述信息">
<echo>Hello World - Welcome to Apache Ant!</echo>
</target>
<target name="deploy" depends="package">
<echo>来到deploy了</echo>
</target>
<target name="package" depends="clean,compile">
<echo>来到package了</echo>
</target>
<target name="compile" >
<echo>来到compile了</echo>
</target>
<target name="clean" >
<echo>来到clean了</echo>
</target>
</project>
运行输出:
PS E:\web> ant
Buildfile: build.xml
clean:
[echo] 来到clean了
compile:
[echo] 来到compile了
package:
[echo] 来到package了
info:
[echo] Hello World - Welcome to Apache Ant!
BUILD SUCCESSFUL
Total time: 0 seconds
类似于树的后续遍历