Apache Maven Nicolas De loof et Arnaud Héritier

Documents pareils
Magento. Pratique du e-commerce avec Magento. Christophe Le Bot avec la contribution technique de Bruno Sebarte

Créer un site e-commerce avec Dreamweaver CS4 et PHP/MySQL

Développement d applications professionnelles avec Android 2

Département Informatique et Données Marines Service Ingénierie des Systèmes d'informations Référence IFREMER-DCB-IDM-ISI/DDC

JOnAS Day 5.1. Outils de développements

en SCÈNE RATIONAL Rational Démonstration SDP : automatisation de la chaîne de développement Samira BATAOUCHE sbataouche@fr.ibm.com

Construction et déploiement d applications Java avec Maven, Archiva, Groovy et Jenkins

COPYRIGHT Danish Standards. NOT FOR COMMERCIAL USE OR REPRODUCTION. DS/EN 61303:1997

n.paradoxa online, issue 3 May 1997

NORME INTERNATIONALE INTERNATIONAL STANDARD. Dispositifs à semiconducteurs Dispositifs discrets. Semiconductor devices Discrete devices

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

Présentation des autres éléments du résultat global

Tom Pertsekos. Sécurité applicative Web : gare aux fraudes et aux pirates!

What s New. Sun ONE Application Server. Version 7, Enterprise Edition

Java pour le Web. Cours Java - F. Michel

L impression numérique

EXIN Agile Scrum Master

Cedric Dumoulin (C) The Java EE 7 Tutorial

(Projet de modification )

Vérifier la qualité de vos applications logicielle de manière continue

Experts en technologies Open Source et méthodes Agiles

Mise en route de PRTG Network Monitor Paessler AG

This is a preview - click here to buy the full publication NORME INTERNATIONALE INTERNATIONAL STAN DARD. Telecontrol equipment and systems

Guide de récupération de Windows Server 2003 R2 pour serveurs Sun x64

Conférence Bales II - Mauritanie. Patrick Le Nôtre. Directeur de la Stratégie - Secteur Finance Solutions risques et Réglementations

Installer le patch P-2746 et configurer le Firewall avancé

Domino Attachment and Object Service (DAOS)

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

SEPA Direct Debit La domiciliation dans un marché unifié pour les paiements européens au 1er février 2014

Android. Trucs et astuces

SunATM 4.0 Release Notes

WEB page builder and server for SCADA applications usable from a WEB navigator

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

EVÈNEMENT MOBILITÉ HYDROGÈNE À NANTES PRÉSENTATION DU VÉHICULE KANGOO H2 PAR SYMBIO FCELL

Insérer des images dans Base

Mise en route de PRTG Network Monitor 8

Package Contents. System Requirements. Before You Begin

CATALOGUE DE PRESTATIONS D ACCOMPAGNEMENT METIER DES CENTRES DE CONTACTS

Optimisez la gestion de vos projets IT avec PPM dans le cadre d une réorganisation. SAP Forum, May 29, 2013

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

SERVEUR DÉDIÉ DOCUMENTATION

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Grandes tendances et leurs impacts sur l acquisition de produits et services TI.

(Projet de modification )

ANDRITZ Atro Vis hydrodynamique

HUAWEI TECHNOLOGIES CO., LTD. channelroad. A better way. Together.

Un système intégré totalement redondant

Once the installation is complete, you can delete the temporary Zip files..

OUVRIR UN COMPTE CLIENT PRIVÉ

Guide de démarrage du système modulaire Sun Blade 6000

NORME INTERNATIONALE INTERNATIONAL STANDARD

Comment Créer une Base de Données Ab Initio

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

Environnement de Développement Outils Open-Source d'integration Continue. Exemple de Mise en Oeuvre

This is a preview - click here to buy the full publication NORME CEI INTERNATIONALE IEC INTERNATIONAL STAN DARD

Valorisez vos actifs logiciels avec Rational Asset Manager. Jean-Michel Athané, Certified IT Specialist IBM Rational Software

PACKZ System Requirements. Version: Version: Copyright 2015, PACKZ Software GmbH. 1

Serena Software. Damien Terrien Solution Architect

Le Fair use et le Fair dealing : Étude de droit comparé

Hudson Serveur d Intégration Continue. Adrien Lecharpentier IR3 Ingénieurs2000, Université de Marne la Vallée

Paxton. ins Net2 desktop reader USB

Contents Windows

