Ant 數(shù)據(jù)類型

2022-07-19 10:15 更新

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ū)分大小寫(xiě)的過(guò)濾器被應(yīng)用到文件集上,這意味著名為 Samplestub.java 的文件將不會(huì)被排除在文件集之外。

<fileset dir="${src}" casesensitive="yes">
   <include name="/.java"/>
   <exclude name="/Stub"/>
</fileset>

模式集合

一個(gè)模式集合指的是一種模式,基于這種模式,能夠很容易地過(guò)濾文件或者文件夾。模式可以使用下述的元字符進(jìn)行創(chuàng)建。

  • ? -僅匹配一個(gè)字符
  • *-匹配零個(gè)或者多個(gè)字符
  • **-遞歸地匹配零個(gè)或者多個(gè)目錄

下面的例子演示了模式集合的使用。

<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ù)類型與文件集相類似,除了以下幾處不同:

  • 文件列表包含明確命名的文件的列表,同時(shí)其不支持通配符。
  • 文件列表數(shù)據(jù)類型能夠被應(yīng)用于現(xiàn)有的或者還不存在的文件中。

讓我們來(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>

過(guò)濾器集合

使用一個(gè)過(guò)濾器集合數(shù)據(jù)類型與拷貝任務(wù),你可以在所有文件中使用一個(gè)替換值來(lái)替換掉一些與模式相匹配的文本。

一個(gè)常見(jiàn)的例子就是對(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>

在這段代碼中:

  • 屬性 output.dir 指向項(xiàng)目的輸出文件夾。
  • 屬性 releasenotes.dir 指向項(xiàng)目的發(fā)行說(shuō)明文件夾。
  • 屬性 current.version 指向項(xiàng)目的當(dāng)前版本文件夾。
  • 拷貝任務(wù),顧名思義,是用來(lái)將文件從一個(gè)地址拷貝到另一個(gè)地址。

路徑

path 數(shù)據(jù)類型通常被用來(lái)表示一個(gè)類路徑。各個(gè)路徑之間用分號(hào)或者冒號(hào)隔開(kāi)。然而,這些字符在運(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>

在這段代碼中:

  • 屬性 env.J2EE_HOME 指向環(huán)境變量 J2EE_HOME 。
  • 屬性 j2ee.jar 指向在 J2EE 基礎(chǔ)文件夾下面的名為 J2EE jar 的文件。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)