Ant脚本简介与基础知识
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6624003.html
一:Ant是什么
Ant相当于Linux环境下的shell脚本,只不过是用xml文档来编写的。我们知道,在linux环境中,可以通过编写shell脚本,封装一系列繁琐而日常需要经常重复的操作。在需要进行这些操作时,只需运行这个脚本就可以批处理这些操作了。Ant脚本也是一样,只不过它一般是为了方便Java项目的编译、运行、测试、打包等工作服务的。
我们知道,日常开发工作中,一个项目除了编码外,还需单元测试、集成测试、系统测试,测试过程中可能会不断修改代码,然后再测试。这样重复而繁琐的过程是十分耗时间的。在程序编译、测试通过后,还需要打包导出,如果之后需要改变了代码,那么这些工作又要重新再做。Ant的产生,就是为了把我们从这些重复而琐碎的工作中解放出来。
二:Ant能干什么
Ant脚本,通过一个xml文件来制定一系列文件的创建删除任务、编译任务、运行任务、测试任务、打包任务等。我们可以通过ant指令执行这个xml脚本,来批处理这些任务,这样就可以实现“一键”完成编码后的编译、运行、测试、打包导出等工作,使我们可以更加专注于代码的编写与质量。
三:Ant的使用
1:安装配置
下载地址:http://ant.apache.org/
安装:解压得到 apache-ant文件夹,这个就是Ant的安装目录了,复制到你想安置的地方即可。
配置:与设置Java运行环境类型:在系统环境变量中添加:ANT_HOME= XX:\XX\apache-ant (apache-ant所在路径)
在Path环境变量值后面加上:XX:\XX\apache-ant\bin (apache-ant\bin所在路径)
打开cmd,输入 ant ,如果出现以下结果则说明Ant配置成功:
2:编写Ant脚本
一个Ant脚本即可完成至少一个项目的编译、运行、测试、打包等工作。Ant脚本同一命名:build.xml
脚本内容:
1)project 节点:一个脚本相当于一个project,用一个project来统领脚本中的众多操作命令。用这个project对象来指向脚本本身的基本属性。
project 元素是 Ant 构件文件的根元素, Ant 构件文件至少应该包含一个 project 元素,否则会发生错误。
● name 属性:用于指定 project 元素的名称。
● default 属性:用于指定 project 默认执行时所执行的 target 的名称。
● basedir 属性:用于指定基路径的位置。该属性没有指定时,使用 build.xml的目录作为基准目录。
2)property节点:属性节点,相当于Ant脚本中的变量,通过属性值来携带具体内容。在每个任务中通过 ${属性名} 访问其属性值,从而获取内容。
Ant 提供了一些内置的属性,它能得到的系统属性的列表与 Java 文档中 System.getProperties() 方法得到的属性一致。Ant 还提供了一些它自己的内置属性:
basedir: project 基目录的绝对路径;
ant.file: buildfile的绝对路径;
ant.version: Ant 的版本信息;
ant.project.name: 当前指定的project的名字;
ant.java.version: Ant 检测到的JDK版本 。
3)target节点:任务节点。一个target可以制定一个或内嵌更多任务。
target为ant的基本执行单元,它可以包含一个或多个具体的单元/任务。多个target 可以存在相互依赖关系,target的执行顺序可以有两种方式控制:一种是依赖,depends属性,AdependsB,则B先执行;另一种就是内嵌:在target A中通过 <ant target="B">命令执行B任务。
● name 属性:指定 target 元素的名称,这个属性在一个 project 元素中是唯一的。我们可以通过指定 target 元素的名称来指定某个 target 。
● depends 属性:用于描述 target 之间的依赖关系,Ant 会依照 depends 属性中 target 出现的顺序依次执行每个 target ,被依赖的target 会先执行。
● if 属性:用于验证指定的属性是存在,若存在,所在 target 才会被执行。
● unless 属性:该属性的功能与 if 属性的功能正好相反,若不存在,所在 target 将会被执行。
● description 属性:该属性是关于 target 功能的简短描述和说明。
4)copy命令
copy主要用来对文件和目录的复制功能。
5)delete命令
对文件或目录进行删除。
6) mkdir 命令
创建目录。
7)move 命令
移动文件或目录,
8)echo 命令
在控制台输出信息。它包括 message 、 file 、 append 和 level 四个属性。
9)jar 命令标签:打包成jar包并导出
● destfile:打包导出的JAR路径名,即:导出jar包到哪里。
● basedir:被打包的文件,一般是编译通过的文件。
● includes表示被归档的文件类型。
● exchudes表示被排除的文件类型。
● compress表示是否压缩。
(打包命令标签还有war、tgz,解压包命令uzip)
10)javac 命令标签:编译标签
该标签用于编译一个或一组java文件。
● srcdir表示源程序的目录。
● destdir表示class文件的输出目录。
● include表示被编译的文件的模式。
● excludes表示被排除的文件的模式。
● classpath表示所使用的类路径。
● debug表示包含的调试信息。
● optimize表示是否使用优化。
● verbose 表示提供详细的输出信息。
● fileonerror表示当碰到错误就自动停止。
11)java 命令标签:运行标签
该标签用来执行编译生成的.class文件。
● classname 表示将执行的类名。
● jar表示包含该类的JAR文件名。
● classpath所表示用到的类路径。
● fork表示在一个新的虚拟机中运行该类。
● failonerror表示当出现错误时自动停止。
● output 表示输出文件。
● append表示追加或者覆盖默认文件。
12)arg 参数标签:可以用于定义测试用例,向运行程序进行输入,观察输出
通过<arg>元素向其传递命令行参数。
● values 是一个命令参数。
● file 表示一个参数的文件名。
● line 表示用空格分隔的多个参数列表。
● pathref 引用的path(使用path元素节点定义path)的id
● prefix 前缀
● suffix 后缀
13)path节点:表示一个路径
path元素用来表示一个类路径,不过它还可以用于表示其他的路径。
● location 表示一个文件或目录。Ant在内部将此扩展为一个绝对路径。
● refid 是对当前构建文件中某处定义的一个path的引用。
● path表示一个文件或路径名列表。
3:脚本基本结构解析
<?xml version="1.0" encoding="UTF-8"?> <!--创建project-->
<project default="默认执行的target" basedir="."> <!--创建属性标签:携带数据,在下面的target中使用-->
<property name="XX" XX="xx" /> <!--创建任务-->
<target name="任务名" depends="依赖哪个任务">
<命令标签 属性=“属性值:指明命令执行的具体内容”/>
</target>
</project>
4:执行脚本
Ant脚本简介与基础知识的更多相关文章
- 学习 shell脚本之前的基础知识
转载自:http://www.92csz.com/study/linux/12.htm 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写sh ...
- 转载:shell脚本之前的基础知识
转载地址:http://www.92csz.com/study/linux/12.htm 第十二章 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果 ...
- Linq的简介和基础知识学习
学习LINQ之前,我们要知道LINQ是干什么,解决什么问题的,怎样学习? 一.LINQ简介 1.什么是LINQ? 什么是LINQ?LINQ中文翻译为语言集成查询(Language Integrated ...
- 学习shell脚本之前的基础知识
日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位 ...
- shell脚本之前的基础知识
日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位 ...
- Redis简介及基础知识
一.Redis简介 Redis是什么?两句话可以做下概括: 1. 是一个完全开源免费的key-value内存数据库 2. 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 string( ...
- JavaScript简介及基础知识(1)
1.JavaScript是什么—它是个脚本语言,需要宿主文件,它的宿主文件是html文件. Javascript是一种脚本语言,比HTML要复杂.不过即便你先前不懂编程,也不用担心,因为Javascr ...
- MongoDB简介及基础知识
MongoDB简介 一.MongDB是一个高性能,开源,无模式的文档型NosQL数据库.主要功能特性: 1.文件存储格式BSON(一种json的扩展) 2.模式自由,数据格式不受限了表的结构 3.支持 ...
- 第十二章 学习 shell脚本之前的基础知识
http://www.92csz.com/study/linux/12.htm [什么是shell] 简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具.实际上,在shell和 ...
随机推荐
- Android之2次打开添加友盟统计代码,后缀会添加广告
这里首先列明步骤, 做一个标识仅此而已. 1. 首先使用apktool来反编译你待需要加入友盟统计的apk包, 具体如何使用与配置apktool, 请参考我关于apktool配置的文章. 2. 然后自 ...
- Java比较两个Date日期的大小
import java.util.*; import java.text.ParseException; import java.text.SimpleDateFormat; class Test{ ...
- Makefile:160: recipe for target 'all' failed (Ubuntu 16.06 + Opencv3.2)解决办法
前言 之前一直用的opencv 好好的,今天安装了anaconda之后,python中的opencv不能用了,即便是拷贝cv2.so之后也是不能用,问题如下: 根本原因 安装anaconda之后,很多 ...
- Dubbo服务化最佳实践
分包 建议将服务接口,服务模型,服务异常等均放在 API 包中,因为服务模型及异常也是 API 的一部分,同时,这样做也符合分包原则:重用发布等价原则(REP),共同重用原则(CRP). 如果需要,也 ...
- JavaScript:Events
ylbtech-JavaScript:Events 1.返回顶部 JavaScript 事件参考手册 事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行. 事件句柄 HTML 4.0 的新 ...
- android中解决“Dex Loader] Unable to execute dex: Multiple dex files define LXXX”错误
原因 1. 出现这种问题的主要原因:那就是你的libs下面引用了两个相同功能的包,可能这两个包的版本不一样而已,去掉一个吧,选择一个合适的版本. 2.build path里面包重复引用.
- knockout 多值绑定
knockout 这种东西现在已经很流行了,相信很多人对它的使用都已经很熟悉了,最近项目开发中发现knockout 绑定用的有些不怎么充分,发现整个page的code 有点累赘. 1.在绑定click ...
- Neo4j 2.0 生产环境集群搭建
一.在windows上搭建Neo4j ha cluster的配置方法: 例如:建立集群的三台机器的ip分别为:10.230.9.91,10.230.9.92,10.230.9.93. 10.230.9 ...
- IOS开发之自定义UITabBarController
UITabBarController是开发中经常会用到的一个视图控制器,但是默认的UITabBarController经常不能够完全满足我们的需求,所以我们经常需要自定义一个UITabBarContr ...
- java 利用HttpURLConnection方式获取restful格式的服务数据
/** * @Author: * @Description:利用HttpURLConnection方式获取restful格式的服务数据 * @Date: */ private static List& ...