Consultant MOE/Référent technique JAVA/J2EE JSF, RICH FACES

Sun Java SystemWeb Server 7.0 Documentation Center

Projet Java EE Approfondi

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

SonarQube : une autre vision de votre logiciel

Planning Solstice Backup 6.1 (localisé)

Déployer et sécuriser des applica1ons mobiles dans votre SI / Cloud

Serveur Appliance IPAM et Services Réseaux

Annexe Android Studio

PRODUCTS LIST (updated 11th January 2010)

Glassfish dans le milieu médical. Sun Aquarium Paris 26 Juin 2009 Jacky Renno

L Intégration Continue & Agilité

A. Architecture du serveur Tomcat 6

Open Source, Linux : Lotus Notes, véritable alternative à Microsoft. Thierry Batut IBM Software Philippe Desmaison Novell France

IBM Rational Application Developer pour WebSphere Software V8.5 accélère le développement d'applications de haute qualité.

FORMULAIRE D OUVERTURE DE COMPTE ENTREPRISE

Utiliser un proxy sous linux

Logitech Tablet Keyboard for Windows 8, Windows RT and Android 3.0+ Setup Guide Guide d installation

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Conditions de l'examen

RAMOS. Etude d Application. All rights reserved, CONTEG 2013

UNIVERSITY OF MALTA FACULTY OF ARTS. French as Main Area in an ordinary Bachelor s Degree

S10 - Automatisez la compilation et le déploiement de vos applications IBM i avec Arcad Pack for Rational

Guide pratique de CSPM, l'outil de suivi des performances du système Version française du Complete System Performance Monitor HOWTO

Guide d installation de SugarCRM Open Source version 4.5.1

Présentation du PL/SQL

TD/TP 1 Introduction au SDK d Android

Dynamiser l innovation tout en réduisant son coût

Installation d un patch de mise à jour et d un pack langue dans SugarCRM Open Source 4.5.1

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Learn & Lunch 23/11/2011. Simon Opresnik / Georges Denneulin

Cloud Computing: de la technologie à l usage final. Patrick CRASSON Oracle Thomas RULMONT WDC/CloudSphere Thibault van der Auwermeulen Expopolis

Logiciels de référencement

GRIFES. Gestion des risques et au-delà. Pablo C. Martinez. TRMG Product Leader, EMEA Symantec Corporation

Enterprise Scrum Organisation des développements chez exo. Agile Tour Rennes 2010 / 10 / 07

Dexia Guide d installation de NetWorker Server 25 juin Legato Systems, Inc.

Transcription:

Apache Maven Nicolas De loof et Arnaud Héritier Avec la contribution des membres francophones de la communauté Maven, en particulier Stéphane Nicoll, Vincent Siveston, Raphaël Piéroni, Hervé Boutemy, Jérôme Van Der Linden, Antonio Goncalves et François Le Droff

Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir une information complète et fiable. Cependant, Pearson Education France n assume de responsabilités, ni pour son utilisation, ni pour les contrefaçons de brevets ou atteintes aux droits de tierces personnes qui pourraient résulter de cette utilisation. Les exemples ou les programmes présents dans cet ouvrage sont fournis pour illustrer les descriptions théoriques. Ils ne sont en aucun cas destinés à une utilisation commerciale ou professionnelle. Pearson Education France ne pourra en aucun cas être tenu pour responsable des préjudices ou dommages de quelque nature que ce soit pouvant résulter de l utilisation de ces exemples ou programmes. Tous les noms de produits ou marques cités dans ce livre sont des marques déposées par leurs propriétaires respectifs. Apache, Apache Maven, Maven, and the Apache Maven logo are trademarks of The Apache Software Foundation. Used with permission. No endorsement by The Apache Software Foundation is implied by the use of these marks. Publié par Pearson Education France 47 bis, rue des Vinaigriers 75010 PARIS Tél. : 01 72 74 90 00 www.pearson.fr Mise en pages : TyPAO ISBN : 978-2-7440-2337-8 Copyright 2009 Pearson Education France Tous droits réservés Aucune représentation ou reproduction, même partielle, autre que celles prévues à l article L. 122-5 2 et 3 a) du code de la propriété intellectuelle ne peut être faite sans l autorisation expresse de Pearson Education France ou, le cas échéant, sans le respect des modalités prévues à l article L. 122-10 dudit code. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.

