ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bill Rich <>
Subject Re: Divide And Conquer Ant Question
Date Fri, 14 Dec 2007 01:31:20 GMT

I use ant as a process control tool but have tried to keep my targets 
close to the ant model. I do use some looping over a set of files but 
only where it is truly needed. I try hard to use the depends and 
if/unless constructs to control the execution of targets. I have avoided 
using antcall or any of the other transfer of control targets.

I have very successfully used import for the purpose of breaking up a 
large file. It can be used at multiple levels which is even better. For 
a.xml can import b.xml
b.xml can import c.xml and d.xml
c.xml can import ...

This allows you to group targets according to their purpose so that 
related targets can be kept together. I find that targets can be used 
across the files without regard to where they exist as long as you make 
sure the import comes before any reference to the target. I believe this 
is a matter of physical positioning rather than logical positioning but 
I have not tried it to any great extent. In other words make sure you 
import the file containing the target before it is referenced in the 
file doing the import.

Don't get carried away with the depth of the structure as it can get 
mind boggling to remember where you put the target you need to work on. 
I would recommend no more than 3 levels deep, but, that is a matter of 
personal preference.

I ended up with 9 files. The main file contains only a target to echo a 
usage statement in case the user tries to run the targets with the wrong 
parameters and an import for the file that contains the main set of 
targets. The file containing the main set of targets imports other files 
that contain supporting targets and the file that contains all the 
macros used in the tasks.

I also use the import task to support a method of local extensions of 
the process by importing a file that can contain extension targets or 
override targets for the process. If this file does not exist ant just 
ignores it and goes on - no complaints. If the file exists the targets 
in it are available for use.

HTH Bill

Z W wrote:
> Hi
> I'm using Ant as a scripting tool much like a shell script to do various
> tasks of a project, not for a build purpose.
> I like to get opinions from the gurus here about this.
> I have various tasks written in a single build file. However, this file has
> become very large.
> I like to break this file up into multiple files, putting different targets
> into various build files,
> much like breaking a single large C file into multiple files.
> What's the best approach to this while minimizing script
> rewriting/maintainability ? (using antcall, import or something else)
> Thanks

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

View raw message