Java自动化工具Ant的基础使用教程_java

Ant 是什么?
Apache Ant 是一个基于Java 的生成工具。据最初的创始人 James Duncan Davidson 介绍,这个工具的名称是 another neat tool(另一个整洁的工具) 的首字母缩写。

Ant的作用:
生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像形式)。随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本,这就变得更加重要.

Ant的优势:
Ant是一种基于Java的build工具。理论上来说,它有些类似于(Unix)C中的make ,但没有make的缺陷。目前的最新版本为:Ant 1.8.4。  既然我们已经有了make, gnumake, nmake, jam以及其他的build工具为什么还要要一种新的build工具呢?因为Ant的原作者在多种(硬件)平台上开发软件时,无法忍受这些工具的限制和不便。类似于make的工具本质上是基于shell(语言)的:他们计算依赖关系,然后执行命令(这些命令与你在命令行敲的命令没太大区别)。这就意味着你可以很容易地通过使用OS特有的或编写新的(命令)程序扩展该工具;然而,这也意味着你将自己限制在了特定的OS,或特定的OS类型上,如Unix.
Ant就不同了。与基于shell命令的扩展模式不同,Ant用Java的类来扩展。(用户)不必编写shell命令,配置文件是基于XML的,通过调用target树,就可执行各种task。每个task由实现了一个特定Task接口的对象来运行。
Ant 定义生成文件之间的依赖关系,它使用跨平台的 Java 类。使用 Ant,您能够编写单个生成文件,这个生成文件在任何 Java 平台上都一致地操作(因为 Ant 本身也是使用 Java 语言来实现的),这就是 Ant 最大的优势

Ant生成文件剖析:
Ant 没有定义它自己的自定义语法;相反,它的生成文件是用 XML 编写的。存在一组 Ant 能够理解的预定义 XML 元素,而且还可以定义新的元素来扩展 Ant 的功能。每个生成文件由单个 project 元素组成,该元素又包含一个或多个 target 元素。一个目标(target)是生成过程中已定义的一个步骤,它执行任意数量的操作,比如编译一组源文件。并且这些操作本身是由其他专用任务标签执行的然后这些任务将根据需要被分组到各个 target 元素中。一次生成过程所必需的所有操作可以放入单个 target 元素中,但是那样会降低灵活性。将那些操作划分为逻辑生成步骤,每个步骤包含在它自己的 target 元素中,这样通常更为可取。这样可以执行整体生成过程的单独部分,却不一定要执行其他部分。
例如,通过仅调用某些目标,您可以编译项目的源代码,却不必创建可安装的项目文件
顶级 project 元素需要包含一个 default 属性,如果在 Ant 被调用时没有指定目标,这个属性将指定要执行的目标。然后需要使用 target 元素来定义该目标本身。

下面是一个最基本的生成文件:

<?xml version="1.0"?>
 <project default="init">
 <target name="init">
  </target>
</project> 

Ant基本使用方式:
1. 配置环境变量:
         ANT_HOME: C:\ant-1.8              -----> Ant的安装/解压目录路径
         PATH后追加: C:\ant-1.8\bin       ------>Ant中的BIN目录路径        
2. 确认环境变量配置是否成功
         打开CMD窗口,然后输入命令:  ant:
         看到如下显示:

 由于Ant构建时需要默认有build.xml文件,因此有如上的提示,至此,说明Ant的环境已经配置成功.

3. 使用Ant创建一个名为HelloWorld的文件夹:
 首先需要编辑build.xml:

<?xml version="1.0"?>
 <project default="init">
 <target name="init">
  <span style="color:#FF0000;"><mkdir dir="HelloWorld"></span>
 </target>
</project> 

然后切换到build.xml文件所在的目录,输入ant,若有如下提示,则创建文件夹成功:
(init 部分相当于 日志的输出)

 4. 也可以使用ant创建多级嵌套的文件目录
  只需要在build.xml文件中进行修改:

<?xml version="1.0"?>
 <project default="init">
 <target name="init">
  <span style="color:#FF0000;"> <mkdir dir="HelloWorld\a\b\c"/></span>
 </target>
</project> 

 
5. 删除如上的多级目录:

<?xml version="1.0"?>
 <project default="init">
 <target name="init">
  <span style="color:#FF0000;"><delete dir="HelloWorld"/></span>
 </target>
