Ant - 数据类型

  • 简述

    Ant 提供了许多预定义的数据类型。不要将术语“数据类型”与编程语言中可用的那些混淆。相反,将它们视为已经内置到产品中的一组服务。
  • Ant 中的数据类型

    以下数据类型由 Apache Ant 提供。

    文件集

    文件集数据类型表示文件的集合。它用作过滤器以包含或排除与特定模式匹配的文件。
    例如,参考下面的代码。在这里,src 属性指向项目的源文件夹。
    
    
    <fileset dir="${src}" casesensitive="yes">
    
       <include name="**/*.java"/>
    
       <exclude name="**/*Stub*"/>
    
    </fileset>
    
    
    文件集选择源文件夹中的所有 .java 文件,但包含单词“Stub”的文件除外。区分大小写的过滤器应用于文件集,这意味着名称为 Samplestub.java 的文件不会从文件集中排除。

    模式集

    模式集是一种允许根据特定模式轻松过滤文件或文件夹的模式。可以使用以下元字符创建模式 -
    • ?- 只匹配一个字符。
    • - 匹配零个或多个字符。
    • ** - 递归匹配零个或多个目录。
    以下示例描述了模式集的用法。
    
    
    <patternset id="java.files.without.stubs">
    
       <include name="src/**/*.java"/>
    
       <exclude name="src/**/*Stub*"/>
    
    </patternset>
    
    
    然后可以使用文件集重用模式集,如下所示 -
    
    
    <fileset dir="${src}" casesensitive="yes">
    
       <patternset refid="java.files.without.stubs"/>
    
    </fileset>
    
    

    档案清单

    文件列表数据类型类似于文件集,但有以下区别:
    • 它包含明确命名的文件列表,并且不支持通配符。
    • 此数据类型可应用于现有或不存在的文件。
    让我们看一下文件列表数据类型的以下示例。在这里,属性webapp.src.folder指向项目的 Web 应用程序源文件夹。
    
    
    <filelist id="config.files" dir="${webapp.src.folder}">
    
       <file name="applicationConfig.xml"/>
    
       <file name="faces-config.xml"/>
    
       <file name="web.xml"/>
    
       <file name="portlet.xml"/>
    
    </filelist>
    
    

    过滤器组

    通过将过滤器集数据类型与复制任务一起使用,您可以用替换值替换所有与模式匹配的文件中的某些文本。
    一个常见的例子是将版本号附加到发行说明文件中,如以下代码所示。
    
    
    <copy todir="${output.dir}">
    
       <fileset dir="${releasenotes.dir}" includes="**/*.txt"/>
    
       <filterset>
    
          <filter token="VERSION" value="${current.version}"/>
    
       </filterset>
    
    </copy>
    
    
    在上面提到的代码中 -
    • 属性output.dir指向项目的输出文件夹。
    • 属性releasenotes.dir指向项目的发行说明文件夹。
    • 属性current.version指向项目的当前版本文件夹。
    • 顾名思义,复制任务用于将文件从一个位置复制到另一个位置。

    小路

    path数据类型通常用于表示类路径。路径中的条目使用分号或冒号分隔。然而,这些字符在运行时被执行系统的路径分隔符替换。
    类路径设置为项目中的 jar 文件和类的列表,如下例所示。
    
    
    <path id="build.classpath.jar">
    
       <pathelement path="${env.J2EE_HOME}/${j2ee.jar}"/>
    
       <fileset dir="lib">
    
          <include name="**/*.jar"/>
    
       </fileset>
    
    </path>
    
    
    在上面给出的代码中 -
    • 属性env.J2EE_HOME指向环境变量J2EE_HOME.
    • 属性j2ee.jar指向 J2EE 基本文件夹中的 J2EE jar 文件的名称。