77
Copyright © Arnaud Héritier – License Creative Commons 2.0 France Ch’ti Ch’ti JUG JUG Apache Maven 2 en entreprise… Comment tuer son projet avec Maven ? Comment le réussir ? 15 Juin 2009

20090615 - Ch'ti JUG - Apache Maven

Embed Size (px)

DESCRIPTION

Présentation de Maven et de son utilisation en entreprise dans le cadre du Ch'ti JUG, le 15 juin 2009. Pourquoi Maven ? Pourquoi l'adopter ? Les bonnes et mauvaise pratiques. Son avenir ...

Citation preview

Page 1: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Apache Maven 2 en entreprise…

Comment tuer son projet avec Maven ? Comment le réussir ?

15 Juin 2009

Page 2: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Arnaud Héritier

Committer depuis 2004 Membre du PMC

(Project Management Committee) depuis 2005

aheritier AT apache DOT org http://maven.apache.org

Page 3: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Arnaud Héritier

Aujourd’hui - OCTO Technology• Cabinet d’architectes en SI• http://www.octo.com• Architecte sénior

Dans quelques jours - eXo platform• Editeur de logiciels• http://www.exoplatform.com• Software Factory Manager

• Qualité• Outillage• Productivité des développements

Page 4: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Programme

Faire le choix Maven Mettre en place Maven Utiliser Maven au jour le jour Apprendre Maven L’avenir de Maven

Page 5: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Programme

Faire le choix Maven• Pourquoi Maven ?• Les intérêts pour un projet• Les intérêts pour une entreprise• LA solution ?

Mettre en place Maven Utiliser Maven au jour le jour Apprendre Maven L’avenir de Maven

Page 6: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Pourquoi Maven ?

Page 7: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Construction d’un war en 2002

Utilisation d’Eclipse limitée• Pas de WTP

(uniquement dans la version payante d’IBM),

• Eclipse ne permettait pas d’exporter des Wars

Page 8: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Construction d’un war en 2002

Beaucoup de tâches manuelles• Modifier les fichiers de paramétrage• Exporter les différents jar• Copier les dépendances (et nos jars), dans un

répertoire lib• Faire un zip que l’on renomme en war• Tagguer l’ensemble des sources dans le

répertoire de sources (CVS)• Envoyer le fichier par FTP sur le serveur

d’intégration• Se connecter à la console d’administration du

serveur et déployer l’application

Page 9: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Construction d’un war en 2002

Un seul problème, Y’a toujours des problèmes• Erreur dans la

configuration• Oubli d’une

dépendance• oubli d’un fichier• Correction de dernière

minute qui introduit une régression…

• Autres

Combien de temps ça prend ?• Quand tout va bien :

15 minutes• Quand il y a des

problèmes : ½ journée

Page 10: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Une première réponse : ANT

Ecriture d’un script• Permet d’automatiser le process• Durée du processus réduite de moitié• Le processus ne monopolise personne

• On le lance et on passe à autre chose

Page 11: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Les limites de ANT

Ecrire le script, c’est long

Modifier un script, c’est très long

Au final, le gains de temps n’est pas évident• Mais c’est quand

même plus amusant• Il est possible de

réutiliser le script !

Page 12: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG La réutilisation de scripts ANT

Les scripts ne sont pas directement réutilisables • Structure de projets différents• Besoins différents

Encore du temps perdu• Modification du script• Réécriture pour le rendre plus générique

Un nouveau métier s’est créé dans chaque projet : scripteur ANT

Page 13: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Quelques exemples

Junit : http://junit.cvs.sourceforge.net/viewvc/junit/junit/build.xml?view=markup

Findbugs : http://findbugs.googlecode.com/svn/trunk/findbugs/build.xml

Jboss SEAM : http://anonsvn.jboss.org/repos/seam/branches/community/Seam_2_0

Page 14: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Les intérêts de Maven pour un projet

Page 15: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Maven, le choix Projet

Le projet peut-être librement découpé en modules• Maven ne cristallise pas l’architecture de

l’application

Gestion des dépendances• Déclaratif : Gestion automatique du

téléchargement et de l’utilisation dans le projet.

• Transitivité : On ne déclare que ce que l’on utilise

Page 16: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Maven, le choix Projet

Centralise et automatise les différents aspects du développement de logiciels

