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>

上一篇: Apache Ant If和Unless用法 下一篇: Apache Ant自定義組件