Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Maven2 Nicolas De loof - Raphaël.

Slides:



Advertisements
Présentations similaires
Intégration de logiciels Open-Source dans un ordinateur simplifié basé sur Linux Stage du 6 avril au 30 juin 2006.
Advertisements

Le struts validator – framework de validation
15-19 février 2009 – Paris La Défense Exemplaire Mr Anthony HERBE
- Formation MAVEN Page 1 Formation MAVEN Partie 1 : principes MAVEN p.2 Partie 2 : premier projet MAVEN p.26 Partie 3 : projets.
Test et Développement Visual Studio Team System Eric Mittelette – Benjamin Gauthey – Yann Faure DevDays 2006 Equipé aujourdhui, prêt pour demain !
Architecture ACube Lise 4.0
IntroductionArchitecturesPropriétésTâches ANT Apports par rapport à uPortal Un seul fichier de configuration Ajout de librairies Ajout de CAS comme méthode.
Tomcat et son fonctionnement XML
Nouveau système de stockage
Copyright 2008 © Consortium ESUP-Portail EsupDay /02/2009 Atelier stockage Raymond Bourges, Université de Rennes 1.
Copyright 2008 © Consortium ESUP-Portail ESUP-Days 7, Paris, 3 février 2009 La démarche projet Pascal Aubry.
Retour d’expériences : Qualité et co-développement au consortium ESUP
Le consortium et la mutualisation entre les universités
Etat d'avancement ORI-OAI Interaction avec les ENT.
JEE Approfondi Frameworks Hibernate & Stripes
JEE Approfondi Frameworks : Maverick (MVC) JiBX (Persistance XML)
CASTEL Dennis SARZEAUD Floriane TAKAHASHI Atsushi.
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Dimensions et Java : Plug-in, Build et EAR Elisabeth BAUDOIN STIME CLUB UTILISATEURS ALMA DU 23 NOVEMBRE 2010.
L’intégration continue
Les tests et les logiciels de gestion de tests
Exposé de Système - Informatique et Réseau
Premiers pas avec Apache Ant Par Guillaume BITAUDEAU Le 16/10/2003.
Projet Webase. I. La définition du projet 1. Lexistant : Webase 4 2. Cahier des charges 3. La répartition des données 4. Le modèle de données 5. Le choix.
Copyright © 2006 – ESUP-Portail ESUP-Days, Paris, 22 juin 2006 Le cycle de vie des projets Ou comment contribuer au projet ESUP-Portail.
Administration des serveurs Samba Edu - se3
Projet J2EE Maverick XMLBeans Garcel Jean-Baptiste – Le Loc Martin – Muller Thibaut.
Présentation des frameworks pour Java EE
Projet JEE approfondi Stripes / Toplink
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les outils d’intégration continue
Présentation Installation Fonctionnement
Présenté par : Kalleli Dhouha
Archimède : dépôt institutionnel de la Bibliothèque de lUniversité Laval Par Rida Benjelloun Chef de la section recherche.
Projet JAVA EE Approfondi
Des outils pour le développement logiciel
Groupe : Marc BENSILHE, Guillaume GOURMENT et Paul FLYE SAINTE MARIE
Framework Play 2.0 Démonstration du proof of concept
Vers un développement ouvert Alexandre Poitras – Développeur indépendant WebÉducation – 24 janvier 2008.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
BOUSQUET Alexis - GUILLEMIN Vincent - PETIT Cédric
Tour d’horizon des outils d’aide au développement Java
SOMMAIRE  Introduction  BCO / Toolbox aujourd’hui  Recommandations pour BCO  CRP aujourd’hui  Recommandations pour CRP  La base de données  Recommandations.
Points généraux sur ESUP-Portail ESUP-DAY du 05/07/2007 Raymond Bourges.
Elabore par BELKADHI ABIR BEN HASSEN SALMA CHEBBI MARWA
Android Kévin Giroux.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
Atos, Atos et le poisson, Atos Origin et le poisson, Atos Consulting ainsi que le poisson seul sont des marques déposées d'Atos Origin SA. © 2006 Atos.
Plus simple à utiliser Une interface d’administration entièrement remaniée rend plus facile l'apprentissage de Drupal.
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
17/04/ ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage.
Chantier Factory Prototype Bankonet Cellule Architecture – Zoom Chantier Le pictogramme permet de rappeler rapidement la technologie concernée par le Zoom.
Création du projet On commence comme d’habitude :
Quattor : Opérations Courantes - G. Philippon/M. Jouvin4-5/2/2009Quattor : Opérations Courantes - G. Philippon Opérations courantes.
Gradle permet d'écrire des tâches de constructions dans un fichier de construction en utilisant le langage Groovy Il est possible.
Cours MIAGE « Architectures Orientées Services »Henry Boccon-GibodCours MIAGE « Architectures Orientées Services »Henry Boccon-Gibod 1 Architectures Orientées.
3D MEsh Processing Platform
Présentation ESTRABOX
Veille Technologique Miwako MARTIN
Ansible Déploiement, provisionning et configuration
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Ant Introduction Jean-Jacques LE COZ. Outils de construction de projets ➢ Pour livrer un produit logiciel ➢ Compiler ➢ Documenter ➢ Packager ➢ Déployer.
Formation Fudaa-Crue 16 Décembre – 17 Décembre 2013.
Jenkins, votre serviteur C. Loomis (CNRS/LAL) Journée LoOPS 11 décembre 2012.
DWR Jean-Jacques LE COZ. Introduction Projet DWR Framework AJAX Projet Open Source commencé en 2004 Licence GPL (Apache Software License v2) Sponsorisé.
WHAT IS THIS ? Serveur d’intégration Environnement JAVA Open Source Ou logiciel d’intégration continue.
Transcription de la présentation:

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Maven2 Nicolas De loof - Raphaël Piéroni

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Qui sommes nous ? Nicolas De loof Committer Maven depuis fin 2007 plugins JavaScript et GWT Raphaël Piéroni Committer depuis l'été 2007 réécriture complète du mécanisme d'archetype

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Prologue

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Prologue  Ant = java make Répétition (copier/coller) d’un projet à l’autre…

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Prologue Génération des binaires Distribution Qualimétrie Documentation Configuration IDE Génération de code Gestion de version

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Prologue  Maven 1 = scripts Ant mutualisés (« plugins ») outillés par des tags Jelly Dérive progressive comme langage de Script Invocations inter-plugins … cycles Mutualisation ?

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Prologue  Prendre les bonnes idées de Maven 1  … sans les faiblesses

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique

