J'ai eu la chance ces deux derniers jours d'animer une formation maven. Oui, en 2021, il y a encore des gens qui ont besoin d'être formés sur cet outil.

Pendant ces deux jours, j'ai parlé abondamment des qualités de maven.

Parce qu'il a plein de qualités, évidentes ou pas :

  • La gestion de dépendances, évidement, qui fait partie des apports fondamentaux
  • Le cycle de vie, qui augmente considérablement les chances de pouvoir faire des builds corrects
  • Mais aussi, et surtout pour moi, le côté "chiant as a service"

Parce que maven n'est pas un outil commode à tordre. Il est rempli de postulats sur la bonne manière de construire un projet. Et souvent, ces postulats rentrent en conflit avec l'envie des développeurs d'ajouter de l'intelligence dans le build. On retrouve cette discussion notamment dans cet échange sur Hacker News : l'article initial dit bien que maven est limité parce qu'il s'appuie sur des plugins sans être turing-complete, ce que disent également les commentaires.

De mon point de vue, c'est une erreur conceptuelle.

Maven, comme je l'expliquais hier, est l'un des premiers maillons de la chaîne d'intégration continue.

Et comme Kafka a réussi parce que c'est un tuyau idiot, je pense qu'une bonne chaîne d'intégration continue doit être idiote. C'est-à-dire accomplir simplement les différentes étapes amenant le code de la machine du développeur jusqu'à la production. Et pour ça, avoir un outil comme maven qui pousse les développeurs dans la direction de la simplicité est, à mon avis, une bonne idée.