Maven: complétion, couleurs et notifications de bureau

This post is also available in: en

Maven, out of the box n’est pas l’outil le plus sexy du monde… Utilisé dans un IDE, il saura se faire oublié mais il mérite mieux lors de son usage en ligne de commande.

Complétion

Il existe des scripts de complétion automatique des commandes Maven.

Les utilisateurs de bash pourront compter sur :

  • maven-bash-completion, une représentation statique de plugins/goals/options. Celà fonctionne très bien, malheureusement il faut que chaque plugin soit décrit pour pouvoir être reconnu.
  • Un second script maintenu dans le paquet ubuntu de maven. Il fonctionne sur la même base que le précédent.

Si vous utilisez zsh, deux solutions sont disponibles :

  • le plugin mvn au sein du framework oh-my-zsh s’occupe de la complétion. En cadeau on a également tout une collection d’alias très pratique.
  • dans zsh-completions, un script permet de découvrir les goals de manière automatique à la première utilisation d’un plugin (mvn plugin:<TAB>). La première exécution est un peu plus longue mais après la complétion est instantanée (Merci à Thomas Queste qui en a parlé dans les commentaires).

Notifications de bureau

Avoir un build rapide c’est bien… seulement il arrive que ce ne soit pas du tout le cas. Rester devant sa console pour un build qui dure plusieurs minutes n’a pas vraiment d’intérêt… Pouvoir être notifié du résultat à la fin de son build devient alors indispensable.

maven-notifier

J’ai développé une extension Maven qui permet d’envoyer une notification à la fin d’un build : maven-notifier. Il fonctionne avec tous les systèmes d’exploitation.
Par défaut, l’extension tentera de trouver un notifier disponible sur la machine depuis cette liste d’outils.
Il est possible de configurer le système de notification utilisé et bien d’autres choses (format des messages, etc) en créant un fichier maven-notifier.properties.

Notifier Capture d’écran
Growl, disponible pour Windows et OS X. maven-notifier-growl
Snarl, disponible pour Windows maven-notifier-snarl
terminal-notifier, OS X notification-center
notification center OS X (depuis Mavericks) simple-nc
notify-send pour Linux notify-send
SystemTray depuis Java 6 system-tray
Pushbullet maven-notifier-pushbullet
Kdialog utilisable avec KDE maven-notifier-kdialog
notifu disponible pour Windows maven-notifier-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

Les scripts

On peut aussi se contenter de wrapper la commande mvn pour récupérer son statut et envoyer une notification.

Couleurs

La sortie console de Maven est toute terne. Il n’est pas toujours facile d’y retrouver les messages d’erreurs et c’est encore pire pour les messages d’avertissement…

maven-color

maven-color ajoute de la couleur dans les logs de Maven.

asciicast

Les dernières versions de Maven (depuis la version 3.1.x) utilisent SLF4J en interne, cela veut dire que l’on peut choisir l’implémentation de log que l’on veut !
Cet article très complet explique comment avoir une console en couleur avec Log4j 2 ou Logback. C’est la technique utilisée par maven-color

Pour les versions plus anciennes (entre la 3.0.x et la 3.1.0), j’ai utilisé Jansi et remplacé les loggers utilisés en interne par Maven avec un agent. Cela fonctionne avec les goals interactifs, par contre c’est beaucoup moins facile à mettre en place et bien moins résistant aux changements d’implémentation au sein de Maven et du plugin Surefire… maven-color.

Les scripts

On peut ajouter un peu de couleur pour y voir plus clair :

Ces scripts sont très biens et faciles à mettre en place, malheureusement ils ne fonctionnent pas avec les goals interactifs. N’espérez pas utiliser maven-release-plugin ou maven-archetype-plugin en mode interactif, les messages de demande de saisis n’apparaitront pas.

Tout en un (pour OS X)

Comme c’était dommage de réinstaller toutes ces extensions à la main pour chaque version de Maven, j’ai créé une formule pour brew.

brew tap jcgay/jcgay
brew install maven-deluxe

Celà installera la dernière version de Maven, maven-notifier, maven-color et maven-profiler.

Conclusion

Xzibit
Thanks Xzibit for pimping my Maven !

comments powered by Disqus