> And this is hardly surprising as I was confounding shell patterns and
> regular expressions. The following, while not working, is at least a
> suitable regular expression:
> 
>   <regexpmapper handledirsep="1"
>     from="${source.dir}/[-_a-zA-Z0-9]+/lib/(.*)"
>         to="\1" />

But of course, just for the fun of it, I had introduced some other
issues as well.

First, in a regression from what I had already learnt, I resupplied
the ${source.dir} to the mapper. However, ${source.dir} appears to be
the context directory for the copy task, so the character string
representing that path segment is not present in the paths to be
copied.

Second, the @handledirsep was happily switched off because "1" appears
to mean "no", and not "yes" as my intuition told me.

Third, while <regexpmapper> without @handledirsep appears to always copy
the files even when not necessary, <regexpmapper> *with* that attribute
only copies them when necessary, which is something to watch out for
when testing what works and what doesn't.

Here's working code:

<project default="copy">
  <property name="source.dir" location="src"/>
  <property name="target.dir" location="lib"/>
  <target name="copy">
    <copy todir="${target.dir}">
      <fileset dir="${source.dir}">
        <include name="*/lib/**/*.*"/>
        <exclude name="**/urmel.*"/>
      </fileset>
      <regexpmapper handledirsep="yes"
        from="^[-_a-zA-Z0-9]+/lib/(.*)"
          to="\1" />
    </copy>
  </target>
</project>

-- 
Michael Ludwig

Reply via email to