文档章节

ANT十年手记分享——深入浅出 ANT(1)

极乐君
 极乐君
发布于 2016/11/19 16:51
字数 2919
阅读 107
收藏 1
点赞 0
评论 0
  • 前言
  • Ant简介
    • Ant是什么
    • Ant 的由来
    • 使用Ant所带来的好处
    • 如何学习Ant
  • Ant起步
    • Ant 环境安装及配置
    • 第一个Ant构建脚本
    • 元素介绍
    • 执行第一个任务
    • Ant的依赖文件
  • 小结

 

  • 一、前言

这些天,朋友鼓动我在极乐科技的平台上发点原创的干货,我思来想去发点什么呢?最后决定把这套自己整理的Ant学习手册公布出来,我尽可能以简单易懂的方式阐述给大家,别无他求,但求凭借微薄之力帮助大家节省些许学习时间。

其实这套学习手册写于十年前,当时的我还在用C语言写银行系统,实在是受不了make构建工具的各种烦人错误,于是抽出业余时间自学了Ant。现在有关Ant资料网上已经有很多了,但是系统性的文档仍然非常稀缺,可想而知,十年前网络上几乎找不到多少关于Ant的参考资料,那时的我完全靠的是一腔热情,一个元素一个元素,一个属性一个属性的边试边学。绝不放过任何一个知识点,绝不因为任何一个困难而妥协,最后反而学的比较扎实。这次分享这套学习手册,希望让大家更多的了解Ant、使用Ant构建你的项目。

好吧,让我们一起进入Ant的世界!

  • 二、Ant简介 

2.1 Ant是什么

从理论上讲,Apache Ant是一种基于Java的,将软件工程的编译、测试、部署等步骤联系在一起并加以自动化的构建(build)工具。它与make工具有几分相似,但又没有make工具所具有的缺陷。这段话摘录于Ant的英文使用手册,是Apache自己对Ant的概括。

Ant的创始人 James Duncan Davidson 实际为这个工具启的名字应该是another neat tool(另一个整洁的工具),ANT实际是各个单词首字母的缩写,并不是真正意义上的蚂蚁。

不过,随着你深入的学习和使用Ant构建工具,你会慢慢感觉到这样一个小巧的软件可以为我们解决很多非常庞杂的工作,相信到时候你会更喜欢将它叫做勤劳的蚂蚁。

2.2 Ant 的由来

如果你有过在Linux、Unix等操作系统中编写C或C++程序的经历,那么你一定不会对make工具感到陌生,在那种环境下我们必须在可读性较差的makefile文件中配置对构建的描述。其中作者最讨厌的事莫过于makefile文件中的tab与空格的问题,有时仅仅只是makefile作了小小的修改,也好像得了强迫症一样,必须检查一遍修改的信息之前有没有空格符号以免影响后面的运行。如果不注意检查,有时候错误信息真的让作者不知所云。当然,像这样烦人的问题还有很多,这就不一一列举了。

您有可能会说,我们可以使用其他的现有工具,如:gnumake、nmake、jam等等,大可不必为这些小事来大动干戈的开发一个新的构建工具。当然其中有一些工具避免了一些问题,但是又面临可读性差,扩展性不好,帮助文档不全,学习难度大,跨平台问题等等。

Ant的开发者曾经在多种(硬件)平台上进行软件开发,他正是因为无法忍受这些工具的限制和不便,进而产生了编写一个新的、简洁易用的构建工具——Ant。

2.3 使用Ant所带来的好处

有些对make等构建工具比较熟悉,并且刚刚开始使用Ant的读者会觉得Ant与make等构建工具没有什么两样,Ant对构建工具的描述make也具备,而且Ant在描述构建时会失去一些shell特有的表达能力,如:`find . -name foo -exec rm {}`。那么,既然我们已经有了make以及其他的构建工具为什么还需要开发一种新的构建工具呢?正如我们在Ant的由来中提到的,Ant有其先天优势。

的确。从理论上讲,Ant就有些类似于make工具,也要定义各个生成文件之间的依赖关系。然而,使用过make工具的读者都知道,make工具是基于平台(OS)的,在不同的平台上会有很大的局限性。