Table des matières Table des listings... XI Préface... XIII Avant-propos... XVII Contenu... XIX Partie I Premiers pas avec Maven 1 Introduction... 3 Prologue... 3 Partageons!... 4 Les fourmis à la rescousse... 6 Et Maven dans tout ça?... 7 Que fait Maven?... 8 La clé du mystère... 10 Convention plutôt que configuration... 11 Décrire plutôt que programmer... 12 POM... 12 Pourquoi adopter ces conventions?... 15 La force de Maven... 16 2 Au-delà de java.lang... 17 Des JAR sous CVS... 17 Quand le répertoire lib explose... 17 Identification univoque... 20 Dépôt de bibliothèques... 21 Avis aux amateurs de casse-tête... 22 L ami de mon ami... 23 Testons un peu... 26 Les "scopes"... 27

IV Apache Maven Une arme à double tranchant... 27 L analyse des dépendances... 30 Conclusion... 32 3 Un peu plus que compiler... 33 Êtes-vous prêt pour Java 7?... 33 Plugins... 35 Propriétés... 36 Quand Java ne suffit plus... 38 Où placer les sources... 39 Ajouter un plugin... 40 Plugin et tâches... 41 Compiler en JavaScript... 42 Invoquer un plugin... 45 Cycle de vie... 45 Générer du code... 48 Produire autre chose qu un JAR... 50 Des plugins pour tout?... 52 Conclusion... 53 4 Mettre en place des tests unitaires... 55 Tester? Pour quoi faire?... 55 Automatisons!... 56 Utiliser un framework de test... 58 Les tests sous Maven... 60 Le scope "test"... 61 Le développement piloté par les tests... 62 Pas de JAR sans tests réussis... 65 Réutiliser notre outillage de test... 65 L intégration continue... 67 Continuum... 68 Hudson... 69 Lequel choisir?... 70 Conclusion... 71 5 Mettre en place des tests d intégration... 73 Des tests unitaires de moins en moins unitaires... 73 Qu est-ce qu un test "unitaire"... 74 Les profils... 75 S adapter à l environnement... 76 Désactiver à la demande... 78 Tester l accès à une base de données... 79

V Utiliser des tests fonctionnels... 82 Tester la charge et les performances... 84 Intégration continue... 85 Conclusion... 86 Partie II Maven en entreprise 6 Gestion avancée des dépendances... 91 Oracle, quand tu nous tiens... 91 Un moteur de recherche pour Maven... 92 Pourquoi publier un POM sans JAR?... 93 Installer le fichier manquant... 94 Les dépendances "System"... 94 Créer son propre dépôt... 96 Contrôle d identité, vos papiers s il vous plaît!... 96 Rebelote : mais où est javax.jms?... 97 Gérer son dépôt privé... 98 Métadonnées... 100 Passer à un "véritable" gestionnaire de dépôt... 100 Un miroir de central... 101 Un gestionnaire d artefacts... 101 Conclusion... 106 7 Quand le projet devient trop lourd... 107 Un projet un artefact... 107 Héritage... 108 Packaging d un POM parent... 109 Parent "naturel"... 110 Mutualiser... 111 Gestion des dépendances... 111 Gestion des plugins... 112 Diviser pour régner... 114 Héritage "naturel"... 115 Et l intégration continue?... 115 Un gros projet vs plein de modules... 116 Les modules au service de l architecture... 117 Conclusion... 117

VI Apache Maven 8 Maven et JEE... 119 Java Entreprise Edition... 119 Construire une archive web WAR... 120 Construire un EJB... 123 Construire une archive d entreprise EAR... 126 Tester... 128 Selenium... 128 Cargo... 132 Soyons pragmatiques, soyons productifs... 134 Une application web "sur place"... 134 Une application web sans assemblage... 135 Ne plus sortir de l IDE... 135 Tester les EJB... 137 JEE6... 137 Conclusion... 139 9 Maven et les IDE... 141 Un plugin Maven pour Eclipse... 141 Maven vu depuis l IDE... 142 Eclipse... 143 Installation... 143 Import d un projet Maven... 143 Prise en main... 144 Gestion du POM... 145 Intégration des plugins Maven... 147 Et la cerise... 148 Interrogations... 149 Intellij Idea... 149 Import d un projet Maven... 149 Gestion du POM... 150 Intégration des plugins Maven... 152 Bonus... 152 NetBeans... 153 Prise en main... 153 Import d un projet Maven... 153 Gestion du POM... 154 Intégration des plugins Maven... 154 Bonus... 154 Délibération du jury... 155 Conclusion... 156

