Apache Ant提供了豐富的類型(type)集,其中一些在下面給出。 我們可以使用它們來處理數(shù)據(jù),文件,路徑等,也可以用作服務(wù)。
| 類型 | 描述 |
|---|---|
ClassFileSet |
用于創(chuàng)建具有所有必需類的Jar |
DirSet |
對目錄進(jìn)行分組 |
FileList |
文件列表 |
FileSet |
一組文件 |
FileMapper |
用于映射源文件和目標(biāo)文件 |
FilterSet |
一組過濾器 |
PatternSet |
由ids引用的一組模式。 |
Selectors |
FileSet元素有助于選擇元素 |
TarFileSet |
它是FileSet的一種特殊形式。 |
ZipFileSet |
一組zip文件。 |
ClassFileSet是一種特殊類型的FileSet,它包含根類所依賴的所有類文件。 它用于為特定應(yīng)用程序創(chuàng)建具有所有必需類的JAR。
ClassFileSet由id值聲明,然后用作引用。
DirSet是一組目錄。 它支持<patternset>,它的嵌套元素是<include>,<includesfile>,<exclude>和<excludefiles>。它具有以下給出的各種屬性。
| 屬性 | 描述 | 是否必需 |
|---|---|---|
dir |
擁有此DirSet的目錄樹的根 | 是 |
includes |
目錄模式列表 | 否 |
includesfile |
要包含的文件的名稱。 | 否 |
excludes |
必須排除的目錄模式列表。 | 否 |
excludesfile |
要排除的文件的名稱。 | 否 |
casesensitive |
用于指定是否應(yīng)該應(yīng)用區(qū)分大小寫。 | 否 |
follosymlinks |
有一個(gè)符號鏈接可供遵循。 | 否 |
erroronmissingdir |
它指定如果基本目錄不存在,則要發(fā)生什么。 | 否 |
Apache Ant DirSet示例
<dirset dir="${build.dir}">
<include name="apps/**/classes"/>
<exclude name="apps/**/*Test*"/>
</dirset>
此示例將對${build.dir}的apps子目錄中找到的所有目錄名稱classess進(jìn)行分組,并排除其名稱中包含測試的目錄。
FileList是文件的列表(集合),它可以與<concat>,<dependset>任務(wù)一起使用。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>
FileSet是來自單個(gè)根目錄的一組文件。它根據(jù)Ant指定的模式集收集文件。 <include>和<exclude>元素稱為模式集。 模式集是文件匹配模式的集合。 默認(rèn)情況下,這些是區(qū)分大小寫的,但可以通過設(shè)置casesensitive = false來禁用。
FileSet具有以下給出的屬性。
| 屬性 | 描述 | 是否必需 |
|---|---|---|
dir |
將根目錄保存在FileSet | 必須指定目錄或文件 |
file |
用于指定單文件FileSet | 必須指定目錄或文件 |
includes |
必須包含的文件模式列表。 | 否 |
includesfile |
文件名 | 否 |
excludes |
必須排除的文件模式列表。 | 否 |
excludesfiles |
文件名模式。 | 否 |
casesensitive |
include和exclude模式都區(qū)分大小寫。 |
否 |
followsymlinks |
應(yīng)遵循符號鏈接 | 否 |
讓我們來看看一個(gè)并將文件從一個(gè)目錄復(fù)制到另一個(gè)目錄的例子。
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復(fù)制到dir1。
有時(shí)在執(zhí)行任務(wù)后,源文件和輸出都不同,然后不進(jìn)行映射。 Apache Ant使用FileMapper映射源和創(chuàng)建的目標(biāo)文件。 org.apache.tools.ant.util.FileNameMapper類和<mapper>元素的實(shí)例用于映射文件。
FileMapper具有以下屬性。
| 屬性 | 描述 | 是否必需 |
|---|---|---|
type |
指定其中一個(gè)內(nèi)置實(shí)現(xiàn)。 | 否 |
classname |
按類名指定實(shí)現(xiàn) | 其中之一 |
classpath |
查找classname時(shí)要使用的類路徑。 |
否 |
classpathref |
Apache Ant?用戶手冊 | 否 |
from |
給定實(shí)現(xiàn)的from屬性。 |
取決于實(shí)現(xiàn) |
to |
給定實(shí)現(xiàn)的to屬性。 |
取決于實(shí)施 |
所有內(nèi)置映射器都區(qū)分大小寫。
映射器示例
<mapper type="glob" from="*.java" to="*.java.bak"/>
<globmapper from="*.java" to="*.java.bak"/>
FilterSet是一組過濾器,由兩個(gè)主要操作(任務(wù))復(fù)制和移動(dòng)使用。 它使用id和refid屬性,id用于定義FilterSet,refid用于引用另一個(gè)FilterSet。
也可以將FilterSet嵌套到FilterSet中以獲得包含的過濾器的集合并集。
它具有以下屬性。
| 屬性 | 描述 | 默認(rèn) | 是否必需 |
|---|---|---|---|
begintoken |
它是標(biāo)記令牌開頭的字符串。 | @ | 否 |
endtoken |
它是標(biāo)記令牌結(jié)尾的字符串。 | @ | 否 |
filtersfile |
它指定單個(gè)filtersfile。 |
None | 否 |
recurse |
用于搜索更多令牌 | true | 否 |
onmissingfiltersfile |
它指示指定不存在filtersfile時(shí)的行為。 |
fail | 否 |
在這里,我們將abc.txt文件從build目錄復(fù)制到dist目錄,但希望用今天的日期替換令牌@DATE@。
FilterSet示例
<copy file="${build.dir}/abc.txt" toFile="${dist.dir}/xyz.txt">
<filterset>
<filter token="DATE" value="${TODAY}"/>
</filterset>
</copy>