2012-07-09 75 views
4

我试图复制文件在以_ $ {env} .xml结尾的根文件夹下的所有目录下,并将_ $ {env}从文件名如果找到或复制XML文件,无论目前在哪里存在。我不能得到这个工作,请帮助。(可能我需要一个移动和映射器重命名,我不知道如何编织它们在一起。)ANT根据模式选择一个文件,移动到dest并重命名

<target name="main"> 
    <copy todir="qa-wprelease"> 
     <fileset dir="bin-debug" includes="**/*.xml"> 
      <or> 
       <filename name="*_${env}.xml"/> 
       <filename name="*.xml" /> 
      </or> 
     </fileset> 
    </copy> 
</target> 

回答

10

检查<copy>任务的手册 - <copy>可以采取<mapper>嵌套的元素,它可以用一个模式复制过程中更改文件名。 <mapper>有许多类型,其中一些甚至可以使用JavaScript来更改文件名。

所以......也许你能做到这样(没有测试过所以不知道是否可行):

<copy todir="qa-wprelease" includeemptydirs="false"> 
    <fileset dir="bin-debug" includes="**/*.xml" /> 
    <globmapper from="*_${env}.xml" to="*.xml"/> 
</copy> 
0

首先将bin-debug目录下的所有XML文件复制到qa-wprelease。对于以_${env}.xml结尾的qa-wprelease中的每个XML文件,请使用<move>任务删除_${env}

<target name="main"> 
    <mkdir dir="qa-wprelease" /> 

    <copy todir="qa-wprelease" includeemptydirs="false"> 
    <fileset dir="bin-debug" includes="**/*.xml" /> 
    </copy> 
    <move todir="qa-wprelease" includeemptydirs="false"> 
    <fileset dir="qa-wprelease" includes="**/*_${env}.xml" /> 
    <mapper type="glob" from="*_${env}.xml" to="*.xml"/> 
    </move> 
</target>