Ant :DataType
Ant datatype
Ant中,除了Property可以做为Task执行时使用的值以外,Ant也提供了很多的数据类型。
下面就对这些数据类型做简要的介绍:
PatternSet
PatternSet用于定义一个pattern集合,同时可以指定一个id属性,以供在其它地方引用它。Patterset可以定义在project下,也可以定义在target下。
使用patternset时,有两种方式:
·使用includes,includesfile,excludes,excludesfile属性
Attribute |
Description |
includes |
指定要包括的文件名的pattern |
includesfile |
一个包括的文件的名称 |
excludes |
指定要排除的文件名的pattern |
excludesfile |
一个要排除的文件名 |
多个pattern之间用以逗号或者空格作为分隔符。
·使用include,exclude|includesfile,excludesfile子元素
Include或者exclude元素有下列属性:
Attribute |
Description |
Required |
name |
the pattern to in/exclude. |
Yes |
if |
Only use this pattern if the named property is set. |
No |
unless |
Only use this pattern if the named property is not set. |
No |
<?xml version="1.0" encoding="UTF-8" ?> <project default="main"> <!--define a ptattern set with includes attribute--> <patternset id="java_files_pattern" includes="**/*.java,**/*.class"> </patternset> <!--define a ptattern set with include subelement--> <patternset id="java_files_pattern2"> <include name="**/*.java"/> <include name="**/*.class"/> </patternset> <target name="main"> <echo>java_files_pattern:</echo> <echo>${toString:java_files_pattern}</echo> <echo>java_files_pattern2</echo> <echo>${toString:java_files_pattern2}</echo> </target> </project> |
上面的代码段中使用了${toString:refid},Ant中有些数据类型(例如PatternSet)是支持toString方法的,使用${toString:refid}可以执行refid对应的toString方法。
测试结果如下:
main: [echo] java_files_pattern: [echo] patternSet{ includes: [**/*.java, **/*.class] excludes: [] } [echo] java_files_pattern2 [echo] patternSet{ includes: [**/*.java, **/*.class] excludes: [] } BUILD SUCCESSFUL |
在实际的应用中,显式地使用PatternSet本身用的并不多见。因为FileSet隐式的包括了PatternSet,所以常见的用法都是在FileSet。另外所有隐含FileSet的数据类型,同样也等于隐含了PatternSet。
FileSet
大多数构建过程中,都会操作文件集合,包括编译、复制、删除、打包等操作。这类构建流程中,非常重要,因此Ant提供了一种FileSet的Datatype。
文件集是以一个单独的目录做为根目录的文件集合。默认情况下,由根目录指定的文件集合包含了整个目录树下的所有的文件,其中包括了所有子目录中的所有文件。
Attribute |
Description |
Required |
dir |
根目录 |
必须指定 两者之一 |
file |
指定单一文件 |
|
defaultexcludes |
参考patternset |
No |
includes |
参考patternset |
No |
includesfile |
参考patternset |
No |
excludes |
参考patternset |
No |
excludesfile |
参考patternset |
No |
casesensitive |
是否大小写敏感。默认是true |
No |
followsymlinks |
Shall symbolic links be followed? Defaults to true. See the note below. |
No |
erroronmissingdir |
Specify what happens if the base directory does not exist. If true a build error will happen, if false, the fileset will be ignored/empty. Defaults to true. Since Apache Ant 1.7.1 (default is true for backward compatibility reasons.) |
No |
在使用FileSet时,要么是只有一个文件,指定file属性即可。要么是多个文件,指定一个dir即可。
另外,可以在<fileset />中内嵌<patternset /> 和<slector />
下面是官方给出的例子:
使用<patternset />的子元素: <fileset dir="${server.src}" casesensitive="yes"> <include name="**/*.java"/> <exclude name="**/*Test*"/> </fileset> 使用内嵌<patternset/>: <fileset dir="${server.src}" casesensitive="yes"> <patternset id="non.test.sources"> <include name="**/*.java"/> <exclude name="**/*Test*"/> </patternset> </fileset> 使用selector: <fileset dir="${server.src}" casesensitive="yes"> <filename name="**/*.java"/> <not> <filename name="**/*Test*"/> </not> </fileset> |
Selector
Patterset 是根据文件名进行匹配的,有时你想要删除过期的文件或者向远程站点上传发生变化的文件。你想用什么办法删除文件而保留目录呢?selector可以对细化对文件的选择。
从上图也是可以看出selector分为两类:常用的选择器、选择器容器。
选择器容器中,可以有多个选择器。
常用选择器:
|
常用选择器容器:
|
有关selector的使用,可以参考官方文档:
http://ant.apache.org/manual/Types/selectors.html
FileList
FileList 是一个List,是一个有序集合。如果需要使用有序文件集合时,可以使用这个。
Attribute |
Description |
Required |
dir |
根目录 |
Yes |
files |
文件列表,使用空格或者逗号分隔 |
如果没有内嵌<file />, 就必须指定这个属性。 |
<filelist id="docfiles" dir="${doc.src}" files="foo.xml bar.xml"/> <filelist id="docfiles" dir="${doc.src}"> <file name="foo.xml"/> <file name="bar.xml"/> </filelist> |
Path
Path用于指定路径,例如环境变量中的PATH、ClassPath。在定义path时,使用:或者;进行分隔。(备注:写build.xml时,可以使用:或者;。由Ant自动的根据操作系统转为相应的分隔符。)
<classpath> 与<path />的方法是一样的。<path />下可以有<pathelement />以及其它的资源集合(例如:fileset,filelist,dirset,path等)
<pathelement> 使用说明
Pathelement可以指定两种属性:
·location 用于指定一个文件或者目录。可以是相对路径,也可以是绝对路径。如果是相对路径,则是相对于project的basedir。
·path 由,或者;分隔的多个location。
<classpath> <pathelement path="${classpath}"/> <pathelement location="lib/helper.jar"/> </classpath> |
<classpath> <pathelement path="${classpath}"/> <fileset dir="lib"> <include name="**/*.jar"/> </fileset> <pathelement location="classes"/> <dirset dir="${build.dir}"> <include name="apps/**/classes"/> <exclude name="apps/**/*Test*"/> </dirset> <filelist refid="third-party_jars"/> </classpath> |
每个path,classpath也有2个属性:id,refid。
id用于被其它地方使用refid引用。
<project ... > <path id="project.class.path"> <pathelement location="lib/"/> <pathelement path="${java.class.path}/"/> <pathelement path="${additional.path}"/> </path> <target ... > <rmic ...> <classpath refid="project.class.path"/> </rmic> </target> <target ... > <javac ...> <classpath refid="project.class.path"/> </javac> </target> </project> |
Regexp
Regexp代表一个正则表达式,可以指定id属性,供其它地方(task或者selector等)使用。
Attribute |
Description |
Required |
pattern |
regular expression pattern |
Yes |
Ant :DataType的更多相关文章
- Ant :Property
Property Ant 内置的Property 系统属性 Ant附加的属性 自定义Property Ant :Property properties是由key-value组成的集合,就是Java中 ...
- Ant:build.xml 结构
Ant build.xml 结构 project target task data property datatype v\:* {behavior:url(#default#VML);} o\:* ...
- Ant:Ant 入门
背景 自从有了 Maven 以后,Ant 视乎就不流行了,不过 Ant 还是有其应用场景的,Ant 的思想比较简洁,如下: 一个 project 包含多个 target(类似成员方法). 一个 tar ...
- Luogu P1463 [HAOI2007]反素数ant:数学 + dfs【反素数】
题目链接:https://www.luogu.org/problemnew/show/P1463 题意: 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x ...
- CORS基础要点:关于dataType、contentType、withCredentials
事实上,面试时我喜欢问跨域,因为多数开发者都知道它并且常用,而我希望能从面试者的回答中知道他在这个问题的深入程度,进一步看看面试者研究问题的思维方式及钻研精神,然而确实难到了很多人,当然这也不是面试通 ...
- 我的套路(windows):Jenkins+Jmeter+Ant持续集成
前期准备: 1.Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html 命令行输入:java -ver ...
- 在Android开发中使用Ant 一:环境的搭建及入门
配置Ant环境 下载Ant:http://ant.apache.org/bindownload.cgi 在windows上应该选择zip压缩包,将zip压缩包解压到一个目录. 打开系统环境变量,在系统 ...
- 转:Ant使用指南
一.概述 ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.在实际软件开发中,有很多地方可以用到ant. 开发环境: System:Windo ...
- jenkins+ant+jmeter自动化环境搭建(一)
写在最前面: jmeter:测试接口的工具,支持java语言: ant:Apache Ant是一个Java库和命令行工具,其任务是将构建文件中描述的进程作为相互 ...
随机推荐
- label用js,jquery取值赋值,以及怎么在后台取值
label标签在JS和Jquery中使用不能像其他标签一样用value获取它的值: 可以这样: JS: var label=document.getElementByIdx_x("id&qu ...
- 【C#】New操作符所做的事情
1.它计算类型以及所有基类型(一直到System.Object,虽然它没有定义自己的实例字段)中定义的所有实例字段需要的字节数.堆上的每个对象都需要一些额外的成员---即“类型对象指针”和“同步块索引 ...
- Redis学习笔记——初级
1. Redis是什么.特点.优势 Redis是一个开源的使用C语言编写.开源.支持网络.可基于内存亦可持久化的日志型.高性能的Key-Value数据库,并提供多种语言的API. 它通常被称为数据结构 ...
- ASP.NET MVC4实现TinyMCE 4.0.20自定义上传功能
tinymce 插件不提供免费的本地图片上传功能,所以自己将uploadify这个上传插件整合到tinymce,实现本地上传,还用到了jquery.ui插件,先展示全部的代码 @model TinyM ...
- C#写爬虫,版本V2.1
这次是对2.0的小修补,2.0交互几乎没有,这次添加了进度条,和文本框,同时由于取得的链接主要会出现错误是:webResponse错误. 针对这种情况,设置了 try { webResponse = ...
- 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu
[源码下载] 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu 作者:webabcd 介绍背水一战 Windows 10 之 控件(弹 ...
- EF Core1.0 CodeFirst为Modell设置默认值!
当我们使用CodeFirst时,有时候需要设置默认值! 如下 ; public string AdminName {get; set;} = "admin"; public boo ...
- PHP运行环境,服务器相关配置
1.在DOS命令窗口输入 mysql -hlocalhost -uroot -p回车 进入mysql数据库, 其中-h表示服务器名,localhost表示本地:-u为数据库用户名,root是mysql ...
- php实现设计模式之 单例模式
<?php /*单例模式:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例.(创建型模式) * * */ class singleton{ pr ...
- 微信js-sdk注意事项
1.录音结束后播放需要localId,用 var voice = { localId: '', serverId: '' }; 来存储,然后用voice.localId引用 2.token和ticke ...