This Week in Gradle (2012-4)

If you haven’t had a chance yet, have a look at our new website . We feel so much better now :). I think the site now reflects very well the mission of Gradle.

The Jenkins and Gradle teams are collaborating on improving the Jenkins-Gradle integration. We plan a number of what I think are very interesting and unique features. Right now we are very excited, that Jenkin’s Andrew Bayer has developed the first version of a Gradle plugin for developing Jenkins plugins .

We have enhanced our built-in code quality plugins. There is now a checkstyle, codenarc, findbugs, pmd and jdepend plugin. This is based on a contribution by Andrew Oberstar.

We invested a lot of resources into our tooling API. The main consumer of this API are the IDE plugins. The tooling API is nothing internal though. It is the endorsed way to use Gradle embedded. There is now a chapter in the userguide about it, with some initial content.

*** If you want to keep up with these “This Week in Gradle” posts you can access them directly via their tag link or in an RSS reader with the feed for just these posts. ***

Plugin Updates

We would like to give a special thanks to Benjamin Muschko for his contributions to the Gradle plugin ecosystem. Here is a summary of Benjamin’s latest activity:

  • There is a new new Gradle plugin based on Java2Html for turning source code into HTML, RTF, TeX and XHTML.

  • There is a new version of the Tomcat plugin that lets you set HTTP(S) protocol handlers via convention property. bmuschko

  • There is a new version of the clover plugin with support for custom source sets and minor bug fixes.

Eric Berry and Evgeny Goldin released the first version of a Gradle Release Plugin. The plugin supports Svn, Bzr, Git and Hg.

Giancarlo Frison published a new plugin for creating Spring archetypes.

Tim Berglund updated his Gradle Liquibase plugin.

Ealden Escañan released the first version of the Gradle AndroidAnnotations plugin to add AndroidAnnotations to the build process.

Andreas Simon wrote a MySQL plugin for the creation and deletion of MySQL databases and the versioned migration of the database schemas.

Michael Klishin published an opschef cookbook for Gradle that uses modern Chef providers.

Gradle Posts Chris Beams wrote a script to use finds ‘gradlew’ in parent dirs:

Clifford James gave a very good answer on Stack Overflow on ‘Why use Gradle instead of Ant or Maven?’:

Gunnar Hillert blogged about using Sonar and Gradle for multi-project builds.

Merlyn Albert-Speyer blogged about some rather unknown Gradle Goodness he came across:

Graeme Rocher wrote about creating a new functional test suite with Gradle, Spock and Geb.

Steven Dick blogged about using JaCoCo with Gradle for code coverage of Java & Groovy.

##Gradle Development (by Adam Murdoch)

Some development highlights:

  • Split up the code-quality plugin into separate Checkstyle and CodeNarc plugins. You can now specify which version of these tools are to be used by the plugins. * Added ‘offline’ mode and ‘refresh’ mode for dependency resolution. Refresh mode ignores the cached meta-data for dependencies, and verifies each artifact against that in the remote repositories. This doesn’t necessarily mean that it will download every artifact, as Gradle will compare the checksum of the remote artifact against the artifact in the cache, and will only download if different. * Fixes for downloading artifacts from HTTP repositories and via HTTP proxies. * The tooling API allows you to specify and query information about the build environment, such as which Gradle version will be used, which Java installation will be used and the JVM args to use when running the build. * Fixes for the tooling API to improve error reporting and concurrent build execution. * Merged pull requests from Andres Almiray, Martin Bednar, Andrew Oberstar, Lars Hvile and Christoph Neuroth. Thank you to all these contributors for your excellent patches.

What’s next?

The focus is to prepare a 1.0-milestone-8 snapshot that packages up all the above goodness. This means we will:

  • Merge some more queued up pull requests. * Continue with work on the offline and refresh dependency resolution modes. Following that, we will look at caching remote build scripts in a similar way to dependency artifacts. * Improvements to dependency resolution error reporting. * Finish up work on various ways for you to control the build environment through configuration files and the tooling API. * More daemon improvements, to move us towards removing the ‘experimental’ tag from the daemon.

Interesting Tweets

  • kotarak (Meikel Brandmeyer): #gradle is strange. Things seem terrible complicated. And suddenly… CLABANGO! Is the issue condensed to a one liner. * tolitius (Anatoly): #gradle M7 is way faster than other “gradles of the past”. it even compares local SHA1 hash to the remote before taking up all of my time… * eddgrant (Edd Grant): Using #Gradle and #Git to make the writing and debugging of a #Xinha plugin quicker and easier. Loving Gradle’s ‘Web Application Quickstart’ * John_Lowe (John Lowe): Spent some time this weekend on my Embedded Java-to-Arm compiler/JVM project. Switched the build from Ant to Gradle, so far very pleased. * robspieldenner (Rob Spieldenner): @jmichaelmcgarr: go with gradle, conventions but with the ability to not fight it like you have to in maven, my project is switching now * c089 (Christoph Neuroth): if someone told me earlier I could extend existing #ant builds using #gradle, I would’ve been spared a lot of build.xml pain * schuchert (Brett L. Schuchert): #gradle is great. @bmuschko created a /great/ GAE plugin. Rady to write automated scripted integration checks. Unit checks already in place. * myfreeweb (myfreeweb): Travis CI + #Gradle + #Clojure + clojuresque + midje = Considering switching Ringfinger to Gradle. * ShlomiBenHaim (shlomi): #Artifactory #Atlassian #Bamboo plugin is out , provides full support for #Maven3 #Gradle and #Ivy builds * tednaleid (Ted Naleid): I’m glad that gradle finally added a flag to show stdout and stderr when running tests in the latest milestone * aljipa (Alexander Jipa): #Gradle is just something awesome! At last the developers did something great for developers! * papachan (dan loaiza): two plugins very recomended to begins with Scala in Android: Giter8 and Gradle * bmuschko (Benjamin Muschko): Want to use #javarebel with the #gradle Tomcat plugin? No problem. The FAQ section shows you how to set it up: * kutay_ (Aykut Acikel): 4 of 5 stars to Building and Testing with Gradle by Matthew McCullough * dexterous (Saager Mhatre): Just tried out the experimental #gradle application plugin and was pretty impressed at it’s capabilities; kudos @Gradleware! * dexterous (Saager Mhatre): RT @dnene: Gradle metrics. Original pom.xml was 259 lines. build.gradle is 52 lines. Custom plugin to replace maven shade & osgi plugins 84 lines * eskimobloood (Andreas Köberle): Starting with #gradle, using the nice plugins for building css and js by @eriwen: * hlship (Howard M. Lewis Ship): As I work with other’s code, I really see what a simple and powerful idea the #gradle wrapper is * hlship (Howard M. Lewis Ship): Just discovered using mavenLocal() in #gradle build file … how did I miss this? * mrundberget (Magnus Rundberget): Thx #gradle, due to the rich model even the most ludicrous of build reqs are solvable elegantly. So happy I wasn’t using mvn today. * kotarak (Meikel Brandmeyer): clojuresque 1.5 – the #gradle plugin for #clojure – will support API doc generation by virtue of #codox.

Gradle Jobs

Dice keyword search for Gradle

Monster keyword search for Gradle

Careerbuilder keyword search for Gradle

  • Blackstone is hiring a Sr. JEE Developer in the DC Area with #Gradle #Artifactory #Grails experience:

Gradle Events

We now have a new Gradle events page at We are in the process of feeding in all the data. Please let us know about any Gradle event we might not be aware of of.