Pathconvert

描述

將巢狀 資源集合,或僅一個資源集合的參考,轉換成特定平台的路徑形式,並可選擇將結果儲存到屬性中或寫入 Ant 資源。當您需要將資源集合轉換成清單,並以特定字元(例如逗號或空格)分隔時,也可以使用此任務,或相反地,例如將 FileList 中的檔案清單轉換成路徑。

可以指定巢狀 <map> 元素,以將 Windows 磁碟機代號對應到 Unix 路徑,反之亦然。

可以使用巢狀 <mapper>自 Apache Ant 1.6.2 起)來達成更複雜的轉換。

參數

屬性 描述 必要
targetos 目標架構。必須是 unixwindowsnetwaretandemos/2 之一。這是一種簡寫機制,用於根據指定的目標架構指定 pathsepdirsep
dirsep 在產生的路徑中用作目錄分隔符的字元。 否;預設為目前的 JVM File.separator
pathsep 在產生的路徑中用作路徑元素分隔符的字元。 否;預設為目前的 JVM File.pathSeparator
property 要放置轉換路徑的屬性名稱。 否,如果未設定 @property@dest,則會記錄結果
dest 要寫入轉換路徑的目的地資源(Ant 預設將其解釋為 File)。自 Ant 1.10.13 起 否,如果未設定 @property@dest,則會記錄結果
refid 要轉換的內容,指定為對在其他地方定義的 <path><fileset><dirset><filelist>參考 是,除非提供巢狀 <path> 元素
setonempty 即使結果為空字串,也要設定屬性嗎? 否;預設為 true
preserveduplicates 是否保留重複的資源。自 Ant 1.8 起 否;預設為 false

指定為巢狀元素的參數

map

指定 Unix 和 Windows 之間的路徑前綴對應。

屬性 描述 必要
from 要比對的前綴。請注意,當建置在 Windows 平台上執行時,此值不區分大小寫,而在 Unix 平台上執行時則區分大小寫。自 Ant 1.7.0 起,在 Windows 上,此值也不區分目錄所使用的斜線樣式,可以使用 /\
to from 匹配時要使用的替換文字。

每個映射元素指定要套用至正在處理的路徑元素的單一替換映射。如果未指定任何映射項目,則不執行任何路徑前置字串映射。

注意:映射元素會按指定的順序套用,且僅套用第一個匹配的映射元素。因此,如果任何 from 值是其他 from 值的前置字串,映射元素的順序就很重要。

資源集合

如果未指定 refid 屬性,則必須提供一個或多個巢狀的 資源集合

映射器

可以指定一個巢狀的 <mapper> 元素來執行各種檔案名稱轉換(自 Ant 1.6.2 起)。

範例

在以下範例中,假設 ${wl.home} 屬性的值為 d:\weblogic,而 ${wl.home.unix} 的值為 /weblogic

範例 1

在此,任務

<path id="wl.path">
  <pathelement location="${wl.home}/lib/weblogicaux.jar"/>
  <pathelement location="${wl.home}/classes"/>
  <pathelement location="${wl.home}/mssqlserver4/classes"/>
  <pathelement location="c:\winnt\System32"/>
</path>

<pathconvert targetos="unix" property="wl.path.unix" refid="wl.path">
  <map from="${wl.home}" to="${wl.home.unix}"/>
  <map from="c:" to=""/>
</pathconvert>

會產生下方顯示的路徑,並將其儲存在名為 wl.path.unix 的屬性中。

/weblogic/lib/weblogicaux.jar:/weblogic/classes:/weblogic/mssqlserver4/classes:/WINNT/SYSTEM32

範例 2

假設 FileList 定義為

<filelist id="custom_tasks.jars"
          dir="${env.HOME}/ant/lib"
          files="njavac.jar,xproperty.jar"/>

<pathconvert targetos="unix" property="custom_tasks.jars" refid="custom_tasks.jars">
  <map from="${env.HOME}" to="/usr/local"/>
</pathconvert>

會將檔案清單轉換為下列 Unix 路徑

/usr/local/ant/lib/njavac.jar:/usr/local/ant/lib/xproperty.jar

範例 3

在此,由檔案集(所有以 .java 結尾的檔案)所決定的檔案名稱會以逗號分隔結合,而產生的清單會放入屬性 javafiles 中。未指定目錄分隔符號,因此會預設為目前平台的適當字元。此類清單可接著用於其他任務,例如需要以逗號分隔的檔案清單的 javadoc

<fileset dir="${src.dir}" id="src.files">
  <include name="**/*.java"/>
</fileset>

<pathconvert pathsep="," property="javafiles" refid="src.files"/>

範例 4

此任務會將屬性 prop 設定為 Windows 和 Unix 上的 def|ghi

<pathconvert property="prop" dirsep="|">
  <map from="${basedir}/abc/" to=""/>
  <path location="abc/def/ghi"/>
</pathconvert>