VII 10 Le jour J : la livraison... 157 Stratégie de livraison... 157 Première livraison... 157 Deuxième livraison... 158 Troisième livraison... 158 Documentation... 159 Le plugin release... 160 Étape 1 : préparation... 160 Étape 2 : livraison... 161 Et si ça foire?... 163 Notre prochaine version... 163 Tester des candidats... 163 Urgence!... 165 Au-delà de l intégration continue... 166 Conclusion... 168 Partie 3 Encore plus loin avec Maven 11 Utiliser un outil non supporté... 171 Un outil maison... 171 Réutiliser l existant... 172 Retour dans un monde de scripts?... 174 Créer un plugin... 174 Pas de panique!... 174 Des paramètres pour le plugin... 176 Un modèle dynamique... 177 Plexus... 178 Des classes et des royaumes... 180 Au-delà de Java... 183 Tester notre plugin... 185 Plugin testing harness... 186 Plugin invoker... 187 Conclusion... 189 12 L assurance qualité... 191 Audit de code... 191 Analyse statique... 192 Analyse dynamique... 195

VIII Apache Maven Les rapports Maven... 198 Autre chose que du HTML... 200 Exploiter notre gestion documentaire... 201 68 %, qui dit mieux?... 202 L entropie augmente... 202 Maîtrise de S... 203 Sonar... 204 Conclusion... 207 13 Respecter un format de distribution... 209 D où vient ce JAR?... 209 Numéro de construction... 210 Numéro de révision... 211 Utiliser le MANIFEST... 212 La confiance règne... 214 L EAR ne suffit pas... 216 Assemblage du livrable... 217 L intégration continue produit notre livrable... 219 L œuf ou la poule?... 220 OSGi?... 221 Conclusion... 222 14 Un nouveau projet démarre... 223 Mutualiser... 223 Qui paye?... 224 Partager un POM parent... 224 Copier-coller... 225 Copier et mutualiser!... 226 Un plugin qui crée des projets... 226 Un archétype?... 228 Construire ses propres archétypes... 228 Gérer un projet de référence... 229 Donner le meilleur de nous-mêmes... 230 Démarrer sur les bons rails... 230 Un support pour expérimenter... 231 Un support de démonstration... 232 Conclusion... 233 15 Avons-nous fait le bon choix?... 235 Les limites... 236 Points faibles... 236 Les plugins... 237

IX Le support... 238 Le coût de Maven... 240 La concurrence... 240 Maven bon partout?... 240 Ant et Ivy... 242 EasyAnt... 242 Gradle... 242 Maven 1... 244 Buildr... 244 Un outil reconnu... 244 La communauté... 245 L équipe de développement... 247 L adoption en entreprise... 247 L avenir de Maven... 248 Maven 2.x... 249 Maven 3.x... 251 À qui appartient Maven?... 255 La fondation Apache... 256 Sonatype... 256 Maven + OSGi = Tycho... 257 Non, Sonatype n est pas seul!... 258 La garantie par l open-source... 259 Conclusion... 260 16 Nos recommandations... 261 Les bonnes bases... 261 Commandement n 1 : Les conventions de Maven tu suivras.... 262 Commandement n 2 : Simplicité tu choisiras.... 262 Commandement n 3 : Au fur et à mesure de tes besoins, les outils nécessaires tu mettras en place.... 264 Commandement n 4 : De la sur-conception point tu ne feras.... 265 Commandement n 5 : Tes outils et ton build à jour tu maintiendras.... 266 Commandement n 6 : Dans un projet, la même version tous les modules auront.... 267 Commandement n 7 : La gestion des versions tu centraliseras.... 268 Commandement n 8 : Comme la peste les dépendances optionnelles tu éviteras.... 268 Commandement n 9 : Les SNAPSHOT tu utiliseras.... 269 Commandement n 10 : L IDE toujours tu privilégieras.... 269 Conclusion... 271

X Apache Maven 17 Épilogue... 273 Récapitulons... 274 Sortez de l amateurisme... 274 Le mot de la fin... 275 Qui est qui?... 275 Les membres francophones de l équipe Maven... 275 Les membres de la communauté Java... 281 Post-scriptum... 283 18 Lexique... 285 Le petit monde open-source... 285 Les concepts Maven... 287 Ceux qui font tourner Maven... 291 Et tout ce qui tourne autour... 293 Liens utiles... 294 Index... 295