We can add a listener to the Gradle build process to get informed about certain events during the build process. We must implement the BuildListener
interface and add it to a Gradle instance. One of the methods is the buildFinished()
method. We write an implementation for this method to display the build result as a Snarl notification (Snarl is a Windows equivalent of Growl in OSX). The BuildAdapter
class provides an empty implementation for the BuildListener
interface and is a good starting point for our implementation.
We can add the code to our build.gradle
file for a project. But we want to create the listener and use it for all our Gradle builds. We create the file init.gradle
and place it in the ~/.gradle
directory. Gradle will invoke this script always when we invoke a Gradle build, so every project we build with Gradle will use this code.
// File: ~/.gradle/init.gradle class SnarlNotifyListener extends BuildAdapter { void buildFinished(BuildResult result) { if (result.failure) { snarlNotify 'Gradle build failure', result.failure.message, true } else { snarlNotify 'Gradle build finished', 'Build successful' } } void snarlNotify(title, message = 'No message', sticky = false) { def cmd = [ '<Path to Snarl_CMD.exe>', // Replace with your local path. 'snShowMessage', sticky ? '0' : '10', // If non-sticky display for 10 seconds. title, message, '<gradle_home>/docs/groovydoc/groovy.ico' // Nice little icon, use local path. ] cmd.execute() } } def listener = new SnarlNotifyListener() gradle.addBuildListener listener
Now we can run a Gradle build and we get nice notifications when the build is finished:
Written with Gradle 0.8.