ant官方文档:http://ant.apache.org/manual/index.html
filter: Sets a token filter for this project, or reads multiple token filters from a specified file and sets these as filters. Token filters are used by all tasks that perform file-copying operations.
filter过滤器是用在所有执行文件拷贝的任务中。filter可以用来定义一个token,或者引用一个文件中定义的token集。
<project name="access" default="show" basedir=".">
<!-- 引用一组过滤文件-->
<filter filtersfile="filter.properties"/>
<!-- 定义一个过滤器-->
<filter token="time" value="${TODAY}"/>
<target name="show">
<mkdir dir="dest"/>
<!-- 在copy中添加filtering属性启动过滤器 -->
<copy todir="dest" filtering="true">
<fileset dir="src"/>
</copy>
</target>
</project>
src下面凡是包含@time@的字符都将被替换掉,已经定义在filter.properties中的属性也会被替换掉。
与单纯地使用filter相比,filterset的功能要强大一点,使用得被替换的字符不仅限制于以@开始和结束的变量了,可以自己定义(使用begintoken和endtoken)。
<!-- 默认变量的格式为@xx@ -->
<copy file="${build.dir}/version.txt" toFile="${dist.dir}/version.txt">
<filterset>
<filter token="DATE" value="${TODAY}"/>
</filterset>
</copy>
<!-- 自定义变量的格式 -->
<copy file="${build.dir}/version.txt" toFile="${dist.dir}/version.txt">
<filterset begintoken="%" endtoken="*">
<filter token="DATE" value="${TODAY}"/>
</filterset>
</copy>
<!-- 使用外部的过滤定义文件 -->
<copy toDir="${dist.dir}/docs">
<fileset dir="${build.dir}/docs">
<include name="**/*.html">
</fileset>
<filterset begintoken="%" endtoken="*">
<filtersfile file="${user.dir}/dist.properties"/>
</filterset>
</copy>
<!-- 使用引用方式,重复利用过滤集 -->
<filterset id="myFilterSet" begintoken="%" endtoken="*">
<filter token="DATE" value="${TODAY}"/>
</filterset>
<copy file="${build.dir}/version.txt" toFile="${dist.dir}/version.txt">
<filterset refid="myFilterSet"/>
</copy>
参考文档: