Bonjour,
Je lance un débat, dont le sujet principal est l'intitulé de mon post : Maven est-il le meilleur outil pour faire des builds ?
En fait, j'ai vu hier un post intéressant sur InfoQ à propos de la question.
Bon, c'est en anglais, mais l'idée de cet article est de soulever les problèmes actuel de Maven.
Ce qui est le plus souvent reproché à Maven :Une conclusion que beaucoup s'accorde à donner est que Maven est basé sur une très bonne idée mais qu'elle a été piètrement implémentée...
- Une documentation peu adaptée : documents manquant ou difficiles à trouver, site peu clair, etc.
- Complexité globale de l'application.
- Problème sur les plugins (en particulier dû au fait que l'on ne force pas la version dans son pom.xml, ce qui peut poser des problème si un plugin est mis-à-jour et qui contient des erreurs)
- Les métadonnées sont trop complexes, en particulier sur les repositories.
- L'intégration de Maven2 dans les IDE.
Mon point de vue:
Personnellement, j'ai appris à me servir de Maven2 (je n'ai jamais utilisé Maven1) peu après sa sortie, et je m'y suis formé un peu au grès de mon projet. J'ai eu assez vite une formation (un cours du soir) grâce à ma SSII ce qui m'a permis de bien mieux le maitriser. J'ai depuis donné plusieurs formations Maven2 dans ma SSII mais aussi sur ma mission.
Tout ça pour dire que j'ai donc été aidé pour mon apprentissage.
De fait, je suis assez content de Maven 2, et j'aurais du mal à repartir sur un projet sans Maven 2...
Toutefois, je suis assez d'accord sur certains points :Franchement, j'aime beaucoup de choses dans Maven 2:
- La documentation est assez sommaire sur certains aspects de l'outil, même si quelques bons livres existent et permettent de mieux comprendre l'outil ("The Definitive Guide" ou "Better builds with Maven").
- Le développement de plugins est assez simple une fois qu'on a un peu compris le principe, mais hélas la documentation et les aides à ce propos sont peu nombreuses et peu claires. Je me souviens comment j'ai galéré comme un malade pour comprendre comment je pouvais obtenir la liste de toutes les dépendances dont les transitives du projet sur lequel le plugin est exécuté !
- Les métadonnées des repositories sont en effet une plaie...
- Très clairement, LE point noir est son intégration avec les IDE. Malgré les plugins (m2eclipse ou q4e), on est encore très loin de la gestion correcte des projets Maven par Eclipse, Netbeans ou IDEA... Par exemple impossible de gérer correctement un projet multi-modules...
Ma conclusion serait de dire que Maven 2 est un très bel outil, bourré de fonctionnalités intéressantes, mais dont la complexité et la difficulté à trouver des informations sont un frein à une plus grande adoption...
- Avec un pom.xml assez simple, on peut faire plein de choses : compiler un projet, lancer les tests, créer un site de toute pièce...
- J'aime aussi sa gestion des dépendances, très simple à mettre en place, quoique j'aimerais pouvoir écrire une dépendance plus simplement, comme par exemple : <dependency>log4j:log4j:1.0</dependency>.
- J'aime aussi le principe des plugins, bien que j'approuve le fait que leur version devrait être obligatoire dans leur déclaration des pom.xml...
- Le principe de "Convention over Configuration" est une bonne chose : en utilisant les conventions de Maven (répertoire de sources par exemple), on limite les informations peu utiles dans le pom.xml.
- L'intégration aisée de projets Mavenisé dans des outils d'Intégration Continue (en particulier Hudson, où il suffit de lui fournir le pom.xml et c'est tout).
- Une fois le concept acquis, le développement de plugins est assez simple. Du moins si on veut faire des choses pas trop complexes...
- Plusieurs autres choses que j'ai oublié sans doute
En somme beaucoup de lacunes peuvent encore être comblées dans les prochaines versions de Maven...
Voilà voilà. Je lance le débat.
Je sais que sur ce forum, vous utilisez tous Maven (c'est logique), alors qu'en pensez vous ?
Si vous avez déjà utilisé d'autres outils de builds tels Ant, Ivy, Buildr, etc. un avis / comparatif peut être intéressant...
Partager