Ant type 类型集

Apache Ant提供了丰富的类型集,下面提供了其中的一些类型。我们可以使用它们来处理数据,文件, path 等,也可以用作服务。

类型 说明
ClassFileSet 它用于创建具有所有必需类的Jar。
DirSet 它对目录进行分组。
FileList 文件列表。
FileSet 一组文件。
FileMapper 它有助于映射源文件和target文件。
FilterSet 一组过滤器。
PatternSet 由ID引用的一组模式。
Selectors FileSet元素,有助于选择元素
TarFileSet 这是FileSet的一种特殊形式。
ZipFileSet 一组zip文件。

ClassFileSet

ClassFileSet是FileSet的一种特殊类型,它包括所有 class 文件,根类是依赖的。它用于创建 JAR ,其中包含特定应用程序所需的所有类。

ClassFileSet由id值声明,然后用作参考。

DirSet

DirSet是一组目录。它支持<patternset>及其嵌套元素<include>,<includesfile>,<exclude>,<excludefiles>。它具有各种属性,如下所示。

属性 说明 必填
dir 它保存此DirSet的目录树的根
includes 目录模式列表。
includesfile 要包含的文件名。
excludes 必须排除的目录模式列表。
excludesfile 要排除的文件名。
casesensitive 用于指定是否应区分大小写。
follosymlinks 它包含要跟随的符号链接。
erroronmissingdir 它指定基本目录不存在时会发生什么。

Apache Ant DirSet示例

<dirset dir="${build.dir}">
  <include name="apps/**/classes"/>
  <exclude name="apps/**/*Test*"/>
</dirset>

此示例将把$ {build.dir}的apps子目录中找到的所有目录名称类分组,并排除其名称中经过测试的目录。

FileList

FileList是文件列表(集合)。它可以与 , 任务一起使用。 FileList对于指定可能存在或不存在的文件很有用。它具有下面给出的属性。

属性 说明 必填
dir 它用于保存此列表的基本目录。
files 文件名列表

文件列表示例

<project name="filelist" default="filelist-run">
<target name = ?filelist-run?>
    <filelist id="files" dir="${files.src}" files="a.xml,b.xml"/>
  </target>
</project>

FileSet

FileSet是来自单个根目录的一组文件。它根据Ant指定的模式集收集文件。 <include>和<exclude>元素称为模式集。模式集是文件匹配模式的集合。默认情况下,这些文件区分大小写,但可以通过设置casesensitive = false 来禁用。

文件集具有以下属性。

属性 说明 必填
dir 它保存根目录FileSet。 必须指定目录或文件。
file 用于指定单文件文件集。 必须指定目录或文件。
includes 必须包括的文件模式列表。
includesfile 文件名。
excludes 必须排除的文件模式列表。
excludesfiles 文件名模式。
casesensitive 包含和排除模式都区分大小写。
followsymlinks 应遵循符号链接。

让我们看一个示例,并将文件从一个目录复制到另一个目录。

文件集示例

//build.xml

<project name="fileset" default="fileset-run">
  <target name="fileset-run">
    <copy todir="dir1">
      <fileset dir="dir2">
          <include name ="*.java"/>
      </fileset>
    </copy>
  </target>
</project>

上面的代码会将所有Java文件从dir2复制到dir1。

FileMapper

有时在执行任务,源文件和输出后两者是不同的,然后不被映射。 Apache Ant使用FileMapper映射源文件和创建的target文件。 org.apache.tools.ant.util.FileNameMapper 类和 元素的实例用于映射文件。

映射器具有以下属性。

属性 说明 必填
type 指定一种内置实现。
classname 通过类名指定实现。 恰好是其中之一。
classpath 查找类名时要使用的类路径。
classpathref Apache Ant?用户手册
from 给定实现的from属性。 取决于实现方式
to 给定实现的to属性。 取决于实现方式

所有内置的映射器都是区分大小写的。

映射器示例

<mapper type="glob" from="*.java" to="*.java.bak"/>
<globmapper from="*.java" to="*.java.bak"/>

FilterSet

FilterSet是一组过滤器,并由两个主要操作(任务)复制和移动使用。它使用id和refid 属性,id用于定义FilterSet,refid用于引用另一个FilterSet。

还可以嵌套将FilterSet放入FilterSet中,以获取包含的过滤器的集合并集。

它具有以下提供的各种属性。

文件集属性

属性 说明 默认 必填
begintoken 它是标记令牌开头的字符串。 @
endtoken 它是标记令牌结束的字符串。 @
filtersfile 它指定一个过滤器文件。
recurse 用于搜索更多令牌。 true
onmissingfiltersfile 它指示当指定了不存在的 filtersfile 时的行为。 失败

在这里,我们将abc.txt文件从构建目录复制到dist目录,但希望用今天的日期替换令牌@DATE @。

FilterSet示例

<copy file="${build.dir}/abc.txt" toFile="${dist.dir}/xyz.txt">
  <filterset>
    <filter token="DATE" value="${TODAY}"/>
  </filterset>
</copy>

下一章:Ant 自定义组件

 Ant允许我们根据需要创建定制组件。自定义组件可以是条件,过滤器,选择器等,并且在ant核心api外部定义。自定义组件的行为类似于Ant核心组件。自定义组件是正常的可以实现类和接口的Java类。看起来就像编写 ...