ANT学习笔记.docx

上传人:b****1 文档编号:23141433 上传时间:2023-05-08 格式:DOCX 页数:22 大小:25.83KB
下载 相关 举报
ANT学习笔记.docx_第1页
第1页 / 共22页
ANT学习笔记.docx_第2页
第2页 / 共22页
ANT学习笔记.docx_第3页
第3页 / 共22页
ANT学习笔记.docx_第4页
第4页 / 共22页
ANT学习笔记.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

ANT学习笔记.docx

《ANT学习笔记.docx》由会员分享,可在线阅读,更多相关《ANT学习笔记.docx(22页珍藏版)》请在冰豆网上搜索。

ANT学习笔记.docx

ANT学习笔记

关于ANT的起源,最权威的莫过于官方站点:

:

:

URL:

:

http:

//ant.apache.org

下面是我的学习笔记,主要是对些关键的地方的总结,还有就是一些我个人觉得比较有难度和技巧的地方的总结。

首先是一些在使用ant前应该思考的问题,基本上这些问题的答案可以指导你怎么样用好ant

buildfile怎么开始

在build过程中我需要定义哪些property和datatype

build过程中需要创建哪些目录

谁负责一个完整的创建,还有库文件,安装和运行的脚本文件,以及静态的和生成的动态的文档?

如果文件发生了变化,怎么重建?

是否需要删除所有的class文件?

是否需要删除生成的jar文件?

哪些目录应该在发布前准备好?

是否需要将源码和应用一起发布?

谁负责发布?

一、ANT的安装和配置(略)

二、ANT入门(略)

三、ANT的学习方法

       学习ANT应该从“到底要用ANT来做什么”开始,针对自己的目的来学习,只要能够满足自己的工作的需要就可以了,ANT设计为可扩展的插件式的结构,每天都有人为ANT增加新的插件,因此要将ANT的所有应用掌握是不可能的,从我们的工作需求出发,ANT主要就是用来compile,test,build,package,deloy,integrationtest,这也是我使用ANT的一种模式,我已经为这个模式写了一个模板,每次编写新的ANT的时候只需要针对具体的项目把这个模板修改一下就可以了,其实使用ANT是很简单的。

使用来build项目有两个需要重点关注的地方:

项目的组织和ANT的buildfile。

四、buildfile的结构

       对于ANT的使用者来说,理解ANT的配置文件是最重要的,ANT的XML配置文件的结构很简单,这也是ANT的一个优点,简单易懂,容易上手,ANT的配置文件主要由project,target和task三层树型结构组成如下:

     

     

           

           

--这是一个虚拟的task,具体到应用可能是ant的coretask也可能是optionaltask-->

     

关于project,target,task的概念,请参考官方文档的6UsingAnt部分。

五、ANT的DataType

       前面说到了ANT的配置文件的结构主要由project,target和task组成,其实project,target和task是ANT的四个重要的概念里面的三个,还有一个很重要的概念就是DataElements,这是ANT最容易让人搞不清楚的一个方面,它们表达的是数据而不是任务。

数据类型定义包括三个级别,project-level,target-level和task-level,有点类似于类里面定义全局变量,局部变量的方式,不同的是,这里代表了其在ant里面的可视性,如果直接定义在project节点下那就是project-level,所有的target和task都可以引用它们,以次类推。

数据类型分为两个部分:

property和DataType。

property:

标签里定义了name-value对。

DataType:

用于表示一套复杂的数据集,例如FileSet和Path

       数据类型的定义通常和target平级,也就是是数据类型一般直接在project下一层定义,当然也有一些直接定义在task里面,通常我们定义在和target平级的时候,可以在task下面引用这些数据类型。

总结ANT的数据类型如下:

argument参数:

从命令行传递到buildfile的参数

environment环境变量:

传递到buildfile的环境变量

filelist文件列表:

文件不一定存在

fileset文件集:

文件必须存在

patternset模式集

filterset过滤集

path路径,还有classpath

mapper映射:

定义了输入与输出文件之间的一套复杂的关系。

ANT的数据类型很多,以上列出的是一些常用的数据类型,下面重点总结一些我自己常用的数据类型,如environment,fileset,patternset,path

1、property属性

       一个项目可以配置很多property,property可以在在buildfile里面设置,也是可以在外部设置,在task中可以引用property,通过'{'和'}'符号来引用

