数据类型
Ant提供了许多预定义的数据类型。 不要将术语“数据类型”与编程语言中可用的术语混淆,而应将它们视为已经内置到产品中的一组服务。
Apache Ant提供以下数据类型。
Fileset
文件集数据类型表示文件的集合。 它用作过滤器以包含或排除与特定模式匹配的文件。
例如,请参阅以下代码。 这里,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>
文件列表
文件列表数据类型与文件集类似,但以下差异除外 -
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数据类型通常用于表示类路径。 路径中的条目使用分号或冒号分隔。 但是,这些字符在运行时由执行系统的路径分隔符替换。
类路径设置为项目中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文件的名称。