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
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](https://github.com/DATE "@DATE")@
。
FilterSet示例
<copy file="${build.dir}/abc.txt" toFile="${dist.dir}/xyz.txt">
<filterset>
<filter token="DATE" value="${TODAY}"/>
</filterset>
</copy>