Maven2 … c’est quoi ?  Quelques règles de structure  Un moteur d’exécution de plugins … et rien d’autre ! Et surtout pas un N-ième langage de script !

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Conventions…  Maven établit des conventions « raisonnables » sur la structure du projet : Sources dans src Livrables dans src/main Tests dans src/test Tout ce qui est construit dans target Code généré dans target/generated-sources …

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique … over configuration  Conventions = moins de configuration pour chaque plugin  Plus d’homogénéité entre projets  Un projet « basique » peut être compilé, testé, packagé par maven sans configuration dédiée.

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique exemple com.mycompany foo log4j

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Plugin  Ecrit en Java  Projet « maven » à part entière  Peut exploiter toute librairie java jugée utile  Configuré par Injection de dépendances  Exécution 100% étanche : indépendant du projet et des autres plugins

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique LifeCycle Validate generate-sources generate-resources process-resources compile process-classes test-compile test package integration-test verify install deploy phasesplugins resource:resource compiler:compile surefire:test jar:jar install:install deploy:deploy

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique LifeCycle Validate generate-sources generate-resources process-resources compile process-classes test-compile test package integration-test verify install deploy phasesplugins resource:resource compiler:compile surefire:test jar:jar install:install deploy:deploy cxf:wsdl2java

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Communication inter-plugins Validate generate-sources generate-resources process-resources compile process-classes test-compile test package integration-test verify install deploy phasesplugins resource:resource compiler:compile surefire:test jar:jar install:install deploy:deploy cxf:wsdl2java

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Communication inter-plugins Validate generate-sources generate-resources process-resources compile process-classes test-compile test package integration-test verify install deploy phasesMavenProject addSourceRoot getSourceRoots plugins resource:resource compiler:compile surefire:test jar:jar install:install deploy:deploy cxf:wsdl2java

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Plugins : toujours plus  Il est aisé d’ajouter un plugin Outillage de test Contrôle qualité Génération de code Packaging spécifique …  SANS impact sur l’existant

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Plugins : où les trouver ?  Plugins « officiels » :  Plugins « communautaires » :  Plugins spécifiques cxf, jaxws, cargo, …

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Besoin spécifique ?  L’écriture d’un plugin est facile (plus que celle d’une tâche ANT) ‏ En Java, Groovy, BeanShell …  Projet Java/Maven à part entière toutes les librairies sont accessibles le plugin peut être outillé de tests Mécanisme de documentation intégré La diffusion/mutualisation du plugin est facilitée

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique démo  Un besoin « spécifique » Codage en Groovy Application Swing Framework spécifique …

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Dépendances  Maven gère les dépendances nécessaire au projet

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Transitivité  Mon projet dépend d’ Hibernate  Hibernate dépend d’ EHcache  Donc Mon projet dépend d’ EHcache

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Transitivité  Vous sauriez gérer ça à la main ?

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Effet de bord  Maven encourage les librairies ciblées plutôt que le gros JAR qui fait tout  Plus de librairies  Gestion fine des dépendances

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Repository = Dépôt de librairies  Dépôt local ($HOME/.m2/repository)‏ Évite la multiplication des.jar sur le poste de dev.  Dépôt(s) public(s) ( Mise à disposition rapide des librairies libres  Dépôt privé Gestion fine des librairies, libres ou non

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique SNAPSHOTS  Version « en cours de développement »  Permet de diffuser une version non finalisée  par défaut, exclu des repositories  Très utilisé pour les plugins

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique SNAPSHOTS org.codehaus.mojo gwt-maven-plugin 1.0-SNAPSHOT eclipse compile generateAsync …

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Deploiement sourceforge sync to central scp://shell.sourceforge.net/… sourceforge snapshot repository false scp://shell.sourceforge.net/…

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Repository d’entreprise

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Extrapolation  Les valeurs des attributs XML peuvent être déduites d’une propriété : 2.5.5

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Extrapolation  Centralisation de la configuration org.springframework spring-aop ${spring.version} maven-compiler-plugin ${maven.compile.source} ${maven.compile.target} ${project.build.sourceEncoding}

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Profils  Spécialiser le build Profil « fast » Profil « dev » Profil « ci » Profil « release »  Activation À la demande -Pxxx Sur critère (OS, fichier, propriété « -D », …) ‏

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique

POM.xml  Formalisme XML incroyablement verbeux.. et désormais intouchable pour rester compatible

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique POM.xml org.codehaus.plexus plexus-archiver 1.0-alpha-9 org.codehaus.plexus plexus-container-default org.codehaus.plexus plexus-component-api <dependency groupId="org.codehaus.plexus" artifactId="plexus-archiver" version="1.0-alpha-9"> org.codehaus.plexus:plexus-container-default org.codehaus.plexus:plexus-component-api

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique POM.xml org.codehaus.mojo xml-maven-plugin 1.0-beta-2 transform generate-sources src/main/wsdl adg.wsdl... adg.wsdl...

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Support des IDE ?  Netbeans :  IntelliJ IDEA :  Eclipse :… en progrès Sondage : quel IDE utilisez vous ?

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Release early, release often  Peu de développeurs +  Politique frileuse Apache +  Mécanisme de SNAPSHOTS =  Les releases de plugin sont rares

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Plugins absents  De nombreux outils n’ont toujours pas de plugin maven2  La faute du plugin AntRun ?  La faute de l’API Maven ?

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Dépendances transitives  De nombreux projets déclarent des dépendances superflues / incorrectes  Règle : un POM.xml publié n’est jamais modifié  Les choses s’améliorent…  Utiliser un dépôt privé !

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique JAR javax.* absents  Pour raison de licence !  Mais qui s’en soucie à part la fondation Apache ?  Pourquoi pas un « accept licence ? [Y/N] » ?  Dépôt sur java.net pour les APIs récentes

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Version Java cible  XYZ.jar est-il compatible java 1.4 ?  Le plugin YY nécessite Java5  Maven nécessite Java 1.4  Mon projet cible Java 1.3

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Doublons  commons-beanutils + commons-beanutils-core  commons-logging + commons-logging-api  commons-io + org.apache.commons:-io  …

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Exclusion globale  Je ne VEUX PAS utiliser commons-logging !

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Tests d’intégration  src/it/java ?

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Interrogations  Fàce à OSGi et Java Modules … quelle place pour maven ?  Plus généralement, quelle est la roadmap ?

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique

Conflits d’intérêts

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Conséquences  Repository d’entreprise : Archiva vs Nexus  Intégration sous Eclipse : q4e (iam) vs m2eclispe  …

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Despot-driven ?  Théoriquement, le développement est « piloté par la communauté »  Et dans les faits ? Re: [M2] Are pom.xml settings.xml really well-formed? by Jason van Zyl – 2 Feb 09, 2008; 06:09pm We don't use Xerces, never have, never will.

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Techno-obscur  Injection de dépendances : Plexus  Séparation des classloaders : ClassWorlds  Mapping Java / XML : Modello  Trois projets clés, hors fondation apache Sondage : qui connaît au moins un de ces outils ?

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique

épilogue

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique « Killer » plugin : Release  Génération du livrable du projet ?  Option 1 : MaProcédureDe50PagesJamaisAJour.doc  Option 2 : mvn release:prepare mvn release:perform

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Release démo

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique « Killer » plugin : Archetype  Démarrer un projet « propre » en 2 minutes ?  En se basant sur un projet de référence ! mvn archetype:create-from-project mvn archetype:generate

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Archetype démo

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique

Vos questions  Quelles bonnes pratiques pour Maven ?  Comment "Maveniser" un projet Web Tools Platform (WTP) ?

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Bonnes pratiques  Adapter le projet à Maven, pas l’inverse  Utiliser des modules ciblés et simple  Penser « plugin »  Participer à la communauté des utilisateurs  Rapporter ses problèmes en utilisant un cas de test simple

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Bonnes pratiques  Verrouiller les versions des plugins  Indiquer les dépendances directes  Lire la doc ;-) [2 « open-books »]  Utiliser un gestionnaire de dépôt (archiva/nexus) ‏  Rester indépendant de l’environnement … éviter les settings.xml exotiques  Attention au " -Dmaven.test.skip=true "

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Bonnes pratiques « Les meilleures pratiques sont celles qui correspondent à vos besoins »

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Maven et WTP  Supporté par M2eclipse et Q4e

Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique Question / réponses