Une seule chose qu’il ne peut faire à votre place : Développer

• Construction• Tests• Packaging• Déploiement• Documentation• Contrôles et

rapports sur la qualité des développements

Page 17: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Les intérêts de Maven pour une entreprise

Page 18: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Maven, le choix Entreprise

Standard du marché• Disponibilité des ressources

Standardisation des développements• Organisation des sources• Descripteur de projet

Page 19: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Maven, le choix Entreprise

Rationnaliser les coûts• On ne réinvente pas la roue à chaque

nouveau projet• Factorisation entre projets

Promotion de la qualité et intégration de l’outillage associé

Page 20: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

LA solution ?

Page 21: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Maven, LA solution ?

NON !!!• Maven ne répond pas à tous les besoins

Choisissez Maven seulement si vous adhérez à son objectif :• STANDARDISER

En avez vous les moyens ?• Ex: standardiser un existant coûte vite

cher !

Ant et les autres solutions de scripting peuvent être justifiées.

Page 22: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Programme

Faire le choix Maven Mettre en place Maven

• KISS• Sécurisation de l’environnement• Industrialisation des développements

Utiliser Maven au jour le jour Apprendre Maven L’avenir de Maven

Page 23: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

KISS

Page 24: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG K.I.S.S.

Keep It Simple, Stupid Partez de rien Ne faites pas de sur-architecture

• ça n’est pas parce que Maven vous propose d’utiliser des modules qu’il faut le faire.

Ne testez pas toutes les fonctionnalités de Maven dans votre projet.

Page 25: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Sécurisation

de l’environnement

Page 26: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Sécurisez !

Mettez en place un gestionnaire de proxy des repositories externes

Pour se prémunir • des défaillances du réseau de l’entreprise• des défaillances des repositories

externes.

Pour faire plaisir • à votre infra en diminuant la charge

réseau.• aux développeurs en diminuant les temps

de téléchargement.

Page 27: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Sécurisez !

Différents produits gratuits ou payants• Sonatype Nexus (remplaçant de

Proximity)• Jfrog Artifactory• Apache Archiva

Un groupe unique qui fait proxy vers tous les repos externes• Déclaration d’un mirroir * dans les

settings de tous les développeurs

Page 28: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Settings avec un miroir global <settings>

<mirrors> <mirror> <!--This sends everything else to /public --> <id>nexus</id> <mirrorOf>external:*</mirrorOf> <url>http://localhost:8081/nexus/content/groups/public</url> </mirror> </mirrors> <profiles> <profile> <id>nexus</id> <!--Enable snapshots for the built in central repo to direct --> <!--all requests to nexus via the mirror --> <repositories> <repository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <!--make the profile active all the time --> <activeProfile>nexus</activeProfile> </activeProfiles></settings>

Page 29: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Industrialisation des développements

Page 30: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Industrialisez !

Partagez vos livrables : • Référentiels d’artifacts

Partagez vos extensions Maven : • Plugins

Partagez le paramétrage Maven : • POM Parent

Page 31: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Industrialisez !

Partagez vos versions recommandées d’artifacts : • POM de dependencyManagement• Scope import

Partagez vos modèles d’applications :• Archetypes

Automatisez votre processus de release

Page 32: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Industrialisez !

Mettez en place une démarche de tests• Tout l’outillage est pré-intégré :

• Junit, TestNG – tests unitaires, • Selenium, Canoo – tests d’IHM,• Fitnesse, Greenpepper – tests fonctionnels,• SoapUI – tests d’intégration WS• Et bien d’autres encore

Page 33: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Industrialisez !

Mettez en place une démarche qualité• Uniformisation du code (CheckStyle)• Recherche de mauvaises pratiques ou de

bugs potentiels (PMD, FindBugs, Clirr)• Couverture du code par les tests

(Cobertura, Clover)• Contrôles

• le build ne passe pas si certains critères ne sont pas atteints (Non compatibilité ascendante des APIs, …)

• Reporting• Site web ou serveur dédié (sonar)

Page 34: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Sonar

Page 35: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Industrialisez !

Mettez en place un serveur d’intégration continue• Environnement neutre• Réagir au plus tôt

• intégration, • tests, • contrôles qualité

• Amélioration de la productivité et de la qualité

Différents produits gratuits ou non• Hudson, Bamboo, TeamCity, Continuum,