Ant跟make之间最主要的不同点在于Ant是将那些任务作为Java类来实现的,Ant极大的继承了Java平台的独立性。这就表示Ant构建文件可以很容易的从一个平台转移到另一个平台,只要该平台支持Java虚拟机,只要维护一个构建描述就可以在不同的平台上执行。

其次,Ant配置文件是以xml格式书写,良好的书写风格大大提高了配置文件的可读性。虽然Ant在描述构建时会失去一些shell特有的表达能力,但Ant有一个<exec> task,这个task允许执行特定OS上的命令。

再次,Ant 的真正力量在于它的易于扩展性。事实上,恰恰正是这种可扩展性促使人们开发了如此多的附加任务。

最后,随着我们开发的应用程序的生成过程变得越来越复杂,Ant能够确保在每次生成期间都使用精确相同的生成步骤,同时实现自动化,产生一致的生成版本。

以上所举的种种好处再加上当前已经有相当多的优秀的IDE开发工具对Ant提供了支持,使得编写Ant文件的工作变得更加轻松,很好的避免了其他构建工具所具有的缺陷。正是由于Ant的其灵活性和易用性,很快Ant率先在 Java开发人员中流行开来。

Ant没有定义自己的语法,有的只是一组Ant自己能够理解的xml元素,但作者个人认为, 这并不影响它成为一款划时代的工具。

2.4 如何学习Ant

学习Ant之前,首先要明确的一个问题是:我们要用Ant做什么?然后针对这个问题来有的放矢的进行学习。

Ant也是按照插件式结构设计的,因此,每天都可能会有很多新的功能加入。我们不可能在很短的时间内将所有的Ant相关知识全部学完,也不可能等到将所有的Ant知识学习通透了再去工作。只有在工作中去学习,带着问题去学,才会有真正意义上的进步。在Ant中,哪个部分是自己马上要用到的,就先学习那个部分,其他部分等需要用到时在去查资料也不迟。

  • Ant起步

3.1 Ant 环境安装及配置

下载Ant安装包

首先,我们可以到Ant官网 http://ant.apache.org/ 下载安装包、源代码、使用手册等资源。如下图:

点选 Binary Distributions 进入安装包下载页面,下载最新的Ant安装包。Ant的安装包分为三种格式: apache-ant-1.9.7-bin.zip、 apache-ant-1.9.7-bin.tar.gz、apache-ant-1.9.7-bin.tar.bz2。其中第一种适用于windows系统、后两种都是用Unix、Linux系统。这里作者选择下载apache-ant-1.9.7-bin.zip。如下图:

安装Ant

将下载安装包解压到指定的目录下(笔者解压的路径为:D:\Ant),并在系统环境变量中添加ANT_HOME,并将地址指向Ant解压的根目录。

在PATH环境变量中增加Ant的bin目录地址。如:%ANT_HOME%\bin;

打开cmd(命令行)窗口,输入ant并回车,如果打印出build.xml不存在,则表示Ant安装成功,只是build文件未指定。如下图:

3.2 第一个Ant构建脚本

在任意目录下创建我们的第一个build.xml构建脚本文件(笔者的文件地址为:D:\tmp\build.xml),并输入以下内容:

<?xml version="1.0" encoding="GB2312"?>
<project name="demo">
</project>

打开cmd(命令行)窗口,进入构建脚本所在目录(如:D:\tmp),输入ant并回车,如果打印出:构建成功和执行时间。恭喜,这表示我们的第一个构建脚本执行正常。如下图:

由于我们还没有仅仅只是创建了一个空的构建脚本,所以还得不能实现有意思的功能,后面我们会一步步深入。

3.3 元素介绍

根元素<project>

project是构建脚本的根元素,所以一个构建脚本文件中必须包含且仅能包含一个project标签,<project>和</project>之间所包含的所有内容组成了一个完整的构建文件。

以下是project元素的属性列表:

3.4 执行第一个任务

准备执行我们的第一个任务,那么这第一个任务执行点啥呢?还是执行经典的"hello world! "吧!

