一、概述
FilterSet是一组过滤器。过滤器可以通过token-value对或者从文件中读取来进行定义。FilterSet可以嵌套在支持过滤的task中,也可以与task一样做为project的子元素。FilterSet支持id和refid属性,可以给FilterSet定义一个id属性,然后在另一个FilterSet中通过refid属性来引用。使用refid属性的FilterSet就不可以定义除了id外的其他属性了。还可以在FilterSet中嵌套FilterSet来获取一组包含的过滤器的并集。FilterSet可以通过定义begintoken、endtoken来定义要匹配的内容。如果定义了相同的token,会使用最后一次的定义。FilterSet可以在诸如copy等task中进行字符的替换。在操作中使用FilterSet时,文件以文本方式进行处理,一行一行的进行过滤。在使用过滤器时要确保要进行过滤的文件都是文本文件。
二、属性
begintoken:标记token开头的字符串,默认为@。
endtoken:标记token结尾的字符串,默认为@。
filtersfile:指定一个过滤器文件。
recurse:ant1.6.3起,表示替换token的文本是否可以被其他的token进行查找,默认为true。
onmissingfiltersfile:ant1.7起,表示当filtersfile指定的文件不存在时如何处理,可选值为fail、warn、ignore,默认为fail。
FilterSet还支持两种嵌套元素:
filter,具有以下两个属性:
token:要替换的token。
value:要替换成的值。
filtersfile,有一个属性:
file:加载token的属性文件。
三、简单示例
<project>
<copy file="from.txt" toFile="to.txt">
<filterset id="filterName" begintoken="$" endtoken="%">
<filter token="name" value="FilterSet"/>
</filterset>
</copy>
<filterset id="fillName" begintoken="$" endtoken="%">
<filtersfile file="filters.properties"/>
</filterset>
<copy file="from.txt" toFile="to1.txt">
<filterset refid="filterName"/>
</copy>
<copy file="from.txt" toFile="to2.txt">
<filterset refid="fillName"/>
</copy>
</project>