Ant - 数据类型

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


Ant 中的数据类型

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

fileset

文件集数据类型表示文件的集合。 它用作过滤器以包含或排除与特定模式匹配的文件。

例如,参考以下代码。 这里,src 属性指向项目的源文件夹。

<fileset dir="${src}" casesensitive="yes">
   <include name="**/*.java"/>
   <exclude name="**/*Stub*"/>
</fileset>

文件集选择源文件夹中的所有 .java 文件,但包含单词"Stub"的文件除外。区分大小写的过滤器应用于文件集,这意味着名称为 Samplestub.java 的文件不会从文件集中排除。

patternset

模式集是一种允许根据特定模式轻松过滤文件或文件夹的模式。 可以使用以下元字符创建模式 −

  • ? - 只匹配一个字符。

  • - 匹配零个或多个字符。

  • ** - 递归匹配零个或多个目录。

以下示例描述了模式集的用法。

<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>

filelist

filelist 数据类型与文件集类似,但有以下区别 −

  • 它包含明确命名的文件列表,并且不支持通配符。

  • 此数据类型可应用于现有或不存在的文件。

让我们看看以下文件列表数据类型的示例。 这里,属性 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>

filterset

通过将过滤器数据类型与复制任务一起使用,您可以将所有文件中与模式匹配的某些文本替换为替换值。

一个常见的例子是将版本号附加到发行说明文件中,如以下代码所示。

<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

path 数据类型通常用于表示类路径。 路径中的条目使用分号或冒号分隔。 但是,这些字符在运行时会被执行系统的路径分隔符替换。

classpath设置为项目中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 文件的名称。