Cruisecontrol, …

Page 36: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Hudson

Page 37: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Programme

Faire le choix Maven Mettre en place Maven Utiliser Maven au jour le jour

• Structurer son projet• Structurer son POM• Pratiques de développement

Apprendre Maven L’avenir de Maven

Page 38: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Structurer son projet

Page 39: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Structurer son projet

A ne pas faire :• Ne pas utiliser les conventions

• Sauf si migration, et uniquement en période transitoire.

• Avoir plusieurs sous modules avec des versions différentes

• Ces modules sont alors de véritables projets indépendants. Pas besoin d’un build global.

Page 40: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Structurer son projet

A ne pas faire :• Avoir un trop grand nombre de modules

dans un même projet• Est ce justifié par des contraintes ou besoins

techniques ?• Cela pénalise les performances le projet.

• Avoir un trop grand nombre d’héritage• Cela complexifie la maintenance des POMs

• A quel endroit est positionné la configuration du plugin XXX ?

Page 41: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Structurer son projet

A faire :• Utiliser l’héritage « naturel » : Le reactor

sert de parent ses sous-modules.• Simplifie la configuration (site, scm, …)

Page 42: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Structurer son POM

Page 43: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Structurer son POM

A ne pas faire :• Dépendances :

• Confondre dependencies / dependencyManagement

• Plugins :• Confondre plugins / pluginManagement• Utiliser massivement le plugin AntRun• Ne pas définir explicitement les versions de

TOUS les plugins utilisés par le projet

Page 44: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Structurer son POM

A ne pas faire :• Profils :

• Se rendre dépendant de l’environnement• Avoir des dépendances non définies par défaut

• Reporting et qualité• Activer sur un code existant tous les

rapportspossibles avec leurs configurations par défaut

• Faire des contrôles sur le formattage du code sans fournir la configuration associée pour l’IDE

• Mettre tout ce qu’il est possible de mettre dans le POM.

Page 45: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Structurer son POM

A faire :• Fixer les versions des dépendances dans

le dependencyManagement de plus haut niveau dans l’héritage du projet

• Définir les dépendances (groupId, artifactId, scope) au plus prêt de leur utilisation (dans les modules)

• Utiliser les plugins dependency (apache) et versions (mojo) pour analyser et maintenir les dépendances de votre projet

Page 46: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Pratiques de développement

Page 47: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Pratiques de développement

A ne pas faire :• Passer son temps dans la console,• S’échanger des jars par mail,• Utiliser systématiquement "-

Dmaven.test.skip=true » • Faire les releases à la main

Page 48: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Pratiques de développement

A faire :• Tenir sa version de Maven à jour

• On a pu noter sur la version 2.1 une réduction de plus 75% du temps de résolution des modules et dépendances d’un projet

• Utiliser le plugin reactor (ou Maven >= 2.1) pour ne reconstruire que ce qui est nécessaire

• Adapter son utilisation de Maven à son IDE.

Page 49: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Programme

Faire le choix Maven Mettre en place Maven Utiliser Maven au jour le jour Apprendre Maven

• Où trouver des documentations ?• Quels ouvrages sont disponibles ?• Où trouver du support ?

L’avenir de Maven

Page 50: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Où trouver

des

documentations ?

Page 51: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Documentations

Le site web : • http://maven.apache.org

Le wiki projet : • http://docs.codehaus.org/display/MAVEN

Le wiki utilisateurs : • http://docs.codehaus.org/display/MAVENUSER

Page 52: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Quels ouvrages sont

disponibles ?

Page 53: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Ouvrages

Sonatype / O’Reilly :• The Definitive Guide• http://www.sonatype.com/books• Gratuit en version électronique• D’ici la fin de l’année (?) en français

Page 54: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Ouvrages

Exist Global• Better builds with Maven• http://www.maestrodev.com/better-build-

maven• Gratuit• Version électronique uniquement

Page 55: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Ouvrages

Nicolas De Loof – Arnaud Héritier / Pearson• Un ouvrage original axé sur la pratique• En français• D’ici la fin de l’année

Page 56: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Ouvrages

OCTO Technology• Java Productivity Primer• 12 pratiques autour de Maven et des

usines de développement pour améliorer le productivité en Java

• http://www.octo.com• Gratuit• En français cet été (enfin !!)

Page 57: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Où trouver

