Comment peut-on utiliser des librairies tierces telles que commons-lang ou commons-io dans un plugin Eclipse ?

L’approche naïve que l’on trouve généralement via google consiste à embarquer le jar correspondant dans son plugin. Ainsi on peut l’ajouter au classpath du projet et l’utiliser. Inconvénient : chaque plugin embarque toutes ses dépendances, quitte à les ré-exporter, sans aucune gestion commune des dépendances. Bref, je trouve que l’on va un peu à l’encontre de l’esprit d’OSGi.

Eclipse Orbit

Une autre approche que je vous propose ici consiste à piocher dans le projet Eclipse Orbit (http://www.eclipse.org/orbit/). Ce projet essaie justement de mutualiser les librairies tierces pour tous les projets Eclipse et de les proposer sous forme de bundles OSGi. Exactement ce qu’il nous faut !  Nous allons donc ajouter une dépendance vers le plugin org.lalibrairie du projet Orbit au lieu d’embarquer lalibrairie.jar. On peut récupérer des bundles binaires prêts à l’emploi sur le site d’Orbit, mais je préfère récupèrer les librairies Orbit par CVS.

Voici ma procédure :

  1. Dans la vue CVS repositories (quel que soit votre outil de SCM, le plugin CVS est inclus dans la plupart des distributions d’Eclipse), je crée un nouveau repository CVS à partir de cet URL :
    Razzserver:anonymous@dev.eclipse.org/cvsroot/tools
  2. En explorant ce repository, sous HEAD/org.eclipse.orbit, je vois l’ensemble des librairies disponibles.
  3. Je fais un checkout en tant que projet plugin de la (ou des) librairie(s) dont j’ai besoin.
    Par exemple, je prends org.apache.commons.lang, org.apache.commons.io et org.apache.commons.collections.
  4. Pour chaque projet récupéré ainsi, je vais faire un team>switch to another branch pour aller sur la branche correspondant à la version désirée. Par exemple, je bascule org.apache.commons.collections sur la branche v3_2 pour avoir dans mon workspace le bundle correspondant à la version 3.2 de commons-collections.
    Ça doit donner ça dans le workspace :
  5. Le plus gros est fait. Je peux maintenant ajouter très simplement la librairie dans l’onglet dependancies du plugin, comme je dépendrais de tout autre plugin.
  6. Ne pas oublier au moment de livrer d’ajouter les plugins provenant d’Orbit dans le(s) feature(s)


Crédits photo : NASA Goddard Space Flight CenterCertains droits réservés (licence Creative Commons)