Gant is a build tool for scripting Ant tasks using Groovy instead of XML to specify the build logic. It is a Groovy application in that a build specification is a Groovy script. Whilst it might be seen as a competitor to Ant, Gant relies on all the Ant tasks for actually doing things, so it is really an alternative way of doing builds using Ant, but without the XML files.
Here is an example Gant script:
In this script there are two targets, default and otherStuff -- the target default is the what is run when Gant is executed from the command line with no target as parameter.
Tasks are closures so they can be called as functions, in which case they are executed as you expect, or they can be dependencies to other tasks by being parameters to the depends function, in which case they are executed if an only if they have not been executed already in this run.
You may be wondering about the stuff at the beginning of the script. Gant has two ways of using pre-built sub-scripts, either textual inclusion of another Gant script or the inclusion of a pre-compiled class. The example here shows the latter -- the class org.codehaus.groovy.gant.targets.Clean is a class that provides simple clean capabilities.
Gant provides a way of finding what the documented targets are:
The messages on this output are exactly the strings associated with the task name in the introduction to the task.
Currently Gant builds and installs itself in an existing Groovy installation and is being used by me for various build tasks including building static websites. The ability to have arbitrary Groovy methods within the build scripts makes a Gant build script so much easier to work with that the mix of XML and Groovy scripts that using Ant necessitates. But then maybe this is an issue of individual perception. But then Gant is not about replacing Ant, it is about having a different way of working with the tasks and ionfrastructure that Ant provides.
Gant has not had a release yet but is to be found in the Groovy Subversion repository. You can get a copy by:
Obviously the first time you install Gant, there is no Gant to build and install Gant, there is therefore an Ant build script to allow the bootstrapping.
If you give it a go and have some feedback, do let me know either on the Groovy User mailing list or by direct email to me email@example.com