Подтвердить что ты не робот

Как создать пакет OSGi из библиотеки jar?

Как создать пакет OSGi из библиотеки jar?

4b9b3361

Ответ 1

Если вы используете eclipse: для этого есть мастер.

Он позволяет вам выбрать несколько библиотек jar и создать проект подключаемого модуля (например, пакет OSGi), включая эти баннеры.

Вы можете найти его здесь:

File -> New -> Other ... -> Plug-in from Existing jar Archives.

alt text

Ответ 2

В принципе вам просто нужно добавить метаданные OSGi в манифест

Существует создатель пакета для eclipse, который дает очень практичный способ добавить эти записи, которые должны быть частью набора инструментов Plugin Dev.

Вот статья, в которой подробно описывается процесс и как это делается с помощью инструмента Bnd, maven и т.д.

Мне лично нравится инструменты pax. Все это основано на командной строке, но очень практично. Чтобы создать пакет OSGi существующей банки, вы можете использовать bnd tool.

Ответ 3

Сначала проверьте, можете ли вы найти версию библиотеки с поддержкой osgi из репозиториев

Если вы не найдете версии с поддержкой OSGi. Вы можете использовать инструмент pax - PaxConstruct или использовать aQute Bnd.

Ответ 4

  • Создайте новый проект Plug-in из существующего архива JAR.

введите описание изображения здесь

  • Добавить файл jar для экспорта

введите описание изображения здесь

  • Нажмите "Далее" и назовите проект.

введите описание изображения здесь

  • ПРИМЕЧАНИЕ:
  • Убедитесь, что на целевой платформе выделена инфраструктура OSGI.
  • Разархивировать архивы JAR в проект отменен → отменить выбор, экспортирует все пакеты JAR

  • Если распаковать JAR-архивы в проект выбран, вам потребуется вручную экспортировать необходимые пакеты в файл MANIFEST.MF.

Нажмите "Готово". Вы найдете проект с именем transport-5.1.1, созданным в вашей рабочей области. Также вы можете проверить, что все пакеты JAR экспортируются в файле MANIFEST.MF.

Ответ 5

Проект Eclipse Bundle Recipe предоставляет подход, основанный на Maven для добавления метаданных OSGi в JAR, используемые в репозитории Maven.

В своей основе он использует инструмент bnd. Этот инструмент похож на швейцарский армейский нож. Он анализирует банки и файлы классов и правильно вычисляет импорт и экспорт пакетов. Вы должны использовать bnd для конвертации собственных банков самостоятельно. Это доступно в Maven Central.

Ответ 6

Позднее прибытие на сторону:

Если вы используете Gradle, вы можете добавить банку в качестве нормальной зависимости вашего проекта, если вы примените osgi-run плагин.

Плагин osgi-run будет обертывать банку прозрачно в пакет для вас, экспортируя в нее все пакеты и рассчитывая все его импорт. Поскольку Gradle будет знать транзитные зависимости jar, он будет делать то же самое и для них, если это необходимо.

Ярлыки будут частью OSGi runtime osgi-run create, которые затем можно запустить с помощью gradle runOsgi или gradle createOsgi, а затем выполнить сценарии run.sh или run.bat.

Фактическая упаковка выполняется Bnd, конечно же, швейцарским ножом в мире OSGi.

Если вы хотите настроить способ обертывания (что обычно нужно импортировать/экспортировать), вы можете легко сделать это в файле сборки Gradle, см. для деталей.

Пример:

wrapInstructions {
    // use regex to match file name of dependency
    manifest( "c3p0.*" ) {
        // import everything except the log4j package - should not be needed
        instruction 'Import-Package', '!org.apache.log4j', '*'
        instruction 'Bundle-Description', 'c3p0 is an easy-to-use library for making traditional ' +
                'JDBC drivers "enterprise-ready" by augmenting them with functionality defined by ' +
                'the jdbc3 spec and the optional extensions to jdbc2.'
    }
}