Как конвертировать jar в пакет OSGi с использованием eclipse и bndtools

Я ищу пошаговое руководство для преобразования jar в пакет OSGi с использованием плагина eclipse bndtools. Я знаю, что это можно сделать с помощью bnd с помощью командной строки, но было бы неплохо узнать, как сделать то же самое через среду IDE.

Мне может быть что-то не хватает, но этот учебник объясняет, как создать проект с нуля.

Ответ 1

Следуйте статье Создайте плагины Eclipse (пакеты OSGi) из стандартной банки, чтобы достичь этого. Хотя этот подход не использует Bnd, но вы сможете достичь того, чего хотите.

Короче вы можете сделать следующее:

  • Создайте новый проект плагина, выбрав File-> New -> Project...-> Plug-in Development -> "Plug-in from Existing JAR Archives"

  • Выберите банки, которые вы хотите иметь в этом новом плагине (комплекте). Введите другие данные плагина (имя, версия, идентификатор и т.д.).

  • Снимите флажок Unzip the JAR archive into the project. Нажмите затем, чтобы завершить.

Снимите флажок Unzip the JAR archive into the project, предотвращая извлечение файлов классов из Jar, который обычно не нужен.

РЕДАКТИРОВАТЬ: Чтобы экспортировать пакет, установите его в среду выполнения OSGi. Выберите свой комплект и выберите File -> Export -> Plug-in Development -> "Deployable plug-ins and fragment".

Снимите флажок "Экспорт источника".

Ответ 2

  • Просто создайте новый проект в bndtools для всех (или связанных) банок, которые вы хотите преобразовать.
  • Дайте этому проекту имя, которое будет префиксом символического имени пакета преобразованных банок. Например. если ваша компания является acme, вызовите проект "com.acme"
  • Загрузите банку и источники в каталоге jar
  • Создайте новый дескриптор пакета с записью -classpath (File/New/Bundle Descriptor), например:

-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

После сохранения этого файла, посмотрите в сгенерированном каталоге, voila, есть ваш комплект! Вы можете повторно использовать один и тот же проект для любого количества пакетов, которые вы хотите обернуть.

Затем вы можете отправить пакет в один из репозиториев. Выберите файл bnd.bnd и выберите Release Bundle в контекстном меню.


Изменить: NB Вы не можете напрямую использовать проект 'wrap' из других проектов, так как Eclipse нуждается в исходном дереве для работы. Для этого есть 2 способа:

  • Поместите завернутый пакет в репозиторий и используйте его там (как описано выше).
  • Распаковать исходное дерево в папке src проекта

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

Ответ 3

В дополнение к существующим ответам вас может заинтересовать эта запись в блоге, в которой объясняется, как создать этот пакет OSGi из банки с помощью "pure maven" ", то есть без необходимости использования определенных IDE и/или плагинов. (Если быть точным, под капотом это еще раз bnd с реальной работой;))