dataType—ant入门指南(6)
来源:互联网 发布:优易数据交易平台 编辑:程序博客网 时间:2024/04/29 23:11
dataType—ant入门指南(6)
这是ant理论部分的最后一章,也是非常重要的一章,明河将介绍ant中常用的几种dataType的用法。
dataType可以理解为复杂数据集合,比如特定规则的文件列表集合。
ant的所有dataType标签
- fileset:定义一个文件集合列表,这些文件必须确实存在
- filelist:定义一个文件集合列表,这些文件无需确实存在
- path:以某种在不同操作系统间可移植的方式指定路径
- patternset:将一组模式分组在一起
- argument:对于由一个ant构建文件调用的程序,向其传递命令行参数(标签名是arg)
- filterlist:将一组过滤器分组在一起
- mapper:定义一组输入文件和一组输出文件间的复杂关系
- environment:于由一个ant构建文件调用的程序,向其传递环境变量
必须掌握的是:fileset、filelist、path、argument、patternset。
- 点此下载
fileset
fileset和filelist(下面会讲到),功能上非常相近,都是用于获取一组文件列表,二者的不同之处在于fileset内的文件必须存在,filelist则没这要求;fileset的属性也比filelist更为的丰富,所以功能上更为的强大,一般使用fileset来获取文件。
属性
说明
dir
fileset的基目录
dir
fileset的基目录
casesensitive
如果为false,那么匹配文件名时不区分大小写,默认为true
defaultexcludes
是否使用默认的排除模式,默认为true。默认的排除模式会把一些版本控制的文件夹或文件排除
excludes
排除指定的文件列表(用逗号隔开)
excludesfile
排除指定的文件
includes
需要包含的文件列表(用逗号隔开)
includesfile
包含指定的文件
接下来来看几个demo,假设demo目录如图所示:
任务1:合并uploader目录下的所有文件
<dirname property="current.dir" file="${ant.file.uploader}"/> <property name="uploader.dir" location="${current.dir}/uploader" /> <target name="build-all"> <echo>dir:${current.dir}</echo> <concat destfile="uploader.js" encoding="utf8" outputencoding="utf8"> <fileset dir="${uploader.dir}" includes="**/*.js" /> </concat> </target>
concat(合并)这个任务标签,明河之前有讲过了,与之前写的demo不同的是,concat内增加了fileset。由于我们的需求是合并uploader目录下的所有js,所以uploader下文件不少,明显不可能单独一个个写path,这时候就需要用到fileset,获取文件列表集合。
fileset会获取${uploader.dir}(该属性引用指向uploader目录)下所有的js,通过includes=”**/*.js”包含所有js。
也许你会对**/*感到疑惑,明河下面做个说明。
包含和排除模式语法:
- *:匹配0或多个字符,比如*.js匹配minghe.js、taobao.js但不匹配minghe.css
- ?:匹配1个字符,比如mingh?.js,匹配minghe.js、minghg.js,但不匹配minghe36.js
- **:匹配0或多个目录,比如/minghe/**,匹配/minghe/下的任意目录,**/*.js匹配任意目录下的所有js文件
使用patternset标签
除了使用属性外,fileset还支持0到n个嵌套patternset元素,比如<exclude></exclude>和<include></include>等,关于patternset会在下面讲解到,这里先贴出修改后的demo。
<target name="build-all2"> <echo>build-all2</echo> <concat destfile="uploader2.js" encoding="utf8" outputencoding="utf8"> <fileset dir="${uploader.dir}" > <include name="**/*.js" /> <exclude name="demo/*.js" /> </fileset> </concat> </target>
这里的demo代码,与上一个demo相比,增加了一个排除文件模式,demo目录下的js文件,显然我们不需要,可以通过
标签予以排除filelist
filelist通常与dependset任务一同使用,dependset任务用于将一个或多个源文件和1个或多个目标文件相比较,如果源文件存在更新或者删除,那么所有目标文件将将被删除。dependset用于确保文件的依赖性。
filelist的属性
属性
说明
dir
fileset的基目录
files
用逗号隔开的文件列表
refid
对某处定义的一个的引用,这对于希望多次复用一个定义的文件列表,非常有用。
filelist的使用率不高,明河这里偷个懒,不再制作个独立的demo。
path
path在java打包编译中常用到,可以以属性(多个路径用冒号或分号隔开)或嵌套元素的方式。
path用于转换路径为当前用户操作系统可兼容的路径。(path dataType并不只有
元素,还有等形式标签)。
当path以标签的形式出现时,拥有以下属性:
属性
说明
location
表示一个文件或目录
path
一个文件和路径名列表,以冒号或分号隔开
refid
定义path的一个引用
patternset
patternset与fileset是紧密结合的,常作为fileset的嵌套元素出现,比如和exclude标签。
<target name="build-all3"> <echo>build-all3</echo> <concat destfile="uploader2.js" encoding="utf8" outputencoding="utf8"> <fileset dir="${uploader.dir}" > <include name="**/*.js" if="test" /> <exclude name="demo/*.js" unless="demo" /> </fileset> </concat> </target>
留意代码中的if和unless属性,if=”test”可以理解为如果存在test属性,就读取文件,unless=”demo”可以理解为只有未设置demo属性时才读取文件。
argument
arg标签在apply、exec、java标签内嵌套,用于传递命名行参数。
先贴出日后会说明的demo代码:
<apply executable="java" verbose="true" dest="${combines.dir}" failonerror="true" parallel="false"><fileset dir="${combines.dir}" includes="**/*.js"/><arg line="-jar"/><arg path="${current.dir}/closure-compiler/compiler.jar"/><arg line="--charset gbk"/><arg value="--warning_level"/><arg value="QUIET"/><arg value="--js"/><srcfile/><arg value="--js_output_file"/><targetfile/><mapper type="regexp" from="^(.*)\.source\.js$" to="\1-min.js"/></apply>
上述代码是调用google压缩器压缩js源文件,apply嵌套多个arg标签,比如下面的代码:
<arg path="${current.dir}/closure-compiler/compiler.jar"></arg><arg line="--charset gbk"></arg><arg value="--warning_level"></arg><arg value="QUIET"></arg><arg value="--js"></arg>
执行时会合并成一个命名行,类似–charset gbk –warning_level QUIET –js。
明河结语
理论部分讲解结束,接下来的教程将是ant的实战部分,比如ant结合yahoo和google的压缩器。
转自:http://www.36ria.com/4591
- dataType—ant入门指南(6)
- ant入门指南(6)
- property—ant入门指南(5)
- ant入门指南(1)
- ant入门指南(2)
- ant入门指南(3)
- ant入门指南(4)
- ant入门指南(5)
- 构建文件入门—ant入门指南(2)
- 构建文件入门—ant入门指南(2)
- 认识基础任务标签—ant入门指南(3)
- 项目build实战—ant入门指南(9)
- ant实用手册(二)——ant中的Datatype
- ant结合jsdoc构建js文档—ant入门指南(8)
- 认识基础任务标签(上)—ant入门指南(3)
- 认识基础任务标签(下)—ant入门指南(4)
- ant入门指南—web前端开发七武器(1)
- web前端开发七武器—ant入门指南(1)
- 条款03:尽可能使用const
- POJ 1154 LETTERS
- Yii --EClientScript 扩展,css,js文件代码压缩合并加载
- android 动态背景的实现以及SurfaceView中添加EditText控件
- CodeCounter代码统计
- dataType—ant入门指南(6)
- Maven学习笔记十三:Maven坐标和依赖(依赖调解)
- Linux-stand alone与super daemon
- C++之枚举类型的作用
- PHP创建RSS新闻列表
- Maven学习笔记十五:Maven坐标和依赖(最佳实践之排除依赖)
- android ListView和GridView拖拽移位具体实现及拓展
- Maven学习笔记十六:Maven坐标和依赖(最佳实践之归类依赖)
- Maven学习——修改Maven的本地仓库路径