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 prendsorg.apache.commons.lang
,org.apache.commons.io
etorg.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 branchev3_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 Center – Certains droits réservés (licence Creative Commons)