ANT属性的定义原则是取第一次定义的值,也就是说相同的属性,定义了多次,只有第一次定义的值是有效的。

例如:

#override.properties

test=first

--buildfile-->

因为override.properties文件中已经设置了test的值,所以在buildfile里面第二次设置的值是无效的,test的值仍然是first

build-inproperties

ANT提供了访问系统properties的机制,也就是build-inproperites,所谓系统properties,可以查看System.getProperties返回的值,以下是我的机器上的系统properties

--listingproperties--

java.runtime.name=Java(TM)2RuntimeEnvironment,Stand...

sun.boot.library.path=D:

\jdk1.3.1_03\jre\bin

java.vm.version=1.3.1_03-b03

java.vm.vendor=SunMicrosystemsInc.

java.vendor.url=:

:

URL:

:

path.separator=;

java.vm.name=JavaHotSpot(TM)ClientVM

file.encoding.pkg=sun.io

java.vm.specification.name=JavaVirtualMachineSpecification

user.dir=G:

\server

java.runtime.version=1.3.1_03-b03

java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment

os.arch=x86

java.io.tmpdir=C:

\TMP\

line.separator=

java.vm.specification.vendor=SunMicrosystemsInc.

java.awt.fonts=

os.name=Windows2000

java.library.path=D:

\jdk1.3.1_03\bin;.;C:

\WINNT\system3...

java.specification.name=JavaPlatformAPISpecification

java.class.version=47.0

os.version=5.0

user.home=C:

\DocumentsandSettings\anonymous

user.timezone=

java.awt.printerjob=sun.awt.windows.WPrinterJob

file.encoding=GBK

java.specification.version=1.3

user.name=anonymous

java.class.path=D:

\eclipse2.1.2\plugins\org.eclipse.j...

java.vm.specification.version=1.0

java.home=D:

\jdk1.3.1_03\jre

user.language=zh

java.specification.vendor=SunMicrosystemsInc.

awt.toolkit=sun.awt.windows.WToolkit

java.vm.info=interpretedmode

java.version=1.3.1_03

java.ext.dirs=D:

\jdk1.3.1_03\jre\lib\ext

sun.boot.class.path=D:

\jdk1.3.1_03\jre\lib\rt.jar;D:

\jdk1...

java.vendor=SunMicrosystemsInc.

file.separator=\

java.vendor.url.bug=:

:

URL:

:

cgi-bin/bugreport...

sun.cpu.endian=little

sun.io.unicode.encoding=UnicodeLittle

user.region=CN

sun.cpu.isalist=pentiumi486i386

这些build-inproperties可以直接象引用properties那样,例如:

{java.home}

除此之外,ANT还提供了自身的build-inproperties:

basedir

ant.file

ant.version

ant.project.name

ant.java.version

2、Environment环境变量

假设你根据你的工作环境配置了下面的property:

/java/xalan-j_2_1_0"/>

显然你的buildfile到其他开发人员的环境下面能够成功运行的可能性很小,因为其他人的xalan很可能在其他目录,使用Environment环境变量可以解决这个问题

"/>

关键是:

设置了这个属性之后,以后可以直接引用环境变量,只要前面加一个env.的前缀就可以了。

3、fileset文件集

fileset表示了一套文件的集合,通常定义为project-level,ANT的task可以通过显式(explicit)的方式来引用或者直接嵌套fileset,如果是直接嵌套,这个时候fileset是task-level的,很多ANT的task都支持隐式(implicit)的fileset,也就是说这些TASK支持fileset的所有属性和嵌套的子元素,和filelist不同的是fileset所表示的文件必须存在。

Fileset可以定义为target-level的,并通过他们的id来引用。

fileset支持以下常用的属性(casesensitive,defaultexcludes请查阅官方文档):

dir必须指定,用于指定文件所在的目录

excludes可选,用于指定在dir指定的目录下那些不应该包括进来的文件,内容是逗号分割的文件模式(filepattern)。

excludesfile跟excludes类似,区别是只能包括一个模式,通常情况下我习惯使用excludes,因为excludes也包括了excludesfile的功能

includes可选,用于指定在dir指定的目录下那些需要包括进来的文件,内容是逗号分割的文件模式(filepattern)。

includesfile跟includes类似,区别是只能包括一个模式,通常情况下我习惯使用includes,因为includes也包括了includesfile的功能

