映射器类型。映射器实现了文件重命名算法,告诉像<copy>等任务在文件重命名时如何进行操作
类型 |
描述 |
identity(是<copy>和<move>的默认映射器) |
目标文件和源文件名称一致,并且目录结构一致 |
flatten
|
将源文件名映射到目标文件名时会移除所有的目录信息,即目标文件名中不会包含源文件名中的目录信息 |
Glob |
Glob映射器非常有用,它可以完成简单的文件重命名操作。将将源文件名映射到目标文件名时会保留所有的目录信息 |
Regexp |
regexp映射器在它的from属性中采用一个正则表达式。匹配这个模式的源文件可以被映射到目标文件。将将源文件名映射到目标文件名时会保留所有的目录信息。 |
Package
|
它的功能与glob类似,不同之处在于它将分隔符用点位符(.)替换,这样可以将一个分层结构的包目录文件映射为扁平目录结构,而其包结构被保存在文件名中,即将将源文件名映射到目标文件名时不会保留所有的目录信息,而是将目录信息保存到文件名中 |
unpackage |
与package相反的映射器,它可以把文件名中的句点转换为目录分隔符 |
Merge |
|
Composite |
|
Chained
|
<target name="copythree" depends="init"> <copy todir="dist/source"> <fileset dir="src" includes="**/*.java" /> <chainedmapper> <flattenmapper /> <globmapper from="*.java" to="*.txt" /> </chainedmapper> </copy> </target> 该target:1.通过<flattenmapper>将源文件复制到一个扁平化的目录中。 2.然后再用<globmapper>将文件的后缀改为.txt |
说明:1.第一个映射器是identity映射器,它是<copy>和<move>任务的默认映射器。当任务需要一个映射器,又不用对文件名进行任何变换时,可以使用它:<identitymapper>。
简单实例:
<?xml version="1.0"?> <project name="fivebuild" > <target name="init"> <mkdir dir="dist" /> </target> <target name="clean" > <delete dir="dist" /> </target> <!--将源文件lib中的jar拷贝到dist目录中,并重命名jar--> <target name="copy" > <copy todir="dist" > <fileset dir="lib" includes="**/*.jar" /> <globmapper from="*.jar" to="*.jar.bak" /><!--jar包的后缀改为bak--> </copy> </target> <target name="copythree" depends="init"> <copy todir="dist/source"> <fileset dir="src" includes="**/*.java" /> <chainedmapper> <flattenmapper /> <globmapper from="*.java" to="*.txt" /> </chainedmapper> </copy> </target> </project>