打开我们的构建脚本文件,并增加第一个任务元素,名为:say hello。并通过echo元素打印出:hello world!

找到根元素,并添加default属性,属性值为:say hello,使Ant默认执行say hello任务。代码如下:

<?xml version="1.0" encoding="GB2312"?>
<project name="demo" default="say hello">
	  <target name="say hello" description="你好,世界!">
	  	  <echo level="info" message="hello world!"/>
	  </target>
</project>

打开cmd(命令行)窗口,进入构建脚本所在目录(如:D:\tmp),输入ant并回车,如果打印出:“hello world!”。恭喜,这表示我们的第一个任务执行成功。如下图:

3.5 Ant的依赖文件

这里为下一篇文章埋个引子,下篇文章就我会为大家介绍一下构建脚本需要依赖的各种文件,这里只是做一个基本介绍。build.xml的正常运行依赖于以下文件

1. build.properties

定义一些全局设置属性。

2. properties.xml

用于定义build.xml所需的属性值,主要完成通过build.properties定义构建工具需要变量集合、Classpath属性等工作。

3. app-settings.xml

用于定义设置应用程序状态的一些属性。

  • 小结

今天只是我系列文章的开篇,文章的结构和内容还有很多值得改进的地方,欢迎大家提出宝贵的建议和意见。

好吧!让我们下期再见!谢谢!

——————————————————————————————————————————

极乐科技专栏原创作者征集进行时……

  • 如果你乐于分享、愿意交流、爱钻研技术;
  • 如果你希望记录成长的过程,期待与大牛比肩;
  • 如果你希望得到更多的关注……

欢迎加入我们原创作者团队,我们原创作者团队有大牛,有妹纸,有逗比!

我们的原创作者团队能交流,善协作,爱学习!

加入原创作者团队,结实更多的它他她!

此外,对于优质原创内容,极乐科技会有相关激励!让劳有所得!

© 著作权归作者所有

共有 人打赏支持
极乐君
粉丝 15
博文 6
码字总数 8929
作品 0
武汉
《编写可维护的 JavaScript》读书笔记第14章:Ant

安装 运行 Ant 需要 Java 环境。 Windows 下的安装过程非常简单: 下载 Ant 压缩包 解压缩到某个目录 配置环境变量,将 {Ant 安装目录}bin 路径存在 PATH 中,用分号与其他路径隔开 进入 CM...

张前程
2014/01/05
0
0
mac下android工程打包时的ant安装

一、Ant含义 Ant本身就是一种流程脚本引擎,用于自动化调用程序完成项目的编译、打包、测试等。ANT是纯JAVA语言编写的,所以具有很好的跨平台性。Ant运行是只需要一个XML文件(构建文件),所...

今日竹石
2014/12/11
0
0
Gradle学习(十七)——Ant操作

转载请注明:http://blog.csdn.net/lastsweetop/article/details/79043654 简介 Gradle提供了与Ant的完美集成,你可以在Gradle构建中使用单个Ant任务或者全部由Ant构建。在Gradle的构建脚本里...

lastsweetop
01/12
0
0
Maven 与 Ant 基础理解

前段时间因为项目的需要,用到了WebService技术、消息中间件以及工作流;于是自然而然的下载相关的开源项目来学习与使用!CXF、ActiveMQ、JBPM! 而这三块的官方示例或其本身都是用Maven或Ant...

xudongwangjie
2013/07/12
0
1
centos5.8安装 ant

ant版本:apache-ant-1.9.2-bin 第1步:下载ant apache-ant-1.9.2-bin.tar.gz 第2步:解压 tar -zxvf apache-ant-1.9.2-bin.tar.gz 第3步:将ant复制或移动到usr目录 mv apache-ant-1.9.......

chem_dev
2015/05/27
0
0
Android ANT多渠道打包

在没用AndroidStudio的Gradle构建项目之前,多渠道打包一般都是基于ANT构建,所以在此记录一下,以供查阅! 一、文件准备 1、首先要去官网下载ANT代码。 ANT官网下载地址 2、下载ANT循环打包...

军歌
2014/11/20
0
3
Windows下搭建Jenkins+Jmeter+Ant 自动测试环境

