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

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

6 ответов

Решение

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

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

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

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

альтернативный текст

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

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

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

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

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

  1. SpringSource http://www.springsource.com/repository
  2. Fusesource http://repo.fusesource.com/

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

  • Создайте новый проект подключаемого модуля из существующего архива JAR.

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

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

  • НОТА:
  • Убедитесь, что на целевой платформе выбран каркас OSGI.
  • Разархивировать архивы JAR в проект отменено -> отмена выбора, будет экспортировать все пакеты из JAR

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

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

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

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

Позднее прибытие на вечеринку:

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

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

Банки будут частью OSGi runtime, которые вы можете запустить с помощью 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.'
    }
}
Другие вопросы по тегам