发布日期:2016-08-01 14:54:47

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>

参考文档:

  • ant官方文档:http://ant.apache.org/manual/index.html
  • 博客:http://www.cnblogs.com/ungshow/archive/2008/12/30/1365249.html

发表评论