Ant映射器和保留文件夹结构

时间:2011-06-03 01:14:32

标签: java ant

不确定是否有专门针对此的文档,在仔细阅读蚂蚁文档并进行实验后找不到它,但主要就是这样:

让我们说在我的Ant构建中我想收集某个文件夹中的所有图像以及该文件夹中的所有子文件夹,这样我就可以通过ImageMagick运行它们来转换和调整移动图像的大小。我用

<apply executable="\pathtoImageMagick\convert">
  <fileset dir="${from.dir}/${dir.publish}/${dir.images}" />
  <srcfile />
  <arg value="-resize" />
  <arg value="25%" />
  <targetfile />
  <mapper type="glob" from="*" to="${from.dir}/${dir.publish}/${dir.images}/mobile.*" />
</apply>

这适用于第一级文件,这样在test.jpg旁边我得到mobile.test.jpg。

不幸的是,如果我在子文件夹中有图像,请在文件夹${from.dir}/${dir.publish}/${dir.images}/home中说test.jpg并且我希望它转到${from.dir}/${dir.publish}/${dir.images}/home/mobile.test.jpg,我该怎么做?它试图创建${from.dir}/${dir.publish}/${dir.images}/mobile.home/test.jpg,这是不正确的。

来自具有Ant和mapper经验的人的任何想法?非常感谢。

2 个答案:

答案 0 :(得分:2)

Glob映射在这里没用,因为你想在匹配的'atom'中插入一些东西。这种映射的Ant文档中有一个使用regexpmapper的示例,如:

<mapper type="regexp" from="(.*)/([^/]+)" to="\1/mobile.\2" />

from说:抓住\1的目录路径,抓取文件名\2。然后在to中插入前缀。

答案 1 :(得分:0)

也许我读错了,但你是否也试图将图像从一个目录移动/复制到另一个目录中?

如果没有,您只需要将*.jpg的任何子目录中的所有${from.dir}/${dir.publish}/${dir.images}个文件映射到mobile.*.jpg,然后尝试:

<fileset includes="${from.dir}/${dir.publish}/${dir.images}/**/*" />
...
<mapper type="glob" from="*" to="mobile.*" />

<fileset>元素应该包含该路径的所有子目录中的所有文件,并且映射器应该包含“mobile”。它的文件名。