Maven est à ANT ce que C++ est à C

November 5th, 2004 par Freddy Mallet

Je travaille depuis une semaine avec Maven et je dois dire que ‘c’est bonheur’ !. L’objectif de cet article n’est pas de faire une description détaillée de Maven ou même de proposer un tutorial vu qu’il en existe un tout à fait correct sur ServerSide. Voici tout simplement mes premières impressions :

  • Quand on a déja manipulé des fichiers ant un peu conséquents et qui deviennent délicats à maintenir dans le temps, on ne peut s’empêcher de se dire en arrivant sur Maven que la vie va maintenant être plus agréable ;-) ,
  • Dans un même temps, dès que l’on souhaite faire des tâches maven qui sortent de l’ordinaire, on peut alors utiliser toute la puissance de ant au sein de maven Il faut vraiment considérer Maven comme une surcouche au dessus de ant à l’instar de C++ avec C.
  • Dès qu’on arrive sur des problèmes d’inter-dépendance de composants on atteint les limites de ant. Or il est toujours souhaitable de découper au maximum les composants. Grâce à la fonction ‘reactor’ cette histoire d’inter-dépendance des composants est entièrement gérée par Maven,
  • La possibilité de générer automatiquement les projets jBuilder, eclipse et IDEA est également assez séduisante. C’est d’ailleurs l’un des objectifs majeurs sur la version 2.0 de Maven: faire des fichiers Maven le standard de fait de description des projets IDE,
  • Un des autres gros points forts de Maven par rapport à ant tient bien sûr à la gestion du repository de librairie. Avec ant, rien n’est prévu à ce sujet,
  • J’ai été également surpris par la qualité et la faculté de personnalisation des sites de documentation générés. Vous voulez du checkstyle, du rapport d’exécution junit, de la release note, la liste des derniers fichiers touchés dans votre SCM, une FAQ, etc… bref c’est sans fin,

Au final le choix à faire n’est pas maven ou ant, mais plutôt maven et ant.

One Response to “Maven est à ANT ce que C++ est à C”

  1. Eric Says:

    Maven est un très bon outil et pour ne pas avoir à gérer de nombreux fichiers ant trop souvent modifiés (grrrr…) et trop gros.

    Le principe est d’avoir un POM qui décrit un projet : son nom, l’endroit où sont stockés les sources, les versions, les dépendances.
    Ensuite tout est automatique (enfin plutôt tout est défini pour vous) : les créateurs de maven ont choisi LEUR méthode pour vous dire comment vous devez organiser vos sources, votre méthode de compilation…
    Cette méthode est bonne et convient à 95% des projets malheureusement si vous faites parti des 5%, maven ne peut rien pour vous, par exemple :
    * Vous avez vos fichiers JSP séparés dans plusieurs modules CVS, et non pas dans un webapps…
    * Si votre programme gère des modules que vous désirez compiler d’une façon bien particulière…

    En ce qui concerne la customisation des “goal”, celle-ci se fait en interceptant le “goal” (l’équivalent du target de ant) avant et après son exécution ce qui s’avère vraiment pratique. Ensuite une customisation plus importante peut se faire avec de nombreux plugins (qui d’ailleurs se téléchargent automatiquement). Il y a même un plugin pour générer un fichier Ant.

    Un défaut de maven est l’utilisation de jelly comme outil de scripting ce qui s’avère lourd à gérer…

    Pour information CodeHaus développe un plugin pour Eclipse et Netbeans (peut-être jbuilder, je ne me souviens plus) à http://mevenide.codehaus.org.

    En résumé si vous démarrez un projet et que celui-ci est standard, maven est un bonne solution (même si votre IDE préféré -netbeans- ne gère pas maven en standard il y a soit mevenide, soit passer sous Ant). Mais si vous avez déjà plusieurs versions gérés dans CVS avec une structuration différentes (par exemple un module CVS pour les JSP et un pour les servlets), soit vous décidez de migrer votre repository (et en profitez pour passer à Subversion ;-) ), soit vous gardez ant.

Leave a Reply

You must be logged in to post a comment.