Oliver asks why Ant2 is not required? I know Oliver well (we used to sit in adjacent cubicles) and he likes to ask these curly questions, especially while keeping a straight face. Undaunted, I will attempt an answer here.
To really answer this question we need to agree what Ant2 means or meant. If we are referring to the feature set described on the Ant site then many of those things have already come to pass. Data types, multithreading, conditionals, filtersets, javac facade, etc are all in Ant now. An SSH task has just been added and Ant 1.6 will support XML files with namespaces (there is some way to go on what interpretation Ant might give to a namespace). Over time more will also be coming along. In many ways, therefore, Ant2, especially from a user’s point of view is coming along – it’s just still called Ant 1.x
From an Ant developer’s point of view, however, the internals of Ant, what we refer to as the core, are not drastically different, although not static by any means. Many of the issues we have known about, such as poor core/task separation, poor encapsulation, the classloader hierarchy and package collisions are still there.
The question is how to solve these problems. It is easy to start from a clean sheet of paper and, with the benefit of hindsight, design a new Ant core which can be quite compatible with Ant 1.x. Well maybe easy is bit of an understatement but it can be done and I have in fact done that once. Adoption of such a revolution is quite hard to achieve. It is just too much of a change for people to feel comfortable with. Pushed too hard it could be a community breaker.
So, my conclusion is that evolutionary change is probably the way to go. Joel spolsky’s article is pretty relevant here. Changes need to be achieved in incremental fashion sometimes through the use of what I would call micro revolutions. These might even entail micro breakages in compatability.
So, let me change things a little. Let me define Ant2 as the first Ant release which requires JDK 1.2+ for the core function. So, if we were to take that decision now, Ant 1.6 would be called Ant 2.0.
Is Ant2 required? No, not yet.