一、概述
pathconvert是Ant内置任务,用于将嵌套的资源集合或仅对一个的引用转换为特定平台的路径格式, 可选择的将结果存储到给定属性中。当需要将资源集合转换为由给定的字符(如逗号或空格)分隔的列表,或者反过来将文件列表转换为路径。嵌套map元素将Windows驱动器号映射到Unix路径,反之亦然。Ant1.6.2后可以使用mapper进行更复杂的转换。
二、属性
targetos:目标体系结构,可选值为unix、windows、netware、tandem或os/2。这是一种根据指定的目标体系结构指定pathsep和dirsep的简写机制。
dirsep:做为路径中的目录分隔符的字符。默认为JVM的File.separator。
pathsep:做为路径中的路径元素分隔符的字符。默认为JVM的File.pathSeparator。
property:保存转换后的路径的属性名。如果不设置结果会记入日志。
refid:要转换的path、fileset、dirset或filelist的引用。
setonempty:如果结果是空字符串,是否设置属性,默认为true。
preserveduplicates:ant1.8起,是否要保留重复的资源,默认为false。
支持以下嵌套元素:
map:指定Unix和Windows之间路径前缀的映射。每个map元素指定应用于正在处理的路径的元素的单个替换映射。如果没有指定map条目,则不执行前缀替换。映射元素按照指定的顺序应用。并且只应用第一个匹配的map元素,所以如果某个from值是其他from值的前缀时,map元素的顺序是很重要的。具有以下属性:
from:要匹配的前缀。在windows平台上运行不区分大小写,在Unix平台上运行区分大小写。ant1.7起,windows平台上对于用于目录的斜杠样式也是不区分“/”或“\”的。
to:匹配from时替换的文本。
资源集合:如果没有指定refid属性,那么必须提供至少一个资源集合。
mapper:ant1.6.2起,可以使用单个mapper嵌套元素来进行各种各样的文件名转换。
三、简单示例
<project>
<fileset id="antjars" dir="${ant.home}\lib" includes="*.jar" />
<pathconvert targetos="unix" property="ant.jars" refid="antjars">
<map from="${ant.home}" to="usr/local"/>
</pathconvert>
<echo>${ant.jars}</echo>
</project>