我正在尝试复制以_ $ {env} .xml结尾的根文件夹开始的所有目录下的文件,如果找到则从文件名中删除_ $ {env}或复制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>
答案 0 :(得分: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>
答案 1 :(得分:0)
首先将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>