Как создать пакет OSGi из библиотеки jar?
Как создать пакет OSGi из библиотеки jar?
Ответ 1
Если вы используете eclipse: для этого есть мастер.
Он позволяет вам выбрать несколько библиотек jar и создать проект подключаемого модуля (например, пакет OSGi), включая эти баннеры.
Вы можете найти его здесь:
File -> New -> Other ... -> Plug-in from Existing jar Archives.
Ответ 2
В принципе вам просто нужно добавить метаданные OSGi в манифест
Существует создатель пакета для eclipse, который дает очень практичный способ добавить эти записи, которые должны быть частью набора инструментов Plugin Dev.
Вот статья, в которой подробно описывается процесс и как это делается с помощью инструмента Bnd, maven и т.д.
Мне лично нравится инструменты pax. Все это основано на командной строке, но очень практично. Чтобы создать пакет OSGi существующей банки, вы можете использовать bnd tool.
Ответ 3
Сначала проверьте, можете ли вы найти версию библиотеки с поддержкой osgi из репозиториев
- SpringSource http://www.springsource.com/repository
- Fusesource http://repo.fusesource.com/
Если вы не найдете версии с поддержкой 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.'
}
}