Ant核心类型
Posted onAnt核心类型
Ant核心类型:
利用Ant工具的核心类型能方便地定义变量,并可在target中进行引用。 所有Ant工具的类型都有id和refid两个属性,id作为这个类型的唯一标识,refid只用指定要引用的类型。
1.Assertions Type:断言类型
断言类型只有enableSystemAssertions一个属性,表示是否允许系统断言,默认为unspecified,代表没有指定
这里允许系统断言,在Java包前缀为org.apache下的Java class允许执行java断言。 同时限制org.apache.tools.ant前缀的Java包下的类不能执行断言,但是org.apache.tools.ant.Main这个Java类指定为允许执行断言。
2.Description Type:描述类型
3.PatternSet Type:定义模式集合(可在FileSet和DirSet中引用)
用以定义文件或目录集合
如果属性professional在构件文件中设定了,那么在PatternSet类型中将包含子目录prof下的所有java文件
文件名包含some-file的文件
4.DirSet Type:定义目录集合
在目录集合中通过PatternSet类型来指定目录集合
5.FileSet Type:定义文件集合
selector类型可看作是FileSet类型中的一个元素,用以对文件进行筛选 (1).contains selector
选择包含text属性中指定的字符串的文件
选择${doc.path}下所有包含script字符串的html文件 (2).date selector
选择文件的修改时间在某个特定的时间之前或之后的文件
选择${jar.path}下所有修改时间在01/01/2001 12:00 AM之前的文件 (3).depend selector
比较两个不同目录下名称相同的文件,然后选择文件修改时间迟的那个文件
选择相对于Ant1.4版本在Ant1.5版本中修改过的Java源文件 (4).depth selector
指定选择文件的文件目录的深度
选择根目录及根目录下的第一层子目录的所有文件 (5).different selector
从两个目录中选择被认为不同的文件 属性ignoreFileTimes默认为true,表示忽略文件修改时间
选择${doc.path}下所有的css样式文件 (7).present selector
从FileSet的指定的目录中选择在present的targetdir指定的目录中不存在或者两个目录中都存在的文件 present="srconly"代表只从FileSet目录中选取targetdir指定目录中不存在的文件
present="both"代表从FileSet目录和targetdir目录中选择两个目录都存在的文件
从Ant1.5的src/main包中选择在ant1.4的src.main包中不存在的java源文件 (8).containsregexp selector
选择符合正则表达式的文件
从${doc.path}目录中选择文件名包含4、5或6后面跟着一个"."再跟着一个0-9的数字的txt文件 (9).size selector
通过文件的大小对文件进行选择
这个文件集合包含根目录${server.src}下的所有java文件,但不包含文件名称中含有Test字符的文件。 用PatternSet Type类定义文件集合的实例
如果在构件文件中已定义了PatternSet类型,那么可以通过PatternSet的引用以实现相同的功能
6.FileList Type:定义文件列表
FileList可以包含不存在的文件,而FileSet类型指定的文件一定要存在
等同于
7.Filter Type:文件过滤器定义 定义一组文件过滤器,在移动或复制文件时对文件内容进行替换
begintoken属性定义一个特殊字符用于指定要过滤的字符串的开始位置,默认为@ endtoken属性定义一个特殊字符用于指定要过滤的字符串的结束位置,默认为@
在FilterSet类型中可以直接包含Filter类型,用以定义具体的文件过滤器
替换后在afterReplace目录下的src.txt文件的内容如下: This is the test sample.
the message will be replace:HELLO
8.PropertySet Type:定义属性集合 在PropertySet中可以通过Propertyref元素引用构件文件中的其他property,
而PropertySet类型之间可以互相引用。
定义一个属性集合,这个集合包含非foo、bar开头的属性
9.File Mapper Type:文件映射类型(定义文件间的相互关系) 用type属性指定实现类型,可实现的类型如下
(1).identity:指定源文件与目标文件具有相同的名称 (2).flatten:指定源文件与目标文件的名称相同,但忽略源文件中的文件目录,仅包含文件
(3).glob:源文件和目标文件的匹配模式中都包含/*的匹配符 (4).merge:用于把打包的源文件进行合并。目标文件名称与源文件相同
(5).regexp:用正则表达式匹配 (6).package:与glob相似,模式中包含/*的匹配符。package可用于替换目录名称
(7).composite:用于组合多个Mapper类型,每个Mapper类型都对源文件进行操作,最后返回所有操作后的结果 (8).chained:可包括多个Mapper类型,源文件依次经过每个Mapper,上一个Mapper的输出作为下一个Mapper的输入
(9).filtermapper:用于对文件名进行过滤
用法如
其中chained实现类不能用type属性指定。
10.ZipFileSet Type:zip格式的文件集 通过Ant工具内建的zip任务实现打包zip文件的功能,同时可以在zip任务中引用ZipFileSet类型指定文件
以zip文件的形式打包htdocs/manual目录下的所有文件到docs/user-guide目录下。
同时添加ChangeLog27.txt到这个zip文件的docs目录下。 在这个zip文件中同时包含example.zip文件,example.zip文件包含docs/examples目录及其子目录下的所有html文件。
11.FilterChains和FilterReaders:过滤链和过滤读取器
在Ant工具的内建任务:Concat、Copy、LoadFile、LoadProperties和Move中可以直接使用FilterChain进行过滤
<param name="foo" value="bar"/>
</filterreader>
<filterreader classname="another.extension.of.java.io.FilterReader">
<!-- 指定过滤器依赖的类库 -->
<classpath>
<pathelement path="${classpath}"/>
</classpath>
<param name="blah" value="blee"/>
<param type="abra" value="cadabra"/>
</filterreader>
</filter