Ant 提供一些預(yù)定義的數(shù)據(jù)類型。不要將術(shù)語“數(shù)據(jù)類型”和那些在編程語言中可用的數(shù)據(jù)類型相混淆,而是將他們視作一組已經(jīng)在產(chǎn)品中配置好的服務(wù)。
下述的數(shù)據(jù)類型是由 Apache Ant 提供的。
文件集的數(shù)據(jù)類型代表了一個文件集合。它被當(dāng)作一個過濾器,用來包括或移除匹配某種模式的文件。
例如,參考下面的代碼。這里,src 屬性指向項目的源文件夾。
文件集選擇源文件夾中所有的 .java 文件,除了那些包含有 'Stub' 單詞的文件。能區(qū)分大小寫的過濾器被應(yīng)用到文件集上,這意味著名為 Samplestub.java 的文件將不會被排除在文件集之外。
<fileset dir="${src}" casesensitive="yes">
<include name="**/*.java"/>
<exclude name="**/*Stub*"/>
</fileset>
一個模式集合指的是一種模式,基于這種模式,能夠很容易地過濾文件或者文件夾。模式可以使用下述的元字符進(jìn)行創(chuàng)建。
下面的例子演示了模式集合的使用。
<patternset id="java.files.without.stubs">
<include name="src/**/*.java"/>
<exclude name="src/**/*Stub*"/>
</patternset>
該模式集合能夠通過一個類似于下述的文件集進(jìn)行重用:
<filelist id="config.files" dir="${webapp.src.folder}">
<file name="applicationConfig.xml"/>
<file name="faces-config.xml"/>
<file name="web.xml"/>
<file name="portlet.xml"/>
</filelist>
文件列表數(shù)據(jù)類型與文件集相類似,除了以下幾處不同:
讓我們來看一個下述的關(guān)于文件列表數(shù)據(jù)類型的例子。在這個例子中,屬性 webapp.src.folder 指向該項目中的 Web 應(yīng)用的源文件夾。
<fileset dir="${src}" casesensitive="yes">
<patternset refid="java.files.without.stubs"/>
</fileset>
使用一個過濾器集合數(shù)據(jù)類型與拷貝任務(wù),你可以在所有文件中使用一個替換值來替換掉一些與模式相匹配的文本。
一個常見的例子就是對一個已經(jīng)發(fā)行的說明文件追加版本號,代碼如下:
<copy todir="${output.dir}">
<fileset dir="${releasenotes.dir}" includes="**/*.txt"/>
<filterset>
<filter token="VERSION" value="${current.version}"/>
</filterset>
</copy>
在這段代碼中:
path 數(shù)據(jù)類型通常被用來表示一個類路徑。各個路徑之間用分號或者冒號隔開。然而,這些字符在運行時被替代為執(zhí)行系統(tǒng)的路徑分隔符。
類路徑被設(shè)置為項目中 jar 文件和類文件的列表,如下面例子所示:
<path id="build.classpath.jar">
<pathelement path="${env.J2EE_HOME}/${j2ee.jar}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
</path>
在這段代碼中: