As my friends know, I dont like Ant. Fortunately I've had the chance to work with nant (Not Ant). NAnt has really learned from many of the limitations and mistakes in Ant. NAnt has many nice features: expressions, dynamic properties, overwritable properties, and .Net scripting to name a few that I've used this week. The .Net scripting is very nice since you can quickly create a function in C# to include in your build. Then it is easy to call the function using NAnt expressions. Plus C# has access to all the functions you could ever need or want in a build script. The result is a cleaner and more flexable build script than possible with Ant. Next time I need a build script (even for a Java project), I'm going to use NAnt and not Ant. (see also nantcontrib)
Now if they would get rid of the XML based build scripts.