views:

4148

answers:

2

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>
+2  A: 

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"/>
Mnementh
Thanks for your answer. That is the right type of mapper to use.However, the mappers only want to work one at a time - if I comment out two of them, the other one will work. I need them to each of them to be tested - try the first replace, then the second replace, if not copy anyway (the identity mapper).Thanks anyway - this has been helpful.
tarling
+1  A: 

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>
tarling
Very useful, thanks!
Jörn Zaefferer