Apache Ant提供了豐富的型別(type
)集,其中一些在下面給出。 我們可以使用它們來處理資料,檔案,路徑等,也可以用作服務。
型別 | 描述 |
---|---|
ClassFileSet |
用於建立具有所有必需類的Jar |
DirSet |
對目錄進行分組 |
FileList |
檔案列表 |
FileSet |
一組檔案 |
FileMapper |
用於對映原始檔和目標檔案 |
FilterSet |
一組過濾器 |
PatternSet |
由ids 參照的一組模式。 |
Selectors |
FileSet元素有助於選擇元素 |
TarFileSet |
它是FileSet的一種特殊形式。 |
ZipFileSet |
一組zip檔案。 |
ClassFileSet
是一種特殊型別的FileSet,它包含根類所依賴的所有類檔案。 它用於為特定應用程式建立具有所有必需類的JAR。
ClassFileSet
由id值宣告,然後用作參照。
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
進行分組,並排除其名稱中包含測試的目錄。
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>
FileSet是來自單個根目錄的一組檔案。它根據Ant指定的模式集收集檔案。 <include>
和<exclude>
元素稱為模式集。 模式集是檔案匹配模式的集合。 預設情況下,這些是區分大小寫的,但可以通過設定casesensitive = false
來禁用。
FileSet具有以下給出的屬性。
屬性 | 描述 | 是否必需 |
---|---|---|
dir |
將根目錄儲存在FileSet | 必須指定目錄或檔案 |
file |
用於指定單檔案FileSet | 必須指定目錄或檔案 |
includes |
必須包含的檔案模式列表。 | 否 |
includesfile |
檔案名 | 否 |
excludes |
必須排除的檔案模式列表。 | 否 |
excludesfiles |
檔案名模式。 | 否 |
casesensitive |
include 和exclude 模式都區分大小寫。 |
否 |
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
。
有時在執行任務後,原始檔和輸出都不同,然後不進行對映。 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"/>
FilterSet是一組過濾器,由兩個主要操作(任務)複製和移動使用。 它使用id
和refid
屬性,id
用於定義FilterSet
,refid
用於參照另一個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>