Welcome to Ant1.5

Hello, and welcome to Ant1.5

For new users to Ant, welcome to a new way to build your software.

For veteran Ant users, its been, what nine months since Ant 1.4.1 shipped, and we've been as busy enhancing it as you've been using it.

We know you've been using Ant, not just from the all the bug reports we see, but from the awards we've been getting from JavaWorld and SD Magazine and from the fact that it is now clearly a mainstream product. Every quality IDE, from the Open Source projects: Emacs, NetBeans, Eclipse, JEdit, to the commercial offerings such as IntelliJ IDEA and JBuilder now have high quality Ant integration either built in or available as a download. And they do that not just because it improves their products, giving users the best of both worlds -great editors and a great build process, but because Java developers are starting to expect Ant (and JUnit) everywhere.

Even in mid-2001, if you said you were using Ant in your project, people would stare at you. Now, as long as you are talking with Java developers and not management or your family and friends, people will nod, shrug and maybe ask you questions about build file and Ant configurations. The good news: Ant 1.5 includes more helpful error messages and a new -diagnostics command to look at your Ant installation and help work out why things arent working.

Now, when you tell people you work on Ant in your spare time, people used to give you very funny stares; now they ask you about how to set up automated build processes, or deploy to some random app server. The good news: Ant 1.5 makes it easier to answer those questions. The other sign of mainstream is that there are also books on the subject, first Java Tools for Extreme Programming, then Ant: The Definitive Guide, and the first Ant1.5 book, Java Development with Ant, due to ship at the end of the month. (Steve says: I prefer the one with my name on the cover as co-author, but I'm biased). As usual, the manual has improved too: regardless of whether you need a book to work with Ant or not, you need that on-line documentation. And as usual, any extra contributions to the docs are welcome indeed.

Ant has also influenced how projects are built. Now when you download any open source project, or work with a closed source team, you expect to see a file called build.xml there. Equally important, you expect that build file to compile and run a set of tests using JUnit or a derivative thereof; if they are missing, you worry.

Together, Ant and JUnit have transformed the mainstream process for building and deploying Java projects. And that's pretty profound, when you think about it. What is equally impressive is that this was all done as a co-operative effort. Nobody works on Ant full-time; everybody uses it to solve their problems, to address their build crises and generally get something done in a hurry. It just so happens that the architectural model of Java classes bound via introspection to the XML build file makes it easy for people to add new tasks, extend existing ones and generally ease their way into developing and extending Ant. It is the users that have helped Ant become the success it is today, and will keep it that way tomorrow.

What has changed

So, what is new in Ant1.5? Lots of stuff. You will have to look at the whatsnew file to see, but basically the changes fall into a number of categories

  1. Bug fixes. We know, some things were broken in 1.4. In ant1.5 we have moved the bugs, fixing the ones we could, and no doubt adding different ones. Hopefully the total bug count has decreased.
  2. Scalability. Changes in <ant> and a few other tasks should make it easier to write large, scalable build files.
  3. Deployment. Take a look at the new <serverdeploy> task, add support for your server if it isnt there. Tomcat 4.1 has its own deployment tasks incidentally -fetch them from the tomcat pages.
  4. Ease of use. We have added new attributes to make the archive tasks consistent with each other, new error messages for common problems (you get a screenful of help when a task wont instantiate, for example), and generally try and be helpful. As usual, we will accept contributions to the documentation or the code for even more helpfulness. Hey, in ant1.5 you dont need to double escape the $ sign to preserve it in a string!
  5. Java 1.4 support. We build and test fine on Java 1.4, and have the extensions to javac needed to build code with assertions in. We should point out that we have more work to do in this area: if someone wants to write an <assertionset> datatype to give users control of which assertions to enable, and patch this in to things like the <junit> and <java> tasks, things would get very interesting.
  6. Continuous builds. Automated build tools are becoming more widely used; fork options on <javac> and <javadoc> are there to stop memory use growth on a continuous process.
  7. New platforms: MacOS X for owners of those cute little laptops, Novell Netware servers, and even z/OS and OS/390 for mainframe developers who write their build files on their virtual card punches.
  8. Conditions. Take a look at the <condition> tag to see what you can look for, then at <waitfor> to use the same tests in deployment. Finally, notice the if and unless attributes on <fail> for easy halting of the build on a condition, without having to resort to conditional targets.
There are many more enhancements, so we hope you will find your build projects easier. We have, as usual, jumped through hoops to keep existing builds working, even those build files that went out their way to not work on Java 1.4 (hint: dont ask for the classic compiler, it has gone away). If your build file stops working, and it isnt something listed on the 'changes that may break your build' part of the WHATSNEW file, or something we know about on bugzilla, please dont hesitate to file a new bug report, preferably one with a replicable test and a patch to fix the problem.

Thanks,

The Ant development team.

PS: many thanks for Magesh to being the build manager for this release! He has been busy since Feb/March organizing it. Magesh -you are so good at this you should do it next time too :)