Как создать пакет OSGi из библиотеки jar? - PullRequest
21 голосов
/ 29 августа 2010

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

Ответы [ 6 ]

25 голосов
/ 29 августа 2010

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

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

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

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

alt text

9 голосов
/ 29 августа 2010

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

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

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

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

5 голосов
/ 29 августа 2010

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

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

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

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

enter image description here

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

enter image description here

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

enter image description here

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

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

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

1 голос
/ 08 апреля 2016

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

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

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

Jar будет частью 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.'
    }
}
1 голос
/ 08 апреля 2015

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

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

...