Maven
-
Upload
xavier-carpentier -
Category
Software
-
view
76 -
download
2
description
Transcript of Maven
Introduction
• maven ... c’est quoi ?
• Pourquoi maven ?
• maven... pour quoi faire ?
• maven... comment faire ?
C’est quoi maven ?• Outil de build
• Né de l’expérience des outils comme Makefile, Ant, etc.
• En reprend les fonctionnalités principales (gestion des dépendances, script de construction)
• Ajout de fonctions : test automatique, génération de rapport
• Plugable
Pourquoi maven ?• Éviter les constructions manuelles
• Standardiser le modèle de projet
• Standardiser la chaîne de construction
• Automatiser le maximum
• Gérer les dépendances
• Faire plus que de la construction :
• Exécution des tests unitaires
• Génération de documentation
• Génération de rapports de tests, de couverture code, d'analyses statique (checkstyle, PMD, CPD, ...)
Comment faire ?• Convention != normes, obligations,
contraintes...
• Si tu veux configurer tu es libre mais débrouille toi...
• KISS : Keep It Simple, Stupid
• Partir de rien, quand c'est possible
• Industrialiser au maximum
• Bien définir les dépendances, être minimaliste
Comment faire ?• pom.xml
• POM : Project Object Model
• Situé à la racine du projet
• Phase principales dans le cycle de vie de Maven
• compile
• test
• package
• install
• deploy
Comment faire ?• pom.xml
• POM : Project Object Model
• Situé à la racine du projet
• Phase principales dans le cycle de vie de Maven
• compile
• test
• package
• install
• deploy
Comment faire ?• Convention des répertoires
• /src : les sources du projet
• /src/main : code source et fichiers source principaux
• /src/main/java : code source
• /src/main/resources : fichiers de ressource
• /src/test : fichiers de test
• /src/test/java : code source de test
• /src/test/resources : fichiers de ressources de test
• /src/site : informations sur le projet pour les rapports
• /src/main/webapp : webapp du projet
• /target : fichiers résultat, les binaires (du code et des tests), les packages générés et les résultats des tests
Comment faire ?• Les commandes maven de base
• mvn install : compile le projet, exécute les tests, met a disposition le repository local
• mvn clean install : supprime le fichier target et re-install
• mvn test : exécute les tests unitaire du projet
• mvn eclipse:eclipse :génère les .classpath et .project
• mvn site : génère le site du projet, information général, rapport de test, de qualité, ...(conf. pom.xml requise)
Comment faire ?• Comment faire planter son projet maven ?
• En n’utilisant pas les conventions de Maven 2 (target, héritage, répertoires src…)
• En ayant trop de sous modules avec des versions différentes (naissance de nouveaux projets involontairement)
• En ayant trop de modules dans le même projet : pénalise la performance
• En confondant dependencies et dependencyManagement
• En confondant plugins et pluginManagement
• En utilisant massivement antrun : empêche la réutilisation
• En utilisant à outrance les profils : rend dépendant de l’environnement
• En utilisant trop le reporting de qualité sur des projets déjà existant
• En mettant tout et n’importe quoi dans le POM
• En faisant des releases à la main
Comment faire ?• Comment réussir son projet maven ?
• Utiliser l’héritage « naturel »
• Bien définir les dépendances, être minimaliste !
• Fixer les dépendances dans le dependencyManagement
• On peut utiliser aussi le plugin reactor pour ne compiler que ce qui as été modifié
L’intégration continue• But : prévenir les bogues, améliore le cycle de
développement en réduisant les corrections en phase de robustesse
• Intégration, test, contrôle de qualité
• Lancement de la construction à chaque commit possible ou paramétré avec un délai
• Les logiciels :
• Hudson : coder à la base pour le projet Glassfish, très en vogue et très intuitif, facile à mettre en œuvre. Pour le tester en local : java –jar hudson.war (déployer sur http://localhost:8080/)
• Bamboo : payant
• Teamcity de Jetbrain, « build incassable »
• Continuum : Apache, vieux produit pas très conviviale mais bien intégrer avec maven
• CruiseControl : vieux produit !
Joel test...Utilisez-vous un gestionnaire de source ?!
Vos binaires sont-il assemblé en une fois ?!Vos binaires sont-il produits quotidiennement ?!
Avez-vous un gestionnaire d’anomalie ?!Le code est-il corrigé avant d’être étendu ?!
Avez-vous un planning à jour ?!Avez-vous des spécifications ?!
Vos développeurs sont-il dans un lieu calme ?!Avez-vous les meilleurs outils pour votre budget ?!
Avez-vous des testeur ?!Les recrues écrivent-elles du codes ?!
Faites-vous des tests utilisateurs complet?