Apache Ant类型

Apache Ant类型

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

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

1. ClassFileSet

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

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

2. 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子目录中找到的所有目录名称classess进行分组,并排除其名称中包含测试的目录。

3. FileList

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

属性 描述 是否必需
dir 用于保存此列表的基目录。
files 文件名列表

FileList示例

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

4. FileSet

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

FileSet具有以下给出的属性。

属性 描述 是否必需
dir 将根目录保存在FileSet 必须指定目录或文件
file 用于指定单文件FileSet 必须指定目录或文件
includes 必须包含的文件模式列表。
includesfile 文件名
excludes 必须排除的文件模式列表。
excludesfiles 文件名模式。
casesensitive includeexclude模式都区分大小写。
followsymlinks 应遵循符号链接

让我们来看看一个并将文件从一个目录复制到另一个目录的例子。

FileSet示例

文件: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

5. FileMapper

有时在执行任务后,源文件和输出都不同,然后不进行映射。 Apache Ant使用FileMapper映射源和创建的目标文件。 org.apache.tools.ant.util.FileNameMapper类和<mapper>元素的实例用于映射文件。

FileMapper具有以下属性。

属性 描述 是否必需
type 指定其中一个内置实现。
classname 按类名指定实现 其中之一
classpath 查找classname时要使用的类路径。
classpathref Apache Ant?用户手册
from 给定实现的from属性。 取决于实现
to 给定实现的to属性。 取决于实施

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

映射器示例

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

6. FilterSet

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

也可以将FilterSet嵌套到FilterSet中以获得包含的过滤器的集合并集。

它具有以下属性。

属性 描述 默认 是否必需
begintoken 它是标记令牌开头的字符串。 @
endtoken 它是标记令牌结尾的字符串。 @
filtersfile 它指定单个filtersfile None
recurse 用于搜索更多令牌 true
onmissingfiltersfile 它指示指定不存在filtersfile时的行为。 fail

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

FilterSet示例

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