Pages

Tuesday, July 15, 2008

Migration Maven 2 : 1ère épisode : Le contexte

Je me suis attelé ses derniers jours (voir mois) chez mon client à entreprendre la migration de gros applicatifs maven 1 vers maven 2. Je vais essayer de vous faire profiter d'un retour d'expérience sur le sujet car je n'ai pas trouvé de méthodes miracles de migration.

Je vais y consacrer un certains nombres de billets. Le dossier est assez touffu...

Pour commencer, voici le contexte des applicatifs qui doivent être migrer :
  • applicatifs j2EE multi module (ear contenant un ensemble d'ejb sessions + mutli war).
  • héritage de projet maven.
  • utilisation du multi-projet.
  • changement du type de packaging (simple jar, ejb-jar ou ejb-jar-client) en fonction de propriétés au moment du build.
  • génération des classes techniques des ejbs avec xdoclet (ejbdoclet).
  • génération de classes techniques type "delegate" pour simplifier l'appel aux ejbs avec xdoclet (template doclet).
  • génération des sites projets.
  • utilisation de l'intégration continue avec continuum.
  • dans les 8000 fichiers au contrôle de source (sources + ressources).
  • une dizaine de minutes à attendre pour faire un build complet.
  • entre 5 et 20 développeurs par applicatifs.
  • déjà en production pour certains applicatifs.
  • application de type stratégiques.

Avant tout on peut se demander pourquoi? Voici les arguments que j'ai pu trouver à part de dire qu'il faut le faire :-) :
  • Pour permettre d’utiliser les nouvelles fonctionnalités de Maven2 (transitivité des dépendances, profile, scope, …).
  • Pour profiter des modifications effectuées sur les fonctionnalités existantes (gestion multiprojet, héritage).
  • Pour profiter des améliorations de performances que propose maven 2 (consommation mémoire pendant le build, temps de build …).
  • De simplifier les scripts de build.

Je détaillerai par la suite la démarche de migration qui a été mise en œuvre dès que j'ai un peu de temps entre 2 builds :-).

La suite dans le prochaine épisode...

No comments: