J’ai testé le livre : Apache Maven version 2 et 3 par Nicolas De Loof et Arnaud Héritier

Par | Classé dans Java | Le 20/01/2012

Tags « »

3

apache maven cover

La seconde édition de ce livre est sortie il y a déjà quelques mois. Cette nouvelle édition apporte le support de Maven 3 ainsi que des corrections. Je n’avais entendu que du bien de la première version, allons voir ce que donne cette seconde édition !
Depuis quelques années j’utilise 2 ressources principales afin de m’aider dans mon utilisation quotidienne de Maven : la documentation officielle et l’ebook Maven The Definitive Guide dont j’ai toujours une copie dans ma dropbox. Cet ebook a beaucoup de lacunes et n’approfondie par certaines notions Maven qui pourtant le mériteraient, mais je le consulte tout de même régulièrement.

Je me considère comme un bon utilisateur de Maven, mais je suis loin d’être un expert. Cela fait déjà plusieurs années que je le pratique, et je l’utilise quotidiennement dans le cadre de mes missions chez les clients. En lisant le livre Apache maven l’objectif était double :

  • Apprendre de nouvelles choses ou appronfondir certaines notions que j’utilise peu
  • Trouver un complément à Maven The Definitive Guide qui date désormais quelque peu

Ce livre propose un scénario…

Ceci peut paraître étrange pour un livre d’informatique, mais il y a effectivement un scénario. Arnaud et Nicolas sont 2 compères qui retrouvent un vieille application sur une disquette gérant une liste de courses. Cette application se construit grâce à des scripts spécifiques à chaque OS : un fichier .bat et un fichier .sh.

Ils décident d’améliorer l’application en lui ajoutant de nouvelles fonctionnalités. D’une simple application, elle deviendra un vrai gros site web. Qui dit grosse application, dit industrialisation dans le process de livraison, de tests etc… Et c’est là que Maven intervient.

CSI Maven

Et en plus, cet ouvrage est drôle

Déboussolés par les divers problèmes qui se posent à eux, Nicolas et Arnaud seront aidés dans leur quête à créer l’application de gestion de course ultime, par d’autres personnes ayant les connaissances nécessaires afin de surmonter ces épreuves. Citons parmi ces seconds couteaux Olivier Lamy, Vincent Massol, Antonio Goncalves, Guillaume Laforge et bien d’autres.
Désolé de vous avoir spoilé une bonne part du scénario, mais je vous assure qu’il y a encore beaucoup de rebondissements dont je ne vous ai pas parlé.

Avoir un scénario est déroutant pour un livre d’informatique. La forme habituelle didactique est ici changé en “roman” avec ses rebondissements et une belle fin. Par conséquent ce livre se lit d’une traite malgré le sujet qui peut sembler difficile au premier abord. Le livre prend le parti de montrer des situations concrètes issues des expériences de Nicolas et Maven, et nous propose une solution généralement grâce à une fonctionnalité de Maven ou à l’un de ses plugins.

… Et du contenu

En effet Maven est généralement considéré comme compliqué. Cet ouvrage veut prouver le contraire. Maven est prévu pour répondre à plusieurs problématiques courantes des projets. Ce qui le rend difficile (son cycle de vie, ses plugins…) est abordé progressivement dans le livre au travers de problèmes que n’importe quel utilisateur de Maven pourrait rencontrer sur un projet.

Le livre n’aborde pas que les bases de Maven et par exemple des plugins peu courants sont présentés tels que le maven-osgi-compiler-plugin ou le flexmojos-maven-plugin. D’autres points liés à Maven sont abordés tels qu’une comparaison des IDE ou des différents gestionnaires de dépôt.

Cette seconde édition apporte évidemment quelques nouveautés. La plus importante est lié à Maven 3. Dans cette édition, la plupart des chapitres contiennent un encart détaillant les spécificités de Maven 3. Ces encarts ne sont pas très nombreux, Maven 3 étant en grande partie compatible avec Maven 2. Les autres nouveautés concernent les corrections de la première édition, ainsi que l’ajout d’un chapitre. Pour être clair, si vous possédez la première édition, les nouveautés ne justifient pas de se procurer la nouvelle.

Le livre parfait ?

Ce livre comporte de très nombreuses qualités. Le sujet est bien maitrisé et l’apprentissage est progressif sans pour autant être trop lent. L’approche est très pragmatique et les fonctionnalités de Maven sont présentées par une approche très pratique, plutôt que par une approche théorique que de nombreux ouvrages d’informatique indigestes privilégient. De plus les livres en français et de qualité sont rares, celui-ci en fait partie, et je le recommande vivement. Apprendre Maven ou se perfectionner n’aura jamais été plus facile.

Extreme Makeover Maven

Quand je vous disais qu'il était drôle

Me concernant j’ai trouvé le parfait complément à Maven The Definitive Guide. Il ne me manque plus qu’une version électronique afin de l’avoir dans ma Dropbox, et je pourrais presque me passer de Maven The Definitive Guide.

Chaque lecteur, en fonction de sa propre expérience, trouvera des choses à redire. Pour ma part, j’aurais souhaité que certains points soient approfondis comme les extensions ou l’écriture de plugins. Cette seconde édition apporte certainement son lot de correction, mais inévitablement les nouvelles parties ajoutées comportent leur lot d’erreurs. Heureusement elles restent mineures et ne nuisent pas à la compréhension du passage concernée. La perle étant le listing du code de la page 185 (à lire si vous avez le bouquin sous la main :) ).

Assez de bavardages, cet excellent ouvrage est à mettre entre toutes vos mains, car vous utilisez tous Maven. Voici la page du livre chez l’éditeur contenant la table des matières ainsi que des extraits.

Partagez !    |
  • http://blog.loof.fr nicolas de loof

    Pour le lecteur qui n’a pas encore le livre, voici le code de la page 185. J’ai beau relire, je ne vois pas la boulette…

    /**
    * Tâche de génération de la documentation au format Geegol. */
    @Goal( name=”check” )
    @Phase( PROCESS-SOURCES )
    @ThreadSafe
    class GEACheckMojo extends SisuMavenMojo {
    @Inject Logger logger;
    /**
    * Emplacement du fichier de compte-rendu */
    @Inject @Named( “${ouput}” )
    @DefaultsTo( “${project.build.directory}/check.html” ) private File output ;
    /**
    * Modèle objet du projet Maven */
    @Inject @Named( “${projet}” ) private project
    @Inject @Named( “zip” ) private Archiver zipArchiver;
    /**
    * Dépendances du projet Maven qui utilise le plugin */
    @Inject @Named( “${project.compileArtifacts}” )

    • http://twitter.com/FlorianBoulay Florian Boulay

      Merci Nicolas d’avoir recopié le morceau de code. N’étant pas chez moi, je ne peux pas te dire les très petites erreurs du listing. Je regarde ça dès que j’ai le livre sous la main, et je te réponds !
      En tout cas merci pour ton commentaire.

    • http://twitter.com/FlorianBoulay Florian Boulay

      Salut Nicolas,
      L’erreur se situe ici, et comme je le disais n’est pas très grave :
      @Inject @Named( “${projet}” ) private project

      La variable est nommée project, mais on ne connait pas le type. De plus il manque le point-virgule.
      Une mini-erreur pour un très bon livre par ailleurs.