This Week in Gradle (2011-47)

There is quite a bit of ground to cover as we haven’t had a ‘This Week in Gradle’ posting for 4 weeks… We will try very hard to get back into a weekly rhythm.

A lot of good stuff happened at Devoxx. I sat together with Andres Almiray to do a spike on using Gradle as an embedded dependency management library for Griffon. A couple of projects are interested in using Gradle in such a way. The good news is that you can do that. The even better news is that we are working on makings this more convenient :).

We are also very excited to see a lot progress with the NetBeans Gradle integration. Geertjan Wielenga showed me the current incarnation of the Gradle plugin for NetBeans and I was pretty impressed. We are also working together on using Gradle for building Netbeans RCP appliactions.

In the last two milestones we improved the Gradle Sonar plugin a lot. It is a real goodie now. Thanks to the people from SonarSource for there help. Luciano Fiandesio wrote a blog post about Gradle-Sonar integration. Eugen Vorkin wrote a blog post about Gradle-Sonar-Jenkins integration.

Yennick Trevels wrote a blog post on publishing with Gradle to the Sonatype OSS repository. Yennik is also adding new features to the GradleFx plugin. AIR support is coming!

Archetypes are a much requested feature for Gradle. Eric Berry has created the Tellurian Ring project for this purpose. We will sooner rather than later add features to the Gradle core that will make templating/archetypes solutions simpler, more user friendly and more deeply integrated.

The Build Doctor wrote a blog post on how to install to your local Maven repo with Gradle.

Ronen Narkis has written a Gradle Liquibase plugin.

Magnus Rundberget wrote about his cool multi-project dependency graph visualization by using the Google charting api.

##Gradle Development (by Adam Murdoch)

Last week we released Gradle 1.0-milestone-6. We plan to do more frequent releases, and this is a first step towards that.

We have been focused on improving dependency management and the daemon. For example, Gradle no longer performs unnecessary checks for a source and javadoc jar when requesting only the actual jar from a Maven repository. This yields a large improvement in dependency resolution performance, in particular for the IDE tasks and IDE import. For example, in a medium sized test project, ‘gradle eclipse’ went from 7 minutes to 1.5 minutes.

Some highlights for the last few weeks (you may have seen some of these in the milestone 6 release notes):

  • You can listen for test output and configure the test task to log this to the console. * Added a simplified way to provide a username and password for downloading from a Maven repository. * Finished up the DSL for specifying dependency cache expiry, forcing particular dependency versions, and failing on dependency conflict. * The daemon honors changes in the version of Java that should be used. For example, if you change your PATH to point at a new version of Java, the daemon will pick that change up and use the new version. * You can now declare an artifact to be published by specifying a File, as an alternative to specifying the ArchiveTask that produces the artifact. This means you can now easily publish artifacts other than archives, and artifacts that are produced outside Gradle. * Some tooling API fixes to allow work to continue on Netbeans integration. * You can untar gzip and bzip2 tar files. Thanks to Ben Jansen for the contribution.

What’s next?

This week we will continue work on dependency management performance, and performance in general. In particular, we want to make the IDE tasks and import even faster, and improving how we detect artifacts that have already been downloaded from another repository when we search in a repository.

The daemon will also get some more attention, allowing us to remove the ‘experimental’ tag from the daemon soon.

In addition, we’re looking at fixes for a number of regressions and known problems in 1.0-milestone-6.

Stay tuned for a 1.0-milestone-7 snapshot soon.

Interesting Tweets

  • @glaforge: Using @mittie’s nice little #gradle project startup script! It should be included in #gradle itself to get started a project quickly * @edvorkin: Waiting for #Gradle support in #NetBeans IDE. Encouraging news that it’s coming along OK * @sdeleuze: #gradle is so easy to understand when you know #maven, and is a magnitude of order better : incremental compilation, easy to extend … * @skepticalhumor: Holy crap. put a bunch of custom Ant stuff involving macrodefs with parms, filesets, filterchains into #Gradle, worked perfectly. * @mrundberget: So I needed to make .net dlls from jars. Ikvm and a few lines of #gradle fu later i had a incremental reusable task in my multiproj build * @AlBaker_Dev: Test environment now uses Gradle to fire up Linked Ratpack micro linked data servers for automated functional testing * @kktec: I’m very excited about what’s going with Heroku and Gradle and Grails. This could really benefit a 1-man shop like me. * @berngp: just found out that #elasticsearch is built by #gradle. Awesome!…

Gradle Jobs

Dice keyword search for Gradle

Monster keyword search for Gradle

Careerbuilder keyword search for Gradle

Conferences and User Groups

  • Project Automation Experience (Nov 29 - Dec 2, in Fort Lauderdale, FL)

  • This exciting conference, now in its second year, confirms the importance of project automation from basic software builds all the way through software deployment. It features several presentations on Gradle, and many more on the growing set of tools and techniques for automation. * Groovy & Grails Exchange (December 8-9th in London, U.K.)

  • Hans Dockter is delivering an Enterprise Gradle talk plus a talk on Advanced Gradle features. Gradleware’s Luke Daley is presenting on Grails, Geb and Spock.