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>