1.JDK Jmeter Ant安装: 1.1. 安装JDK: 双击jdk-7u80-windows-x64.exe安装,默认安装到C:ProgramFilesJava目录 1.2. 安装Jmeter: 在我的电脑—E盘(建议与文档保持一致,否则需要修改配置文件...

hxlb2012
06/26
0
0
将tamcat7源码导入eclipse中

在网上看了很多的教程,总算弄好了,贴出来给大家分享一下 首先到ant官网http://ant.apache.org/bindownload.cgi下载ant工具然后随便解压到某个目录,将ant目录中的bin目录添加到环境变量pat...

那位先生
2015/02/12
0
4
Maven插件maven-antrun-plugin的使用

以下引用官方的介绍http://maven.apache.org/plugins/maven-antrun-plugin/: 一、什么是maven-antrun-plugin? 该插件提供从Maven内运行Ant任务的功能。您甚至可以将您的Ant脚本嵌入POM! ...

easonjim
2017/05/07
0
0
用Ant实现Java项目的自动构建和部署

Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。 一. 安装与配置 下载...

chunhei2008
2014/08/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Weblogic问题解决记录

问题:点击登录,页面刷新但是不进去管理界面。解决:删除cookies再登录。

wffger
20分钟前
0
0
RxJava2的错误处理方案

最近使用retrofit2 + rxKotlin2写接口访问,想尽量平铺代码,于是就想到当借口返回的状态码为「不成功」时(比如:code != 200),就连同网络错误一起,统一在onError方法中处理。想法总是好的...

猴亮屏
27分钟前
0
0
程序的调试信息

调试二进制程序时,经常要借助GDB工具,跟踪程序的执行流程,获取程序执行时变量的值,以发现问题所在。GDB能得到这些信息,是因为编译程序时,编译器保存了相应的信息。Linux下的可执行程序...

qlee
50分钟前
0
0
应用级缓存

缓存命中率 从缓存中读取数据的次数与总读取次数的比例,命中率越高越好 java缓存类型 堆缓存 guavaCache Ehcache3.x 没有序列化和反序列化 堆外缓存ehcache3.x 磁盘缓存 存储在磁盘上 分布式...

writeademo
今天
0
0
python爬虫日志(3)find(),find_all()函数

1.一般来说,为了找到BeautifulSoup对象内任何第一个标签入口,使用find()方法。 以上代码是一个生态金字塔的简单展示,为了找到第一生产者,第一消费者或第二消费者,可以使用Beautiful Sou...

茫羽行
今天
0
0
java:thread:顺序执行多条线程

实现方案: 1.调用线程的join方法:阻塞主线程 2.线程池 package com.java.thread.test;public class MyThread01 implements Runnable {@Overridepublic void run() {Syste...

人觉非常君
今天
0
0
ElasticSearch 重写IK分词器源码设置mysql热词更新词库

常用热词词库的配置方式 1.采用IK 内置词库 优点:部署方便,不用额外指定其他词库位置 缺点:分词单一化,不能指定想分词的词条 2.IK 外置静态词库 优点:部署相对方便,可以通过编辑指定文...

键走偏锋
今天
19
0
Git 2.18版本发布:支持Git协议v2,提升性能

Git 2.18版本发布:支持Git协议v2,提升性能Git 2.18版本发布:支持Git协议v2,提升性能 新版本协议的主要驱动力是使 Git 服务端能够对各种 ref(分支与 tag)进行过滤操作。 这就意味着,G...

linux-tao
今天
0
0
python浏览器自动化测试库【2018/7/22-更新】

64位py2.7版本 更新 document_GetResources 枚举页面资源 document_GetresourceText 获取指定url的内容 包括页面图片 下载地址下载地址 密码:upr47x...

开飞色
今天
42
0
关于DCL双重锁失效及解决方案

关于DCL双重锁失效及解决方案 Double Check Lock (DCL)实现单例 DCL 方式实现单例的优点是既能够在需要时才初始化单例,又能够保证线程安全,且单例对象初始化后调用getInstance方法不进行...

DannyCoder
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部