2012-07-09 79 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>