ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rich Wagner" <>
Subject RE: Anything like a "<foreach>" task ?
Date Tue, 15 Apr 2003 16:06:39 GMT
>From: Dominique Devienne <>
>Instead of going the <foreach> route, would you care to elaborate what this
>process of calling MyMainClass on every subdir does? Looks quite unusual
>from my perspective, and I somehow suspect another approach could be 

Well, in the interest of brevity, I simplified in my original pseudo-code.  
The body of the foreach in fact needs to (1) invoke a Java main program we 
have here at my company, which validates every XML file in the subdir 
against the file's schema, (2) invokes another Java utility which applies an 
XSLT script to every file in the subdir - though the utility does more than 
than (details I can't get into: the point is it's not feasible to replace 
this utility's invocation with a series of Xalan invocations: it's more 
complicated than that...), and (3) "native2ascii" is applied to every 
element of a corresponding outout subdir.

>Also, you should check out <apply type="dir"/>. This does an implicit loop
>on a fileset (a pseudo-<dirset> in this case, thanks to type="dir"), which
>quite often is better than using <foreach> (which many people jump to
>incorrectly. It's useful in some cases, but not that often IMHO).
>Regards, --DD

The Ant build file I'm writing is part of a web application 
installer/deployer which needs to run on Windows and UNIX platforms, so the 
OS-specific nature of <apply> isn't appealing...  At this point, the 
<foreach>-based approach is working just fine (and the installer can itself 
install the additional "ant-contrib" task JAR file), so while using <apply 
type="dir"/> might be an alternative, at this point pragmatics make this: 
"if it works, don't fix it..."

Rich Wagner

>-----Original Message-----
>From: Rich Wagner []
>Sent: Monday, April 14, 2003 1:50 PM
>Subject: Anything like a "<foreach>" task ?
>Hi Folks,
>I've been converting several Windows batch and UNIX shell scripts to Ant
>build files (quite successfully, I might add: platform independence is a
>good thing).  But the last script includes a "for" loop that I don't know
>how to convert: it's basically doing something like this pseudo-code:
>     $parentDir := "C:\x\y\z"
>     foreach $subdir in $parent\*
>         java -classpath ... MyMainClass $subdir
>     end
>I know I could write my own custom "foreach" task, and I know I could write
>a simple Java "main" wrapper which invokes "MyMainClass#main" for each
>subdirectory in a given parent, but...
>I was hoping Ant provides an "off-the-shelf" way of expressing what I need
>to do.  Any help ?  I've searched the Ant manual and haven't found what I'm
>looking for: have I missed something ?
>Many thanks,
>Rich Wagner
>P.S.  I've only been using Ant for a few weeks, but I've quickly become
>quite a fan.  It's WAAAYYY better than "make".
>But beyond being a great replacement for "make", I've been able to replace
>lots of redundant script pairs, i.e. (1) I used to have functionally
>equivalent pairs of Windows 98 and Windows NT scripts with stupid little
>variations like "deltree" vs "rmdir": converting those pairs to single Ant
>files solves that, and (2) likewise for functionally equivalent Windows and
>UNIX script pairs...  Many thanks to all those involved in providing this
>great tool...
>To unsubscribe, e-mail:
>For additional commands, e-mail:

Help STOP SPAM with the new MSN 8 and get 2 months FREE*

View raw message