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