将嵌套的 资源集合 或单个资源的引用转换为特定平台的路径形式,可选地将结果存储到属性中或写入 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 时要使用的替换文本。 | 是 |
每个 map 元素指定一个要应用于正在处理的路径元素的单个替换映射。如果未指定任何 map 条目,则不执行任何路径前缀映射。
注意:map 元素按指定的顺序应用,并且只应用第一个匹配的 map 元素。因此,如果任何 from 值是其他 from 值的前缀,则 map 元素的顺序可能很重要。
如果未指定 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 id="custom_tasks.jars" dir="${env.HOME}/ant/lib" files="njavac.jar,xproperty.jar"/>
的 FileList,那么
<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
在这里,由 fileset(所有以 .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>