Comment utiliser les Jakarta Commons dans un plugin Eclipse

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  :

  • – 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 :
    :pserver:anonymous@dev.eclipse.org/cvsroot/tools

  • – En explorant ce repository, sous HEAD/org.eclipse.orbit, je vois l’ensemble des librairies disponibles.
  • – 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.
  • – 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 :

  • – 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.
  • – Ne pas oublier au moment de livrer d’ajouter les plugins provenant d’Orbit dans le(s) feature(s)


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