</project> 

注意:此处路径只用输入最高级目录路径,这也正是ANT工具的强大之处:
  Java中如果要删除目录,除非该目录为空才可以删除,否则就要逐步进行删除.
  而使用Ant工具,则可以直接删除含有子目录的文件夹.

再看一个示例XML文件:  

<?xml version="1.0"?>
<project default="init" name="Project">
<description>
A simple project introducing the use of descriptive tags in Ant build files.
</description>
<!-- XML comments can also be used -->
<target name="init" description="Initialize Argon database">
<!-- perform initialization steps here -->
</target>
</project> 

可以看出,XML 注释可以使用在整个生成文件中以提高清晰性。而且,Ant 定义了它自己的description 元素和 description 属性,它们可用于提供更结构化的注释。

Ant属性:
Ant 中的属性类似编程语言中的变量,它们都具有名称和值。然而与通常的变量不同,一经设置,Ant 中的属性就不可更改;它们是不可变的,就像 Java 语言中的 String 对象。 这起初看来似乎很有限制性,但这样是为了遵循 Ant 的简单原则: 毕竟,它是一个生成工具,而不是一种编程语言。如果尝试给某个现有属性赋予一个新的值,这不会被看作是一个错误,但是该属性仍然会保留其现有值

定义与使用属性:

<property name="metal“ value="beryllium"/>

为了在生成文件的其他部分引用这个属性,使用以下语法:

复制代码 代码如下:

${metal}

例如,为了使用这样一个值,它是另一个属性的值的组成部分,将标签写成下面这样

<property name="metal-database" value="${metal}.db"/>

location属性:
属性经常用于引用文件系统上的文件或目录,但是对于使用不同路径分隔符(例如,/ 与 \)的平台来说,这样可能在跨越不同平台时导致问题。Ant 的 location 属性专门设计用于以平台无关的方式包含文件系统路径。像下面这样使用 location 来代替value:

<property name="database-file" location="archive/databases/${metal}.db"/>

用于 location 属性的路径分隔字符将被转换为当前平台的正确格式;而且由于文件名是相对的,它被认为是相对于项目的基目录。我们同样可以容易地写为下面这样:

<property name="database-file" location="archive\databases\${metal}.db"/>

这个标签的两个版本都会在不同的平台具有相同的行为.

定义依赖关系:
生成一个项目一般需要许多步骤 —— 例如首先要编译源代码,然后将它打包为 Java 归档文件
(Java Archive File,JAR)。这其中许多步骤都具有清楚定义的顺序 —— 例如,在编译器从源代码生成类文件之前,您不能打包类文件。与顺序指定 target 所不同的是,Ant 采用一种更灵活的方法来定义 依赖关系 。每个目标的定义依据的是在它能够执行之前必须完成的其他所有目标。这是使用 target 元素的 depends 属性来实现的

<target name="init"/>
<target name="preprocess" depends="init"/>
<target name="compile" depends="init,preprocess"/>
<target name="package" depends="compile"/>

这种方法允许您执行项目任何阶段的生成过程;Ant 会首先执行已定义的先决阶段。在上面的例子中,如果让 Ant 完成 compile 步骤,它将判断出需要首先执行 init 和preprocess 这两个目标。init 目标不依赖其他任何目标,因此它将首先被执行。然后 Ant 检查 preprocesstarget,发现它依赖 init 目标;由于已经执行了后者,Ant 不会再次执行它,因而开始执行 preprocess 目标。最后可以执行 compile 任务本身。
注意目标出现在生成文件中的顺序并不重要:执行顺序是由depends 属性唯一确定的。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
ant
java自动化测试工具、java自动化部署工具、java自动化构建工具、java 自动化重构工具、java自动化打包工具,以便于您获取更多的相关知识。

时间: 2024-10-25 22:54:07

Java自动化工具Ant的基础使用教程_java的相关文章

Java构建工具Ant之第一个build.xml

ANT是一个构建工具,它有跨平台.操作简单. 安装简单.占用资源少等特点,它只有一个配置文件build.xml,我们要做的事情就是在build.xml中去定义我们想要做的事情,ANT它本身有 很多命令和语法,笔者刚接触时也是比较头大,后面慢慢去学习查询,基本上了解了整个build.xml包含的内容,最好的学习办法就是查看例子,通过例子 去熟悉不同标签里面的属性和参数的含义,我们不需要全部都要记住,只要在使用的时候知道如何去查询即可. 下面来构建我们第一个build.xml文件,这只是简单的开始:

