Ant 提供一些预定义的数据类型。不要将术语“数据类型”和那些在编程语言中可用的数据类型相混淆,而是将他们视作一组已经在产品中配置好的服务。
下述的数据类型是由 Apache Ant 提供的。
文件集的数据类型代表了一个文件集合。它被当作一个过滤器,用来包括或移除匹配某种模式的文件。
例如,参考下面的代码。这里,src 属性指向项目的源文件夹。
文件集选择源文件夹中所有的 .java 文件,除了那些包含有 'Stub' 单词的文件。能区分大小写的过滤器被应用到文件集上,这意味着名为 Samplestub.java 的文件将不会被排除在文件集之外。
<fileset dir="${src}" casesensitive="yes">
<include name="/.java"/>
<exclude name="/Stub"/>
</fileset>
一个模式集合指的是一种模式,基于这种模式,能够很容易地过滤文件或者文件夹。模式可以使用下述的元字符进行创建。
下面的例子演示了模式集合的使用。
<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>
在这段代码中:
path 数据类型通常被用来表示一个类路径。各个路径之间用分号或者冒号隔开。然而,这些字符在运行时被替代为执行系统的路径分隔符。
类路径被设置为项目中 jar 文件和类文件的列表,如下面例子所示:
<path id="build.classpath.jar">
<pathelement path="${env.J2EE_HOME}/${j2ee.jar}"/>
<fileset dir="lib">
<include name="*/.jar"/>
</fileset>
</path>
在这段代码中: