Iterating through a directory with Ant

Posted by Shaggy Frog on Stack Overflow See other posts from Stack Overflow or by Shaggy Frog
Published on 2010-05-17T22:00:18Z Indexed on 2010/05/18 0:21 UTC
Read the original article Hit count: 505

Filed under:

Let's say I have a collection of PDF files with the following paths:


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.:


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="${}">
        <arg value="-q"/>
        <arg value="-r72"/>
        <arg value="-sDEVICE=png16m"/>
        <arg value="-sOutputFile=${thumbnail.image.path}"/>
        <arg value="${input.pdf.path}"/>

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.

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.

I tried something like:

    <for param="file">
            <fileset dir="${some.dir.path}/pdfs">
                <include name="**/*.pdf"/>
            <echo message="@{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.

© Stack Overflow or respective owner

Related posts about ant

Related posts about fileset