Having used ANT and Maven quite extensively I've have become a little disenchanted with them.
XML is not an easy language to develop scripts in.
ANT doesn't provide any defaults, you have to write everything from scratch. Loops are painful to implement.
Maven looks great to begin with, but if it goes wrong, or you want to do something slightly different to what a plugin provides...
Gradle provides a great middle ground.
Build scripts are written in a DSL that is implemented in Groovy.
Groovy can be used to implement new types.
'task' objects are instances of DefaultType; or other types if declared.
These tasks can depend on other tasks and can provide properties and methods.
Documentation: [PDF][HTML]