ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Benson <>
Subject Re: Thinking in Ant...
Date Tue, 05 Oct 2004 14:58:37 GMT
--- Richard Russell <> wrote:
> I tried using <for> and <var>, but found that I
> couldn't do much with 
> <var>, as it appeared that the only way I could set
> the var was with the 
> <var> task, and I needed to use functionality in
> <propertycopy> to get 
> double-redirection. I can't *quite* recall why this
> didn't work, but it 
> didn't. If you like, I'll try to recreate what I was
> trying to do, and see 
> if I can demonstrate the problem I had...

Okay... my understanding of the problem was that you
had a set of files whose contents you wanted to append
to identically named files in another location... so I
am ignoring recursive property resolution because I
don't see how it applies... <var> is for use with
<pathconvert>.  You don't *really* need it, but here I
would use it personally.  Even better would be local
properties for macros, but that's another story... so
we are going to use <for> and <concat>...

> I'm not sure what <pathconvert> can do for me
> here... A mapper sounds more 
> useful (eg <globmapper from="${dir1}/*"
> to="${dir2}/*"/>), but I don't think it can be used
> with <concat> ...

Ah, but since 1.6.2 <pathconvert> supports a nested
<mapper>.  Actually before that it also supported
limited mapping via its <map> subelements, but I'm
personally more comfortable with <mapper>s so that's
what we'll use here... the following is untested:

<property name="dest.dir" location="dest" />
<property name="src.dir" location="src" />

<!-- mapper may not be perfect; experiment -->
<mapper id="src2dest" type="glob"
        from="${src.dir}/*" to="${dest.dir}/*" />

<for param="f">
  <fileset id="fs" dir="${src.dir}" includes="*" />
    <!-- unset so we can reuse -->
    <var name="destfile" unset="true" />
    <fileset id="f" file="@{f}" />
    <pathconvert property="destfile">
        <fileset refid="f" />
      <mapper refid="src2dest" />
    <concat destfile="${destfile}" append="true">
      <fileset refid="f" />

As you can see, I only used <var> to unset the
destfile property.  The alternative is to use a
different property for every file... @{f}.dest
perhaps, but large numbers of dynamically generated
property names just feels wrong to me.  That's an old
argument.  Anyway, the above should be somewhere in
the neighborhood assuming I understood the problem


Do you Yahoo!?
New and Improved Yahoo! Mail - Send 10MB messages! 

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message