Ant 简明教程
Ant - Data Types
Ant 提供了许多预定义的数据类型。不要将术语“数据类型”与编程语言中可用的数据类型混淆。相反,将它们视为已经内置到产品中的服务集。
Data Types in Ant
Apache Ant 提供了以下数据类型。
Fileset
文件集数据类型表示一组文件。它用作过滤器,用于包括或排除与特定模式匹配的文件。
例如,请参阅以下代码。此处,src 属性指向项目的源文件夹。
<fileset dir="${src}" casesensitive="yes">
<include name="**/*.java"/>
<exclude name="**/*Stub*"/>
</fileset>
文件集选择源文件夹中的所有 .java 文件,但那些包含单词“Stub”的文件除外。对文件集应用区分大小写的过滤器,这意味着不会从文件集排除名为 Samplestub.java 的文件。
Pattern set
模式集是一种模式,允许根据某些模式轻松过滤文件或文件夹。可以使用以下元字符创建模式:
-
?- 仅匹配一个字符。
-
- 匹配零个或多个字符。
-
**- 递归匹配零个或多个目录。
以下示例描述了模式集的用法。
<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>
File list
文件列表数据类型与文件集类似,但存在以下差异:
-
它包含明确命名的文件列表,并且不支持通配符。
-
此数据类型可应用于现有或不存在的文件。
让我们看一下文件列表数据类型的以下示例。在此处,属性 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>
Filter set
通过将 filterset 数据类型与 copy 任务一起使用,可以使用替换值替换与模式匹配的所有文件中特定的文本。
一个常见的例子是在发布说明文件中追加版本号,如下面的代码所示。
<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 指向项目的当前版本文件夹。
-
顾名思义,copy 任务用于将文件从一个位置复制到另一个位置。
Path
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 文件名称。