將巢狀 資源集合,或僅一個資源集合的參考,轉換成特定平台的路徑形式,並可選擇將結果儲存到屬性中或寫入 Ant 資源。當您需要將資源集合轉換成清單,並以特定字元(例如逗號或空格)分隔時,也可以使用此任務,或相反地,例如將 FileList 中的檔案清單轉換成路徑。
可以指定巢狀 <map>
元素,以將 Windows 磁碟機代號對應到 Unix 路徑,反之亦然。
可以使用巢狀 <mapper>
(自 Apache Ant 1.6.2 起)來達成更複雜的轉換。
屬性 | 描述 | 必要 |
---|---|---|
targetos | 目標架構。必須是 unix、 windows、 netware、 tandem或 os/2之一。這是一種簡寫機制,用於根據指定的目標架構指定 pathsep 和 dirsep。 |
否 |
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 |
指定 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。
在此,任務
<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
假設 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
在此,由檔案集(所有以 .java 結尾的檔案)所決定的檔案名稱會以逗號分隔結合,而產生的清單會放入屬性 javafiles
中。未指定目錄分隔符號,因此會預設為目前平台的適當字元。此類清單可接著用於其他任務,例如需要以逗號分隔的檔案清單的 javadoc
。
<fileset dir="${src.dir}" id="src.files"> <include name="**/*.java"/> </fileset> <pathconvert pathsep="," property="javafiles" refid="src.files"/>
此任務會將屬性 prop
設定為 Windows 和 Unix 上的 def|ghi
。
<pathconvert property="prop" dirsep="|"> <map from="${basedir}/abc/" to=""/> <path location="abc/def/ghi"/> </pathconvert>