Comment convertir jar en bundle OSGi avec eclipse et bndtools

Je cherche un guide étape par étape pour convertir jar en un ensemble OSGi à l’aide du plugin eclipse bndtools. Je sais qu’il est possible de le faire avec bnd en utilisant la ligne de commande, mais ce serait bien de savoir comment faire la même chose via l’EDI.

Il se peut que je manque quelque chose, mais ce tutoriel explique uniquement comment créer un projet à partir de rien.

Suivez l’article Créer des plug-ins Eclipse (ensembles OSGi) à partir d’un fichier jar standard pour y parvenir. Bien que cette approche n’utilise pas Bnd, mais vous seriez capable de réaliser ce que vous voulez.

En bref, vous pouvez faire ce qui suit:

  1. Créer un nouveau projet de File-> New -> Project...-> Plug-in Development -> "Plug-in from Existing JAR Archives" en sélectionnant File-> New -> Project...-> Plug-in Development -> "Plug-in from Existing JAR Archives"

  2. Sélectionnez les pots que vous voulez avoir dans ce nouveau plugin (bundle). Entrez les autres données du plugin (nom, version, identifiant, etc.).

  3. Désélectionnez l’indicateur Unzip the JAR archive into the project . Appuyez sur puis terminer.

Décocher la case Unzip the JAR archive into the project empêcher l’extraction des fichiers de classe du fichier Jar, ce qui n’est généralement pas nécessaire.

EDIT: Pour exporter votre ensemble afin de l’installer dans un environnement d’exécution OSGi. Sélectionnez votre bundle et choisissez File -> Export -> Plug-in Development -> "Deployable plug-ins and fragment" .

Décochez la case à cocher pour exporter la source.

  1. Créez simplement un nouveau projet dans bndtools pour tous les fichiers jars (ou les fichiers associés) que vous souhaitez convertir.
  2. Atsortingbuez à ce projet un nom qui sera le préfixe du nom symbolique des ensembles convertis. Par exemple, si votre entreprise est très performante, appelez le projet ‘com.acme’
  3. Télécharger le fichier jar et les sources dans un répertoire jar
  4. Créez un nouveau descripteur d’ensembles avec une entrée -classpath (Fichier / Nouveau / Descripteur d’ensembles), par exemple:

-classpath: jar/htmlcleaner-2.2.jar, jar/htmlcleaner-2.2-src.zip

Export-Package: org.htmlcleaner.*;version=1.0

Import-Package: org.apache.tools.ant;resolution:=optional,\

org.jdom;resolution:=optional,\

*

Bundle-Version: 2.2.1

Après avoir sauvegardé ce fichier, regardez dans le répertoire généré, voila, il y a votre bundle! Vous pouvez réutiliser le même projet pour n’importe quel nombre d’ensembles que vous souhaitez emballer.

Vous pouvez ensuite libérer le paquet dans l’un des référentiels. Sélectionnez le fichier bnd.bnd et sélectionnez Release Bundle dans le menu contextuel.


Edit: NB Vous ne pouvez pas utiliser directement un projet “wrap” à partir d’autres projets, car Eclipse a besoin de l’arborescence des sources pour que cela fonctionne. Il existe deux solutions pour cela:

  • Placez le paquet emballé dans un référentiel et utilisez-le à partir de là (comme décrit ci-dessus)
  • Décompressez l’arborescence source dans le dossier src du projet

https://github.com/bndtools/bndtools/wiki/How-to-Wrap-Bundles

En plus des réponses existantes, cet article de blog pourrait vous intéresser. Il explique comment créer ce bundle OSGi à partir d’un fichier jar contenant “pure maven”, c’est-à-dire sans avoir besoin d’un IDE spécifique et / ou de plugins. (Pour être précis, il est de nouveau sous le capot avec le vrai travail;))