我想复制一个文件目录,并在此过程中重命名其中一些文件。 当我运行下面的脚本时,没有任何副本。 如果我在下面的文件中注释glob映像器,则复制文件(不重命名)
感谢您的帮助。 詹姆斯
<?xml version="1.0" ?>
<project name="Create project structure" default="main">
<target name="main" description="Copy template files to project folder">
<echo>Copying template files to project folder</echo>
<copy todir="${project.dir}" verbose="true" overwrite="true">
<fileset dir="${shared.files}/templateproject" excludes=".svn"/>
<mapper>
<chainedmapper>
<mapper type="glob" from="*PACKAGENAME*" to="*${package.name}*"/>
<mapper type="glob" from="*GAMENAME*" to="*${game.name}*"/>
<mapper type="identity"/>
</chainedmapper>
</mapper>
</copy>
</target>
</project>
答案 0 :(得分:14)
使用“移动”和Mnementh指示的正确映射器类型来解决方法。感谢
<?xml version="1.0" ?>
<project name="Create project structure" default="main">
<target name="main" description="Copy template files to project folder">
<echo>Copying template files to project folder</echo>
<copy todir="${project.dir}" verbose="true" overwrite="true">
<fileset dir="${shared.files}/templateproject" excludes=".svn" />
</copy>
<move todir="${project.dir}">
<fileset dir="${project.dir}" />
<mapper>
<mapper type="regexp"
from="(.*)PACKAGENAME(.*)" to="\1${package.name}\2" />
<mapper type="regexp"
from="(.*)GAMENAME(.*)" to="\1${game.name}\2" />
</mapper>
</move>
</target>
</project>
答案 1 :(得分:11)
似乎glob-mapper仅适用于一个'*'。我会尝试regexp-mapper:
<mapper type="regexp" from="(.*)PACKAGENAME(.*)" to="\1${package.name}\2"/>
<mapper type="regexp" from="(.*)GAMENAME(.*)" to="\1${game.name}\2"/>
答案 2 :(得分:5)
您的问题是您没有选择正确的映射器:<chainedmapper>
会将信息从第一个映射器传递到最后一个映射器
相反,应该使用<firstmatchmapper>
,它将依次尝试所有映射器,直到匹配
参考:http://ant.apache.org/manual/Types/mapper.html
(相当古老的问题,但我刚刚找到了几乎相同的问题: - ))