ANT根据模式选择一个文件,移动到dest并重命名



我试图复制所有目录下的文件,从以_${env}.xml结尾的根文件夹开始,如果找到文件名,则从文件名中删除_${nv},或者复制目录中存在的xml文件。我做不到,请帮帮我。(可能我需要一个移动和映射器来重命名,但不知何故我无法将它们编织在一起。)

<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>

查看<copy>任务的手册——<copy>可以将<mapper>作为嵌套元素,它可以在复制过程中使用模式更改文件名。<mapper>有很多类型,其中一些类型甚至可以使用javascript更改文件名。

所以。。。也许你可以这样做(没有测试,所以不确定它是否有效):

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

首先将bin-debug目录下的所有XML文件复制到qa-wprelease。对于qa-wprelease中以_${env}.xml结尾的每个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>

最新更新