Dans le précédent billet (
J'ai besoin ... d'utiliser Tycho - Partie 2 : Générer les poms Maven) nous avons montré comment générer les fichiers descripteurs Maven (
pom.xml) au niveau du répertoire
parent et du répertoire du
bundle OSGi.
Nous nous attardons dans ce billet à montrer comment construire un projet OSGi (composé généralement d'un ensemble de bundles, dans notre cas un seul a été défini) à partir de Maven et son plugin Tycho.
Comme nous sommes dans le monde Maven, nous utiliserons les commandes classiques pour le nettoyage du projet (clean) et la construction du bundle (package ou install). Le résultat attendu est un fichier au format jar localisé dans le répertoire target du répertoire du bundle.
Ouvrir l'invite de commandes de Windows et se placer à la racine du répertoire parent. Saisir la ligne de commande ci-dessous :
mvn3 clean package
Le résultat de cette ligne de commande est sans appel, une erreur est lancée (voir capture ci-dessous).
Il est question d'une contrainte qui n'est pas respectée. En fait, le package
org.osgi.framework n'est pas disponible pour la construction du
bundle. Cette dépendance n'est pas respectée.
Pour résoudre ce problème, il faut préciser au plugin Tycho où se trouve la plateforme cible (
target platform). La plateforme cible est en quelque sorte un entrepôt Maven. Cette plateforme cible contient tous les plugins nécessaires au fonctionnement d'une application OSGi sous Equinox. Dans notre cas, il faut pouvoir fournir un ou plusieurs plugins exposant le package
org.osgi.framework.
Ainsi, pour indiquer la plateforme cible, saisir la ligne de commande ci-dessous
mvn3 clean package -Dtycho.targetPlatform=C:\eclipse3.5.2
Où
c:\eclipse3.5.2 est le répertoire contenant l'installation d'Eclipse 3.5.2.
Après quelques secondes de compilation (un peu plus s'il y a besoin de télécharger des dépendances pour Tycho et Maven 3), un fichier jar (
eclipse.tycho.osgifirstbundle-1.0.0-SNAPSHOT.jar) est disponible dans le répertoire
target du
bundle eclipse.tycho.osgifirstbundle. Si vous utilisez la commande
install en place de package, le jar sera en plus déployé dans l'entrepôt de Maven 3.
A suivre ...Veuillez noter que pour construire ce
bundle il est nécessaire de disposer d'une plateforme cible en local sur sa machine. Si vous souhaitez vérifier votre construction sur différentes plateformes (différentes versions OSGi par exemple), il sera nécessaire de disposer autant de plateformes cibles que de versions à construire.
Nous montrerons ainsi dans le prochain billet comment utiliser un entrepôt
p2 pour construire le
bundle afin d'éviter de fournir explicitement les plugins de dépendance.