In the Java world, Ant has been a runaway success. Almost as soon as it appeared, it took over from Make as the standard build tool for Java-based systems. Arguably the single biggest factor in Ant's success is the platform independence of the tasks as far as the person writing a build is concerned -- instead ofhaving to carefully craft shell scripts do deal with different platforms as is the case with Make, Ant
just handles it all.
However, there are some problems with Ant. The two most important of these are a) XML; and b) XML. XML is a hard to work with markup language at the best of times, and because it is purely declarative, it is very hard to express even simple control flow constructs. Also Ant XML files do not allow easy synthesis of targets; the XML has to be hand written explicitly.
How can this be improved? Replace the use of XML with the use of a dynamic programming language! Whilst Jython and JRuby are options, the obvious choice due its tight integration with Java and the JVM is Groovy.
In this talk, Russel will explain how
Gant is a framework for scripting Ant tasks using Groovy. He will show how Ant tasks are scripted, but also how new abstractions can be created to make things even easier. He will explain how the "killer blow" of Gant is that you can program the writing of the targets, and you have control flow. Anyone who has used SCons, Rake, or Rant will be familiar with the freedom and expressivity of using a dynamic programming language to program builds. Gant brings this capability to the build tasks every Java programmer already knows; the Ant tasks.
The Gant Challenge
The Gant Challenge: Bring a small Ant script that irritates you to the session and see it transformed into a Gant script that will be more elegant.
(It is true that Maven has dented Ant's hegemony of the Java build world a little. Many people like the convention over configuration approach. Many people though still prefer the freedom of Ant, but in a hybrid way, they use the Maven Ant task to gain access to the Maven repository, which has become an essential resource for most Java projects.)
PS Gant is an integral part of Grails, so there are lots of Gant users already.