antlib有几个内置的资源选择器:
- name:通过名字选择资源,具有以下属性:
name:使用标准ant模式进行测试的名称模式。
regex:匹配文件使用的正则表达式。
casesensitive:是否区分大小写,默认为true。
handledirsep:ant1.8起,映射器进行匹配时是否将资源名称或name属性中的“\”当作“/”处理。默认为false。 - exists:选择存在的文件。
- date:按日期选择文件,具有以下属性:
millis:自1970年1月1日起的时间毫秒数。
datetime:格式化的对比时间。
pattern:datetime使用的SimpleDateFormat兼容模式。默认为MM/DD/YYYY HH:MM AM(或PM)。
granularity:由于不是每个系统都支持修改时间精确到毫秒级,所以在比较修改时间的毫秒数时允许存在一定的误差,不同平台的默认值不同:FAT文件系统2s,Unix 1s,NTFS 1ms。
when:可选值为before、after、equal,默认为equal。
- type:通过类型(文件或目录)选择资源,具有以下属性:
type:ant1.8起,可选值为file、dir、any。 - size:通过大小选择资源,具有以下属性:
size:用于比较的大小,单位为字节。
when:比较类型:equal/eq、greater/gt、less/lt、ge(大于等于)、ne(不等于)、le(小于等于),默认为equal。
- instanceof:根据类型选择资源,具有以下属性:
class:资源必须是类的一个实例。
type:必须从资源中分配的类型。
uri:必须定义的类型的uri。 - and:如果一个资源被所有的嵌套资源选择器选中,则选择此资源。
- or:如果一个资源被至少一个嵌套资源选择器选中,则选择此资源。
- not:否定单个资源选择器的结果。
- none:如果一个资源没有嵌套资源选择器选中,则选择此资源。
- majority:如果一个资源被大多数嵌套资源选择器选中,则选择此资源,具有以下属性:
allowtie:当嵌套的资源选择器为偶数时,如果选择的资源正好占一半,是否认为是大多数,默认为true。 - modified:见核心选择器modified。
- contains:见核心选择器contains。
- containsregexp:见核心选择器containsregexp。
- compare:通过使用资源比较器与一个或多个“control”的资源进行比较来选择文件。用于比较的资源必须通过嵌套“control”元素指定。compare具有以下属性:
when:比较类型,equal/eq、greater/gt、less/lt、le(小于等于)、ge(大于等于)、ne(不等于),默认为equal。
against:比较方式,all/each/every、any/some、one、most/majority、none,默认为all。 - readable:见核心选择器readable。
- writable:见核心选择器writable。
简单示例
<project xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors"
xmlns:rcmp="antlib:org.apache.tools.ant.types.resources.comparators">
<restrict>
<fileset dir="../../task" includes="**/**" />
<name regex="(.*)\.xml" />
<not>
<name regex="(.*)d\.xml" />
</not>
<compare when="ge" against="each">
<control>
<file name="C:\Users\runner\task\ant\build1.xml" />
</control>
<size />
</compare>
</restrict>
</project>