du support ?

Page 58: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Support

Listes de diffusion• http://maven.apache.org/mail-lists.html

IRC• irc.codehaus.org - #maven

Developpez.net• http://www.developpez.net/ forum maven• En français

Contrats de support• Sonatype et quelques autres entreprises

Page 59: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Programme

Faire le choix Maven Mettre en place Maven Utiliser Maven au jour le jour Apprendre Maven L’avenir de Maven

• Le produit• La concurrence• La communauté

Page 60: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Le produit

Page 61: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Apache Maven 2.0.x

Maintenance corrective Dernière version publiée : 2.0.10 Pas certain qu’une version 2.0.11 voit

le jour.

Page 62: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Apache Maven 2.x

Maintenance évolutive Corrections qui imposent un

refactoring conséquent Dernière version publiée : 2.1.0 La version 2.2.0 sera bientôt disponible 2.2.0-RC3 déjà disponible

• Correction du problème de résolution des propriétés et de transformation du POM apparus en 2.1.0

• Java 5 en pré-requis pour exécuter Maven

Page 63: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Apache Maven 3.x

N’AYEZ PAS PEUR, NE FUYEZ PAS !!!

Notre objectif : Compatibilité avec Maven 2.x assurée• Pour les projets• Pour les plugins

Page 64: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Apache Maven 3.x

Pourquoi une 3.x ?• Parce que refonte importante du code

Réduction / Désendettement du code Refonte de l’API d’utilisation

(embedder) pour une meilleure intégration aux IDEs

Page 65: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Apache Maven 3.x

Refonte de la gestion des artifacts (Mercury)• Amélioration de l’algorithme de

résolution des dépendances (SAT),• Abstraction des référentiels,• Gestion des versions configurable (Maven

vs OSGI vs …), • Réécriture de la couche de transport

http/webdav par l’équipe de Jetty.

Cycle de vie prédictible et interrogeable,

Page 66: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Apache Maven 3.x

Abstraction du descripteur de projet• Gestion de plusieurs versions du POM• Gestion de plusieurs formats du POM• Comment gérer la compatibilité avec les

anciennes versions de Maven ?

Remplacement de plexus par une implémentation « standard « (JSR 299 ou JSR 330) : • Guice ? • XBR ?

...

Page 67: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

La concurrence

Page 68: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Les concurrents

Ant + Ivy, Easy Ant, Gant, Graddle, … Offrent la souplesse d’un outillage

scriptable Cherchent à apporter un niveau de

service proche de Maven (gestion de dépendances, ..) mais avec une standardisation moins contraignante.

Cette souplesse ne leur sera t’elle pas fatale comme pour Maven 1 ?

Page 69: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

La communauté

Page 70: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG La communauté des utilisateurs

1780 inscrits sur la liste de diffusion des utilisateurs

Statistiques sur 90 jours

En bleu le nombre d’inscrits

En rouge le nombre de messages par jours

Page 71: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Le site web

Page 72: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Les téléchargements

Nombre de téléchargements par mois depuis un an

Page 73: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG L’équipe projet

Plus de 60 committeurs enregistrés, Plus de 20 actifs depuis le début de

l’année, Des entreprises comme Sonatype

fournissent des ressources pour le projet et du support professionnel pour les utilisateurs,

Une communauté de développeurs moins isolée : rapprochements avec Eclipse, Jetty, …

Page 74: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Conclusion

Aujourd’hui très largement adopté par les entreprises,

Un produit avec une grande valeur ajoutée,

Une communauté d’utilisateurs et de développeurs active,

Du support professionnel, Une produit loin d’être « parfait », Encore beaucoup de choses à faire, Mais un véritable challenge à relever

• Venez nous aider à le réaliser !!

Page 75: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG

Questions ?

75

Page 76: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Licence

Les photos et logos appartiennent à leurs auteurs respectifs

Le contenu de la présentation est sous licence Creative Commons 2.0 France• Contrat Paternité• Pas d'Utilisation Commerciale• Partage des Conditions Initiales à

l'Identique http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

76

Page 77: 20090615 - Ch'ti JUG - Apache Maven

Copyright © Arnaud Héritier – License Creative Commons 2.0 France

Ch’ti JUGCh’ti JUG Buffet

Merci pour votre attention

Merci à Sopra Group pour son sponsoring

77