`
weigang.gao
  • 浏览: 468041 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

映射器 (5.1)

 
阅读更多

映射器类型。映射器实现了文件重命名算法,告诉像<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>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics