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 |
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
。
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是一組篩檢程式,由兩個主要操作(任務)複製和移動使用。 它使用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>