具有许多映射器问题的Ant副本

时间:2011-02-09 10:41:51

标签: ant

我想将所有目录复制到另一个目录,但我必须重命名一个文件。 我正在尝试这个:

<copy todir="destDir" enablemultiplemappings="true">
  <fileset dir="sourceDir"/>
  <compositemapper>
    <identitymapper />
    <globmapper from="oldFileName" to="newFileName"/>
  </compositemapper>
</copy>

但是这个任务会复制所有文件,而不是复制重命名的文件。在destDir目录中,我有两个文件: destDir \ oldFileName destDir \ newFileName 。但我只需要 destDir \ newFileName 。有人可以帮我这个吗?

编辑:  我需要将sourceDir中的所有文件复制到destDir,并仅重命名名为“oldFileName”的文件。

1 个答案:

答案 0 :(得分:1)

设置enablemultiplemappings="false",并交换地图制作器的顺序:

<copy todir="destDir">
  <fileset dir="sourceDir" />
  <compositemapper>
    <globmapper from="oldFileName" to="newFileName" />
    <identitymapper />
  </compositemapper>
</copy>

如果没有启用多个映射,则第一个生成文件名的映射“获胜”。因此对于需要重命名的文件,将应用glob。对于所有其他文件,身份映射器将按原样命名。