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 includeexclude模式都區分大小寫。
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是一組過濾器,由兩個主要操作(任務)複製和移動使用。 它使用idrefid屬性,id用於定義FilterSetrefid用於參照另一個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>