I have just started looking at Ant for my projects, and I have a few questions about it.
I like the concept of Ant, but being a long-time make-head, I notice a few glaring holes in it. If anyone has answers for these, I'd love to hear them, otherwise I may take a whack at adding some of them to the project. - Ant seems to be based entirely on what make calls pseudo-targets. Is there any support for real, file dependency checks? As it is, Ant is ok (not great, see below) for Java builds, but lacks for full-system builds. - Java dependencies! This is not a weakness in Ant, per se, but the apparent lack of dependency support makes it hard to work around. The peculiarities of the Java environment and tools make it hard to do minimal-rebuilds on it. The javac task in Ant does the naive rebuild which I had also coded into several make-based builds over the years - if .java is newer than .class, recompile it. Well, that's great, but 1) it tends to be slow and 2) .java files have dependencies between them that are not addressed by this scheme. Jikes can produce inter-file dependency lists, but Ant seems to have no way to use them. I addressed both of these in the past by doing "deep" rebuilds using Jikes - but only on the project "entry-points", i.e. classes containing main or that are dynamically loaded by the class loader. I don't quite see how to do this with Ant today. - Iteration. Ok, make can't do it either. But you *can* embed "for" commands in the tasks for a make target. Yeah, it isn't portable, but there it is. (BTW, I use GNU make and the Cygwin tools to get "portability" to Windoze.) One other feature I'd love to see in Ant is cleaner support for list/path structures, like classpaths. These suckers would be much more readable if each element of the path appeared in a sub-tag, instead of all shoved into one attribute. (And yes, it takes GNU make and a nasty macro to do it, but I have done this one in make, too.) Any comments? As I said, I like the concept of Ant, but these few things are kinda holding me back. I'd love to contribute to the project, though (in all of my copious free time, of course. :-) Thanks, Roger Vaughn