Java线程编程中Thread类的基础学习教程_java

一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于后面对Thread类中的方法的理解. 线程从创建到最终的消亡,要经历若干个状态.一般来说,线程包括以下这几个状态:创建(new).就绪(runnable).运行(running).阻塞(blocked).time waiting.waiting.消亡(dead). 当需要新起一个线程来执行某个子任务时,就创建了一个线程.但是线程创建之后,不会立即进入就绪状态,因为线程的运行需要一些条件(比如内

Java的JSON转换类库GSON的基础使用教程_java

Gson (GitHub:https://github.com/google/gson)是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. Gson里最重要的对象有2个Gson 和 GsonBuilder. Gson有2个最基本的方法 (1)toJson() – 转换java 对象到JSON (2)fromJson() – 转换JSON到java对象 编写实体类: public cla

Java开发者结合Node.js编程入门教程_java

首先, 我必须得承认,作为一个有着十多年开发经验的java开发者,我已经形成了解决绝大部分问题的固有套路,尽管它们很多时候显得笨重和繁琐. 比如说如果要读取一个文件,那应该就是初始化一个BufferedReader 实例并传入一个FileReader,这几乎是顺理成章的,我在很多自认为算得上"企业级"的项目中编写这样的代码并且很享受这个过程,可以说我就是一个对其他语言不屑一顾的java脑残粉.      如果你正在阅读这篇博文,你可能已经陷入了我多年前早就陷入的一个误区,作为一名合格的

用JAVA 设计生成二维码详细教程_java

教你一步一步用 java 设计生成二维码 在物联网的时代,二维码是个很重要的东西了,现在无论什么东西都要搞个二维码标志,唯恐落伍,就差人没有用二维码识别了.也许有一天生分证或者户口本都会用二维码识别了.今天心血来潮,看见别人都为自己的博客添加了二维码,我也想搞一个测试一下. 主要用来实现两点: 1. 生成任意文字的二维码. 2. 在二维码的中间加入图像. 一.准备工作. 准备QR二维码3.0 版本的core包和一张jpg图片. 下载QR二维码包. 首先得下载 zxing.jar 包, 我这里用的

Java日志软件Log4j的基本使用教程_java

1.概述 1.1背景在我们的日常开发中,日志记录非常重要.在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:跟踪代码运行时轨迹,作为日后审计的依据:担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息. 1.2简介Log4j(log for java)是Apache的一个开放源代码项目,它提供了一种细腻的日志管理方式.通过一个配置文件,我们可以多选择的控制每条日志的输出格式和目的地.通过定义信息的级别,我们也可以

Java开源工具iText生成PDF简单实例_java

iText下载页面: http://sourceforge.net/projects/itext/files/ 1.创建简单的PDF文件 package console.pdf; import java.io.FileNotFoundException; import java.io.FileOutputStream; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com

Java中的Graphics2D类基本使用教程_java

Java语言在Graphics类提供绘制各种基本的几何图形的基础上,扩展Graphics类提供一个Graphics2D类,它拥用更强大的二维图形处理能力,提供.坐标转换.颜色管理以及文字布局等更精确的控制.绘图属性 Graphics2D定义了几种方法,用于添加或改变图形的状态属性.可以通过设定和修改状态属性,指定画笔宽度和画笔的连接方式:设定平移.旋转.缩放或修剪变换图形:以及设定填充图形的颜色和图案等.图形状态属性用特定的对象存储. 1. stroke属性 stroke属性控制线条的宽度.笔形

Java实现选择排序算法的实例教程_java

选择排序概念 选择排序也是一种交换排序算法,和冒泡排序有一定的相似度,因此个人认为选择排序可以视为冒泡排序的一种改进算法.它的思路是这样的: 设现在要给数组arr[]排序,它有n个元素. 1对第一个元素(Java中,下标为0)和第二个元素进行比较,如果前者大于后者,那么它一定不是最小的,但是我们并不像冒泡排序一样急着交换.我们可以设置一个临时变量a,存储这个目前最小的元素的下标.然后我们把这个目前最小的元素继续和第三个元素做比较,如果它仍不是最小的,那么,我们再修改a的值.如此直到和最后一个元素