This Week in Gradle (2011-49)

The conference season is over for this year. The Project Automation Experience in Florida and the Groovy & Grails Exchange have both been great. It is an invaluable source of feedback to talk face to face with our users. A the GGX we had a great Hackergarten evet were we ported the vert.x build to Gradle.

I can’t wait to see milestone-7 released. It has some wonderful features about which I will post something separately.

*** 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. ***

Some big news:

IDEA 11 is out with Gradle support. Thank you JetBrains! You can now import a Gradle project into Idea. There are many more features to come. New features for the Gradle plugin will be released independent of IDEA.

We are excited that JRebel now provides plugin for Gradle.

Plugin Updates

Blaine Simpson contributed two very cool plugins:

Benjamin Muschko released a new version of the Cargo plugin with support for EAR files and additional local container properties.

Meikel Brandmeyer updated the Clojuresque plugin to v1.4.4 with #gradle milestone-6 support.

The JFrog guys released a new version of the Gradle Artifactory plugin and the Jenkins Artifactory plugin (wich has also Gradle integration).

Gradle Posts

James Carr blogged about using JNDI with the Gradle Jetty Plugin and how to use the Jetty plugin for System tests.

James William blogged about how to use Gradle with the PlayN game library.

Glyn Normington blogged about OSGi testing with Gradle and Pax Exam.

Dierk Koenig and Guillaume LaForge have provided snippets on auto generation of Gradle project structure.

Halil-Cem Gürsoy published an article on Gradle in the special edition iX Developer (in German).

##Gradle Development (by Adam Murdoch)

This week has been focused on bug fixes in preparation for a first 1.0-milestone-7 snapshot. Most of the work has been in dependency resolution and the daemon.

Some highlights:

  • More accurate selection of the ‘latest’ version that matches a dynamic version when the set of repositories changes. - Work has started on avoiding downloads of artifacts that have already been downloaded. This includes when you change Gradle version, or change the URL of a repository, or move from one repository to another. - A more efficient locking scheme for the dependency cache, which does less work and holds locks for shorter periods. In particular, this improves performance when all the dependencies are cached, which has a direct impact on up-to-date checking, generally making it quite a bit faster for those tasks that are up-to-date. - A more efficient locking scheme for task up-to-date checking, which is faster and which also allows you to run the same build concurrently. - Some improvements to init scripts, so that Gradle looks in more places for them, and some DSL improvements to make it easier to inject configuration into the projects of a build. - A mechanism for you to specify the JVM args for the daemon to use, and for enabling/disabling the daemon on a per-project and per-user basis. - Finished up the DSL for gzip and bzip2 tar file trees.

What’s next?

A 1.0-milestone-7 snapshot will be available soon. If this snapshot proves to be stable over a few days, we will release it as 1.0-milestone-7.

While this snapshot is being tested, we will continue our work on dependency resolution and the daemon:

  • Improvements for memory consumption and performance for large dependency graphs. - Some tooling API improvements to make use of recently added daemon features. - Improved error reporting when things go wrong during dependency resolution. - Other dependency resolution improvements, such as an offline mode, and even faster ide tasks and ide import. - Daemon fixes to allow us to remove the ‘experimental’ tag from the daemon.

Interesting Tweets

  • @djKianoosh: A minimal #gradle startup script for #clojure projects… still a work in progress, using clojuresque from @kotarak * @elmkretzer: just typed “git build” and “gradle status” - yeah - programming is fun again #git #gradle #groovy * @rodhilton: Holy f… Gradle milestone 6 is so much faster than 5 and earlier. * @mrundberget: I might have convinced my team about the excellence of #gradle. A simple ex. combining the dsl and #Groovy collection ease -< cheers! * @jamescarr: So someone “bragged” at work about how they improved their ant build to do half of one feature gradle does out of the box. I chuckled. :wink: * @UArunKumar: I am addicted to making multi-project builds with #gradle. Something that used to be a chore with #maven is actually fun now. Thanks #gradle * @dgomezg: Intense mentoring session yesterday. Explained to a customer how to work w #git #gradle & #spring until my voice faded out. Literally! * @ lucastex_grails: Building PlayN applications with Gradle * @ aaronrustad: Today I coded groovy in gradle that called an ant task to call a bash script that invoked jython to deploy a war to websphere. #WTF * @kktec: @evgeny_goldin we converted a big multi-module Maven project to Gradle. new build was 1/7th the size and not so mind numbing to read.

Gradle Jobs

Dice keyword search for Gradle

Monster keyword search for Gradle

Careerbuilder keyword search for Gradle

Conferences and User Groups

No more conferences in 2011 :). We will post about the 2012 shows in one of our upcoming this-week-in-Gradle posting.