Ant中包含以下内置资源集合类型:
- resources:通用资源集合。可以收集未知的类型的资源集合,还可以做为其他资源集合的容器,。具有以下属性:
cache:ant1.8引入,是否缓存结果,默认为false。 - files:一组文件,这些文件与许多模式集的绝对模式相匹配。模式集可以通过嵌套patternset元素指定,此外,还支持直接嵌套模式集元素include、includesfile、exclude、excludesfile以及patternset的属性。文件选择器可作为嵌套元素,一个文件被所有的选择器选中才会被包含在内。具有以下属性:
includes:逗号或空格分隔的必须包含的文件模式列表。
includesfile:文件名。指定文件的每一行都会做为一个includes模式。
excludes:逗号或空格分隔的必须排除的文件模式列表。
excludesfile:文件名。指定文件的每一行都会做为一个excludes模式。
defaultexcludes:是否使用默认排除列表,默认为true。
casesensitive:处理includes与excludes模式时是否区分大小写,默认为true。
followsymlinks:是否跟踪符号链接,默认为true。 - restrict:使用资源选择器限制嵌套的资源集合。具有以下属性:
cache:是否缓存结果,默认为true。
- sort:对嵌套的资源按自然顺序或者一到多个资源比较器进行排序,具有以下属性:
cache:是否缓存结果,默认为true。 - first:包含嵌套资源集合的前count个资源,通常与sort联合使用来从一个较大的资源集合中选择前几个资源,具有以下属性:
count:包含的资源数量,默认为1。
cache:是否缓存结果,默认为true。 - last:ant1.7.1引入,包含嵌套资源集合的最后count个资源,通常与sort联合使用来从一个较大的资源集合中选择最后几个资源,具有以下属性:
count:包含的资源数量,默认为1。
cache:是否缓存结果,默认为true。
- tokens:从嵌套的资源集合收集字符串。使用TokenFilter支持的相同分词器,tokens中必须包含一个资源集合,并且指定一个嵌套的分词器,默认为LineTokenizer,具有以下属性:
encoding:嵌套资源的编码,默认与平台相同。
cache:是否缓存结果,默认为true。
- union:嵌套的资源集合的并集,会对集合中的资源去重。具有以下属性:
cache:是否缓存结果,默认为true。
- intersect:嵌套的资源集合的交集。具有以下属性:
cache:是否缓存结果,默认为true。 - difference:嵌套资源的差异部分。具有以下属性:
cache:是否缓存结果,默认为true。 - mappedresources:ant1.8引入,包装另一个资源集合,并且使用mapper映射嵌套资源的名字。mappedresources中必须包含一个资源集合和一个用来映射名字的映射器,如果没有指定映射器,默认使用identity映射器,mappedresources具有以下属性:
cache:ant1.8.1起,是否缓存结果,默认为false。
enablemultiplemappings:ant1.8.1起,集合对于给定的源路径是否使用所有的映射器,默认为false。 - archives:ant1.8引入,接受任意数量的嵌套资源,这些资源会作为zip或tar的存档,archives返回的是嵌套的存档的内容。archives是只仅由zip系列任务支持的zipgroupfileset的泛化。archives不支持任何属性。archives有两个内嵌元素zips和tars。
- resourcelist:ant1.8引入。接受任意数量的嵌套资源,读取这些资源,并为读取的每一行返回一个资源。如果该行包含冒号,ant会将其作为url,如果失败或者不包含冒号,则以该行内容做为资源的名称返回。如果属性扩展产生一个资源对象而不是字符串,将直接返回资源。resourcelist是filelist的泛化。resourcelist支持嵌套filterchain元素,可以在行扩展之前过滤或这修改资源。resourcelist具有以下属性:
encoding:嵌套资源的编码,默认与平台相同。
简单示例
<project xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors"
xmlns:rcmp="antlib:org.apache.tools.ant.types.resources.comparators">
<files includes="C:\Users\runner\task\condition\*.xml" />
<restrict id="files">
<fileset dir="../../task" includes="**/**" />
<name regex="(.*)\.xml" />
<not>
<name regex="(.*)d\.xml" />
</not>
<compare when="lt" against="each">
<control>
<files includes="C:\Users\runner\task\concat\*.xml,C:\Users\runner\task\echoproperties\build.xml" />
</control>
<size />
</compare>
</restrict>
<sort id="sortedfiles">
<resources refid="files"/>
<size/>
</sort>
<first id="firstfiles" count="2">
<resources refid="sortedfiles"/>
</first>
<last id="lastfiles" count="2">
<resources refid="sortedfiles"/>
</last>
<tokens id="tokens">
<string value="this is a string" />
<stringtokenizer />
</tokens>
<resources id="A">
<string value="a"/>
<string value="b"/>
</resources>
<resources id="B">
<string value="b"/>
<string value="c"/>
</resources>
<union id="union">
<resources refid="A"/>
<resources refid="B"/>
</union>
<intersect id="intersect">
<resources refid="A"/>
<resources refid="B"/>
</intersect>
<difference id="difference">
<resources refid="A"/>
<resources refid="B"/>
</difference>
<copy todir="mapped">
<mappedresources id="mapped" enablemultiplemappings="false">
<resources refid="files"/>
<globmapper from="*" to="*.bak"/>
</mappedresources>
</copy>
<copy todir="archives">
<archives>
<zips>
<restrict>
<path path="${java.class.path}"/>
<name name="trans.jar"/>
</restrict>
</zips>
</archives>
</copy>
</project>