Ant 笔记 1:Ant 介绍和入门
# Ant 笔记 1:Ant 介绍和入门
前面我们介绍了构建的概念,现在我们来介绍下一个简单的构建工具
# Ant 是什么
Ant 是由 James Duncan Davidson 詹姆斯·邓肯·戴维森开发的(也就是 Tomcat 最初的开发者),他实际为这个工具起的名字是 another neat tool(另一个整洁的工具),ANT 实际是各个单词首字母的缩写。最初是用来构建 Tomcat,被作为一个 Tomcat 的发行版的一部分。
Ant 的第一个版本 1.1
于 2000 年 7 月 19 日,作为一个独立的项目发布。
Ant 是 Apache 软件基金会的一个子项目,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于 Java 环境中的软件开发,也可用于构建用 C++编写的非 Java 应用程序。
从理论上讲,Apache Ant 是一种基于 Java 的,将软件工程的编译、测试、部署等步骤联系在一起并加以自动化的构建(build)工具。它与 make 工具有几分相似,但又没有 make 工具所具有的缺陷。这段话摘录于 Ant 的英文使用手册,是 Apache 自己对 Ant 的概括。
引自:ANT 十年手记分享——深入浅出 ANT(1) - 知乎 (opens new window)
如果你有过在 Linux、Unix 等操作系统中编写 C 或 C++程序的经历,那么你一定不会对 make 工具感到陌生,在那种环境下我们必须在可读性较差的 makefile 文件中配置对构建的描述。其中作者最讨厌的事莫过于 makefile 文件中的 tab 与空格的问题,有时仅仅只是 makefile 作了小小的修改,也很有必要检查一遍修改的信息之前有没有空格符号以免影响后面的运行。如果不注意检查,有时候错误信息真的让人不知所云。当然,像这样烦人的问题还有很多,这就不一一列举了。
您有可能会说,我们可以使用其他的现有工具,如:gnumake、nmake、jam 等等,大可不必为这些小事来大动干戈的开发一个新的构建工具。当然其中有一些工具避免了一些问题,但是又面临可读性差,扩展性不好,帮助文档不全,学习难度大,跨平台问题等等。
Ant 的开发者曾经在多种(硬件)平台上进行软件开发,他正是因为无法忍受这些工具的限制和不便,进而产生了编写一个新的、简洁易用的构建工具——Ant。
它有以下的优点(了解即可,看不懂也没关系):
- 开源
- 跨平台性:Ant 是纯 Java 语言编写的,所以具有很好的跨平台性。
- 操作简单、扩展性强:Ant 是由一个内置任务和可选任务组成的,用 ant 任务就像是在 dos 中写命令行一样。Ant 运行时需要一个 XML 文件(构建文件)。 Ant 通过调用 target 树,就可以执行各种 task。每个 task 实现了特定接口对象。而 Make 是基于 OS 的。
- 维护简单、可读性好、集成简单:由于 Ant 构建文件 时 XML 格式的文件,语法简单,所以很容易维护和书写,而且结构很清晰。Ant 可以集成到开发环境中。由于 Ant 的跨平台性和操作简单的特点,它很容易集成到一些开发环境中去。
- 可伸缩:Ant 内置了对 J2EE 开发的支持,例如 EJB 编译和打包。 它可以用于小型个人项目,也可以用于大型软件项目。
- 其他:高性能,广大的社区,向后兼容性,可扩展的架构
以上所举的种种好处再加上当前已经有相当多的优秀的 IDE 开发工具对 Ant 提供了支持,使得编写 Ant 文件的工作变得更加轻松,很好的避免了其他构建工具所具有的缺陷。正是由于 Ant 的其灵活性和易用性,很快 Ant 率先在 Java 开发人员中流行开来。
# Ant 有必要学习吗
Ant 在一些古老的项目中有使用,例如笔者就是在银行里因项目有用到才简单学习了下;
另外,Ant 目前还是有用武之地的,例如 Tomcat 就是用 Ant 构建的。通过学习 Ant,也能进一步理解构建的概念;
另外,本系列的 Ant 教程都很简短,即使加上实践,笔者预计也就花个 1,2 天的功夫,简单入门和了解下是不亏的。
# Ant 怎么学
实践出真知,对于一些基本的使用我会给出单独的案例用于演示,请读者们务必自行完成。
本系列只是简单入门,并不会太过深入,因为如今有很多更流行的构建工具,例如 Maven 和 Gradle
目前网上已经不少 Ant 教程了,但对于笔者这个第一次接触的人还是有点难,很多都是讲理论,没有实践,难以真正掌握。
我们先从命令行开始运行 Ant,然后和 IDE 集成。
# 安装 Ant
前提条件:需要安装好 Java。Ant 是用 Java 编写的,需要 JVM 来构建 Java 项目。
官网下载 Ant:Apache Ant - Welcome (opens new window) ,Ant 是可以在各种平台下运行的,要注意下载对应的操作系统版本。这里以 Windows 为例。
如果读者使用的 Java 版本较低,Ant 也提供了对应的版本,请读者自行去官网下载对应版本。
Ant 版本 | 最低 Java 版本 |
---|---|
1.1 ~ 1.5.4 | 1.1 |
1.6.0 ~ 1.6.5 | 1.2 |
1.7.0 ~ 1.7.1 | 1.3 |
1.8.0 ~ 1.8.3 | 1.4 |
任何 1.9.x 版本 | 1.5 |
任何 1.10.x 版本 | 1.8 |
下载后,自行决定要这个软件放在哪里(注意路径不要带空格和中文),解压 zip 压缩包,例如笔者的位置:D:\Projects\apache-ant-1.10.12。
Ant 目录结构简单介绍:我们打开解压后的 Ant 目录,可以看到不少文件夹和文件,简单说下:
- bin 是 ant 的程序运行入口,如果没有配置 ANT_HOME 的情况下,可以通过 bin 目录中的 bat 程序进行运行 build 任务。
- etc 目录中存放的都是一些 xsl 的输出模板,创建一个加强的导出各种任务的 XML 输出,使你的 build 文件摆脱过时的警告
- lib 目录中存放的是 ant 程序需要依赖的 jar 包
- manual 目录是 ant 程序的帮助文档
接下来我们配置环境变量:
- 新建 ANT_HOEM 变量:变量值为 Ant 解压后的路径,例如: D:\Projects\apache-ant-1.10.12
- 配置 path 变量:新增 %ANT_HOME%\bin
检查是否配置成功:打开命令行,输入 ant -version
C:\Users\peterjxl> ant -version
Apache Ant(TM) version 1.10.12 compiled on October 13 2021
2
至此,Ant 已经安装完了,后续可以开始练习了。
# 第一个 Ant 项目
我们新建一个目录 AntLearn(笔者是在 D:\projects 目录下新建的),后续我们就在这里使用和学习 Ant。新建一个 build.xml 文件,里面的内容如下:
<?xml version="1.0" encoding="UTF8"?>
<project name="demo">
</project>
2
3
4
然后打开 cmd,输入 ant,运行结果如下:
D:\Projects\AntLearn> ant
Buildfile: D:\Projects\AntLearn\build.xml
BUILD SUCCESSFUL
Total time: 0 seconds
2
3
4
5
Ant 的工作原理,简单来说就是根据配置文件(也叫构建脚本)的内容,去执行相应的任务,例如编译和删除编译过程的中间文件等。
如果没有指定构建文件的名字,则默认是用 build.xml; 如果要指定构建脚本,可以用 -file 选项
由于我们还没有仅仅只是创建了一个空的构建脚本,所以还得不能实现有意思的功能,后面我们会一步步深入。
# 小结
本文我们讲了如下内容:
- 什么是 Ant
- Ant 的历史和特点
- Ant 的安装和配置
- 第一个 Ant 项目
请读者自行动手练习,完成本文的内容后再继续学习。
本文涉及的 Ant 配置文件:
Gitee:03.JavaEE/01.LearnAnt · 小林/LearnJava - 码云 - 开源中国 (opens new window)
GitHub:LearnJava/03.JavaEE/01.LearnAnt at master · Peter-JXL/LearnJava (opens new window)