Setup
I’m a visual thinker, so things always become clearer to me when I draw out the elements I want to create or code. I prefer to have a system give me visual feedback, which is why I always start my Ant files with a better method to trace out the information for debugging.
My basic setup includes a way to trace my message to Growl. Growl is a notification system that other programs can hook into and make use of. It offers both Mac and Windows versions. Growl can “listen” for incoming connections, and that is exactly what we would like it to do here. Open up Growl’s preferences, click on the Network tab, and check the “Listen for incoming notifications” option (Figure 3-4).

Figure 3-4. Allowing Growl to listen to incoming connections
Since we added the binaryblizzard.jar and growllistener-0.4.jar files to Ant’s classpath,
we can now make use of them by calling the taskdef in
the Ant file. Taskdef is basically an import statement that you can call
with a function name and a reference to a class name. The following line makes the
task growl available for Ant to use by
implementing it from the net.slimeslurp.growl.GrowlEcho class:
<taskdef name="growl" classname="net.slimeslurp.growl.GrowlEcho" />
Now open the OS X Terminal utility and type:
set ANT_ARGS=-listener net.slimeslurp.growl.GrowlListener
This ensures that Growl can listen to notifications coming from Ant. It is always a good idea ...