除了上面的属性之外,fileset还可以嵌套多个(或0个)以下的patternset元素

,,,.

关于patternset的用法,我会在patternset这个部分专门总结。

例子:

等价于

等价于

也等价于

--laterinthesamebuildfile-->

4、patternset模式集

       fileset将文件合成一个组,patternset将模式合成一个组,它们的概念很接近,其实fileset依赖于patternset来选择文件,patternset可以表达为target-level,然后通过它的id来引用,也可以直接嵌套在fileset下面,那些支持隐式(implicit)的fileset的task也支持嵌套的patternset。

patternset支持includes,excludes,includesfile,excludesfile四个属性,这跟fileset的用法一样,还支持以下的嵌套的元素:

0..n个嵌套的元素,它们支持以下属性

name必须指定,内容为相应的include和exclude的模式。

if 可选,和target的if属性的用法一样

unless可选,和target的unless属性的用法一样

0..n个嵌套的元素,它们支持以下属性:

name必须指定,内容为相应的include和exclude的模式,但是只能是单个

if可选,和target的if属性的用法一样

unless可选,和target的unless属性的用法一样

例子:

patternset的定义

patternset的引用

5、path路径

       path这个DataType可以是attribute也可以是一个嵌套的元素,最常用的是classpath这个形式,但是也用于其他用途。

当作为XML元素使用的时候,path的用法非常的灵活,path支持以下attribute

location可选,表示单个文件或者单个路径,它跟path的区别是数量上的,path可以表示多个文件和路径

path可选,路径或者文件列表,用;或者:

作为分隔符

refid可选,引用其他的path的id,如果在buildfile里面会经常用到同样的path,可以将其定义为一个公用的,然后在使用到这个path的地方通过refid来引用,如果refid被指定了,path的其他attribute和其嵌套的元素都是禁止使用的。

path支持的嵌套元素如下:

0..n个嵌套的pathlelement定义在路径下的一个或者多个文件,pathelement支持location和path这两个attribute,用法和path元素一样。

0..n个嵌套的

0..n个嵌套的

classpath是path元素的一个针对类路径的特殊的元素,具有和path用样的使用语法,但是使用的场合主要是task下面。

例子:

等价于

等价于

六、目标驱动ANT

为什么说目标驱动ANT呢,这其实是我的学习方法,也就是说我使用ANT来做什么,而“做什么”就是我们的目标,也就是buildfile里面的target,只学习跟我们的目标有关的部分,其他的留到用的时候查阅有关资料,现学现卖,我学习ANT的目的是为了更好的辅助我的项目的创建,而不是要成为ANT的专家。

就我目前的工作内容出发,我需要ANT协助我完成编译,测试,打包,发布,生成文档,有些时候,还会使用到版本控制系统。

组织一个良好的目录结构是完成一次成功的build所必须的,apache的开源项目的目录结构提供了事实上(defacto)的标准,如非特殊需要,我们可以直接采取那样的目录结构。

project_home              #项目所在目录

           \src          #源码

               \java     #Java主程序代码

               \test     #Java测试程序代码

               \conf     #manifest声明文件

           \lib          #库文件目录

           \doc          #项目有关说明文档,如果是开源项目,通常该目录下是相应的webcontent

               \api      #生成项目的JavaAPI文档的地方

           \build        #用于创建的临时目录

                 \classes#编译的结果保存在该目录

           \dist         #用于发布的临时目录,通常会将build\classes下的文件打包成jar,保存在该目录下

           README        #项目的说明文件

           RELEASE       #项目的发布文件

           LICENSE       #项目的license文件

           

下面是一个和目录有关的配置的例子:

--thefollowing targetsareignored-->

编译

1。

编译器的选择

       对于,除了classic(JDK1.1/1.2)和modern(JDK1.3/1.4/1.5),还有不同的编译器可以选择,例如:

jikes,jvc,kjc,gcj,sj等等,不过我还没有用过这些编译器,默认的编译器是你用来运行ANT的JDK1.X所带的编译器,如果你想使用自己的编译器,需要如下声明,ANT运行的时候会自动用你配置的编译器来编译:

--使用jikes编译器-->

2。

的语法

       编译可以说是ANT里面最基本的任务,首先回顾一下命令行下进行编译的命令:

c:

\hellworld>javac-dbuild\classes

                  -classp

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1