使用 Ant 遍历目录 [英] Iterating through a directory with Ant
问题描述
假设我有一组具有以下路径的 PDF 文件:
Let's say I have a collection of PDF files with the following paths:
/some/path/pdfs/birds/duck.pdf
/some/path/pdfs/birds/goose.pdf
/some/path/pdfs/insects/fly.pdf
/some/path/pdfs/insects/mosquito.pdf
我想做的是为每个尊重相对路径结构的 PDF 生成缩略图,并输出到另一个位置,即:
What I'd like to do is generate thumbnails for each PDF that respect the relative path structure, and output to another location, i.e.:
/another/path/thumbnails/birds/duck.png
/another/path/thumbnails/birds/goose.png
/another/path/thumbnails/insects/fly.png
/another/path/thumbnails/insects/mosquito.png
我希望这在 Ant 中完成.假设我将在命令行上使用 Ghostscript 并且我已经解决了对 GS 的调用:
I'd like this to be done in Ant. Assume I'm going to use Ghostscript on the command line and I've already worked out the call to GS:
<exec executable="${ghostscript.executable.name}">
<arg value="-q"/>
<arg value="-r72"/>
<arg value="-sDEVICE=png16m"/>
<arg value="-sOutputFile=${thumbnail.image.path}"/>
<arg value="${input.pdf.path}"/>
</exec>
所以我需要做的是计算出 ${thumbnail.image.path}
和 ${input.pdf.path}
的正确值,同时遍历PDF输入目录.
So what I need to do is work out the correct values for ${thumbnail.image.path}
and ${input.pdf.path}
while traversing the PDF input directory.
我可以访问 ant-contrib(刚刚安装了最新的",即 1.0b3)并且我使用的是 Ant 1.8.0.我想我可以使用
任务、
s 和
s 来做一些工作,但我无法将所有内容整合在一起.
I have access to ant-contrib (just installed the "latest", which is 1.0b3) and I'm using Ant 1.8.0. I think I can make something work using the <for>
task, <fileset>
s and <mapper>
s, but I am having trouble putting it all together.
我尝试了类似的东西:
<for param="file">
<path>
<fileset dir="${some.dir.path}/pdfs">
<include name="**/*.pdf"/>
</fileset>
</path>
<sequential>
<echo message="@{file}"/>
</sequential>
</for>
但不幸的是 @{file}
属性是一个绝对路径,我找不到任何简单的方法将其分解为相关组件.
But unfortunately the @{file}
property is an absolute path, and I can't find any simple way of decomposing it into the relative components.
如果我只能使用自定义任务执行此操作,我想我可以编写一个,但我希望我可以将现有组件插入在一起.
If I can only do this using a custom task, I guess I could write one, but I'm hoping I can just plug together existing components.
推荐答案
在顺序任务中,您可以使用 ant-contrib propertyregex 任务将输入路径映射到输出.例如:
In the sequential task you could may be able to use the ant-contrib propertyregex task to map the input paths to output. For example:
<propertyregex override="yes" property="outfile" input="@{file}"
regexp="/some/path/pdfs/(.*).pdf"
replace="/another/path/\1.png" />
哪些映射,例如 /some/path/pdfs/birds/duck.pdf
到 /another/path/birds/duck.png
.
Which maps, for example /some/path/pdfs/birds/duck.pdf
to /another/path/birds/duck.png
.
这篇关于使用 Ant 遍历目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!