Java构建工具Ant build.xml文件

0 前言

全是干货的技术殿堂

文章收录在我的 GitHub 仓库,欢迎Star/fork:
Java-Interview-Tutorial
https://github.com/Wasabi1234/Java-Interview-Tutorial

Apache Ant 是由 Java 语言开发的工具,由 Apache 软件基金会所提供。Apache Ant 的配置文件写成 XML 容易维护和书写,而且结构很清晰。

1 简介

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 可以很容易从命令行调用,并且它能够很好地集成免费和商用的集成开发环境。

2 环境搭建

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™ 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 。

3 构建文件

一般来说,Ant 的构建文件默认为 build.xml,放在项目顶层目录中。然而,并没有限制构建文件必须命名为 bulid.xml,也并不限制放在项目顶层目录中。你可以将构建文件命名为其他名字,也可以将它放在项目的其他地方。

这个教程将以简单的方式向你展示如何利用 Apache Ant 来自动地构建和部署项目的过程。在完成本教程的学习以后,你将会发现你已经具备下一阶段学习 Apache Ant 中等水平的专业知识 。

对于下面的练习,创建一个文件命名为 build.xml 的文件,存储在你电脑的任意地方 ,并包含一下的内容:

<?xml version="1.0"?> Hello World - Welcome to Apache Ant! 注意到上面的练习中,在 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)。例如:

.... .... .... .... 构建文件的目标元素有以下属性:

属性 描述
目标名 (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:>

4 构建项目

现在我们已经学习了 Ant 的数据类型,是时候在实际过程中运用所学知识了。在这一章节中,我们将会构建一个项目。这一章节的目的是创建一个 Ant build 文件,该文件能够编译 Java 源文件和将这些类文件存储在 WEB-INF\classes 文件夹下。

考虑接下来构建项目的结构:

数据脚本存储在 db 文件夹中。
java 源文件存储在 src 文件夹中。
images (图像),js (JavaScript 脚本),style (css 层叠样式表)存储在 war 文件夹中。
JSPs 文件存储在 jsp 文件夹中。
第三方的 jar 文件存储在 lib 文件夹中。
java 类文件存储在 WEB-INF\classes 文件夹中。
学习完本教程的剩余部分后,就能知道这个项目是一个 Hello World 传真应用。

C:\work\FaxWebApplication>tree
Folder PATH listing
Volume serial number is 00740061 EC1C:ADB1
C:.
+---db
+---src
.  +---faxapp
.  +---dao
.  +---entity
.  +---util
.  +---web
+---war
   +---images
   +---js
   +---META-INF
   +---styles
   +---WEB-INF
      +---classes
      +---jsp
      +---lib

下面给出上述项目的 build.xml 文件的内容。让我们来一条语句接一条语句地来分析它。

<?xml version="1.0"?> 首先,让我们来声明一些源文件,web 文件和构建文件的一些属性信息。 在上面的例子中:

src.dir 表示这个项目的源文件目录,也就是存储 java 文件的地方。
web.dir 表示这个项目的 web 文件目录,也就是存储 JSPs 文件,web.xml,css,javascript 以及其它与 web 相关的文件的地方。
build.dir 表示该项目的输出文件。
属性也可以引用其它属性。在上面的例子中,build.dir 属性引用了 web.dir 属性。

在上面的例子中,src.dir 就是项目源文件存放的地方。

我们项目的默认目标是编译目标。但是首先让我们来看一下 clean 目标。

clean 目标,就像它的名字所表明的意思一样,删除构建文件夹中的所有文件。

控制类路径 (master-classpath) 保存类路径的相关信息。在这种情况下,它包含了构建文件夹和 jar 文件夹中的所有的类文件。 最后,构建目标构建这些文件。首先,我们创建一个构建目录,如果该目录不存在,我们就执行 javac 命令(具体以 jdk 1.5 作为我们目标的编译环境)。 我们对 javac 任务提供源文件夹和类路径,并且通过执行 javac 任务将类文件存放在构建文件夹中。 在这个文件上执行 Ant,编译 java 源文件,并将编译后的类文件存放在构建文件夹的地方。

运行 Ant 文件后,能看到以下输出:

C:>ant
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 6.3 seconds
文件被编译后,将存储在 build.dir 文件夹中。

发布了351 篇原创文章 · 获赞 339 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/qq_33589510/article/details/104609052
今日推荐