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](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>