Notifications de bureau pour Gradle

This post is also available in: en

Comme (trop ?) souvent avec les builds, le temps parait long… Souvent lancé un peu en tâche de fond, j’aime bien avoir une notification quand ceux ci se terminent.
Gradle propose un plugin par défaut pour enrichir son build de notifications mais on verra comment avoir accès à une panoplie de nouveaux types de notifications !

Gradle Build Announcements

C’est le plugin disponible par défaut dans la distribution de Gradle. Il est lui même basé sur le plugin Announce qui permet d’envoyer des notifications personnalisées pendant un build.
Il supporte 4 types de notifications :

  • twitter
  • notify-send
  • Snarl
  • Growl

growl.success growl.failure

Pour l’activer, c’est très simple il suffit de le déclarer dans build.gradle :

apply plugin: 'build-announcements'

ou de le déclarer directement dans $HOME/.gradle/init.gradle pour que le plugin soit actif pour tous les projets :

rootProject {
    apply plugin: 'build-announcements'
}

C’est vraiment très sympa d’avoir cette fonctionnalité disponible directement sans rien installer… Par contre le choix d’applications est assez limité et les notifications ne sont pas très visuelles (l’icône est toujours la même quelque soit l’état du build par exemple).

Gradle notifier

Comme j’avais déjà mes notifications pour Maven avec maven-notifier, j’en ai profité pour les porter vers Gradle avec gradle-notifier !

Il supporte l’envoi de notifications vers :

Notifier Screenshot
Growl, pour Windows et OS X. Growl
Snarl, pour Windows Snarl
terminal-notifier, OS X terminal-notifier
notification center OS X (depuis Mavericks) notification-center
notify-send pour Linux notify-send
SystemTray depuis Java 6 System Tray
Pushbullet pushbullet
Kdialog pour KDE Kdialog
notifu for Windows notifu
AnyBar pour OS X et Linux anybar
Toaster pour Windows 8 Toaster
Notify since Java 6 Notify
BurntToast for Windows 10 BurntToast
Slack Slack

Installation

Le plugin peut être ajouté dans la phase d’initialisation ou directement au sein d’un projet.

Script d’initialisation

Pa exemple, créer (ou modifier) le fichier $HOME/.gradle/init.gradle :

initscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath group: 'fr.jcgay', name: 'gradle-notifier', version: '1.1.0'
    }
}

rootProject {
    apply plugin: fr.jcgay.gradle.notifier.GradleNotifierPlugin
}

Script du projet

Dans le script build.gradle, ajouter :

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath group: 'fr.jcgay', name: 'gradle-notifier', version: '1.1.0'
    }
}

apply plugin: 'fr.jcgay.gradle-notifier'

ou en utilisant le mécanisme de plugin introduit depuis Gradle 2.1:

plugins {
  id "fr.jcgay.gradle-notifier" version "1.1.0"
}

Configuration

Reposant sur send-notification, la configuration des applications et le choix de celle utilisée pour recevoir les notifications peut se faire dans le fichier $HOME/.send-notification (Voir les paramètres disponibles dans la documentation).

Ou bien l’outil est configurable directement au sein d’un script Gradle :

notifier {
    implementation = 'notificationcenter'
    threshold {
        time = 10
        unit = java.util.concurrent.TimeUnit.SECONDS
    }
    growl {
        port = 23053
        host = 'localhost'
        password = 'azerty123'
    }

Et voilà plus moyen d’oublier son build au fin fond d’une console !

comments powered by Disqus