I'd like to copy a directory of files, and rename some of them in the process.
When I run the script below, nothing copies.
If I comment the glob mappers in the file below, the files are copied (without the renaming)
Thanks for any help.
James
<?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>
Resorted to a workaround, using "move", and the correct mapper type as indicated by Mnementh. Thanks
<?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>
It seems, that the glob-mapper works only with one '*'. I would try the regexp-mapper:
<mapper type="regexp" from="(.*)PACKAGENAME(.*)" to="\1${package.name}\2"/>
<mapper type="regexp" from="(.*)GAMENAME(.*)" to="\1${game.name}\2"/>
Your problem is that you did not choose the right mapper: <chainedmapper>
will pass information in chain from the first to the last mapper
Instead, <firstmatchmapper>
should be used, which will try all mappers in turn, until one matches
Reference: http://ant.apache.org/manual/Types/mapper.html
(quite an old question, but I just found searching for almost the same problem :-))