Projet Coloane LIP6 / MoVe - Jean-Baptiste Voron Web : http://coloane.lip6.fr Gestion des dépôts d artefacts Maven L intégration vue des deux côtés Problèmes rencontrés Solutions existantes Jean-Baptiste Voron - 09/05/2008 - v.0.9
L intégration vue des deux côtés Eclipse Dépôt SVN Workspace (.java,.class, + lib) Maven Bibliothèques Internes (GEF, EMF, Draw2D...) Update sites Workspace (.java,.class, + lib) Dépendances (GEF, EMF, Draw2D...) Dépôts Maven
Problèmes rencontrés (1) Les dépôts officiels Maven Sont gérés par la communauté Apache Délai et Fréquence de mise à jour peu fiables Sont saturés Temps de réponses lents Ne proposent pas de snapshots Évolutions brutales (Eclipse) 200 ms 150 ms 100 ms coloane.lip6.fr repo.maven.org www.ibiblio.org < 1 ms 50 ms 0 ms Intérieur LIP6 Extérieur LIP6
Problèmes rencontrés (2) Les bibliothèques utilisées par Eclipse et Maven Ne sont pas versionnées de la même façon par les 2 communautés Eclipse : X.Y.Z-vAAAAMMJJ Maven : X.Y.Z Problème de fraîcheur des dépôts La publication sur les dépôts n est pas automatique... Aucun lien avec les update sites d Eclipse Résultats de compilation différents entre Eclipse et Maven
Organisation actuelle Bibliothèques Eclipse Bibliothèques Maven Dépôts Eclipse Dépôts Maven 3 types de configuration Configuration Développeur simple Configuration Développeur étendue Configuration Serveur d intégration
Organisation cible Bibliothèques Eclipse Bibliothèques Maven Dépôts Eclipse Dépôts Maven Repository Central Dans cette situation : =
Organisation cible Bibliothèques Eclipse Bibliothèques Maven LAN Dépôts Eclipse Dépôts Maven Repository Central Dans cette situation : =
Avantages de l organisation cible Les dépendances LIP6 ne sont plus versionnées Elle sont notées comme dépendances dans le pom.xml Utilisation de versions snapshot entre les équipes de développement Moins d occupation d espace disque dans les dépôts SVN Différenciation des builds Branches de construction (profils) selon la version des dépendances Préparation de la migration de framework Stabilité accrue des releases
Maven Repository Manager : Les besoins... Open Source & Gratuit Politique du projet Coloane (et de nombreux projets LIP6) Séparation de comptes administrateurs & utilisateurs Administrable via une interface web Facile d utilisation / Stable Possibilité de sauvegarde Ajout / Suppression d artefact Maven Nécessaire pour les plugins / dépendances Eclipse Ajout / Suppression de repository
Maven Repository Manager : Les choix... Artifactory (v.1.2.5 : 12/2007) Développeur : JFROG http://www.jfrog.org/sites/artifactory/latest/ Archiva (v.1.0.2 : 04/2008) Développeur : APACHE http://archiva.apache.org/ Nexus (v.1.0.beta 2 : 04/2008) Développeur : SONATYPE http://nexus.sonatype.org/
Les défis (1) Automatiser la récupération des dépendances Eclipse Détecter les mises à jour (sans doute en scrutant les update site XML) Construction des artefacts et déploiement sur le repository central Classer versions stables et version de développement des dépendances Dépôts Eclipse Repository Central
Les défis (2) Délaisser le mécanisme de construction d Eclipse Pour le remplacer par celui de Maven Tous les postes développeurs devront à termes utiliser Maven Transparence pour le développeur L environnement de développement reste Eclipse Utilisation du plugin m2eclipse? http://m2eclipse.codehaus.org/
Roadmap Choix d un Maven Repository Manager Configuration d un cache des repository publics Cache des plus grands serveurs publics Configuration d un serveur de déploiement Publication et Déploiement des projets internes LIP6 Configuration d un dépôt 3rd-party Dépendances Eclipse Mise en place du mécanisme de mise à jour automatique Builds différenciés (Snapshots / Stable)