Преобразование существующей JAR в OSGi-bundle
У меня есть файл JAR, который мне нужно преобразовать в пакет OSGi. У меня нет исходного кода для файла JAR.
Я попытался использовать ответы из:как создать пакет OSGi из библиотеки jar?
тем не менее, они довольно устарели.
Edit: мне нужно преобразовать несколько, но фиксированное количество банок.
4 ответов
1 - используйте bnd-платформа для создания пакетов OSGi при ожидании частых дополнений / обновлений Jars или при получении зависимостей из репозиториев Maven
мы используем:bnd-платформа (Я также автор) для управления зависимостями третьих лиц и создания пакетов OSGi из них. Вы можете использовать его как с зависимостями, полученными из репозиториев Maven, так и с локальными банками (см. README). Если вы регулярно добавляйте или обновляйте свои зависимости я бы посоветовал вам попробовать bnd-платформа. Это плагин для Gradle, вы можете легко начать с этот шаблон - просто добавьте файлы Jar и укажите конфигурацию, как описано в проекте README (bundle symbolic names, versions), и запустите gradlew bundles
.
2 - используйте bnd для создания пакетов OSGi, когда вы делаете это один раз или дополнения/обновления редко
если вы делаете этот процесс только один раз или редко, простой способ создать пакет OSGi из существующей банки-напрямую использовать bnd в командной строке. Единственное, что вам нужно, это Java и BND jar. Вы можете использовать wrap
попытаться автоматически обернуть банку или создать С инструкции для bnd (например, для экспорта только определенных пакетов).
пример .БНД файл:
-classpath: lib/trove-2.0.4.jar
-output: gnu.trove-2.0.4.jar
Export-Package: *;-split-package:=merge-last;-noimport:=true
Import-Package: *
Bundle-Version: 2.0.4
Bundle-Name: GNU Trove Collections Plug-in
Bundle-SymbolicName: gnu.trove
пример вызова:
java -jar <path to bnd>.jar trove-2.0.4.bnd
Банка bnd загрузка больше не предлагается непосредственно через веб-сайт, хорошей альтернативой является загрузите его из Maven Central.
на Рецепт Пакета Eclipse проект предоставляет подход на основе Maven для добавления метаданных OSGi в банки, потребляемые из репозитория Maven. Несмотря на название, он не использует Eclipse.
в своей основе он использует инструмент bnd. Этот инструмент похож на швейцарский армейский нож. Он анализирует банки и файлы классов и правильно вычисляет импорт и экспорт пакетов. Вы должны использовать bnd для преобразования собственных банок самостоятельно. Это доступно в Maven Центральный.
Если вы используете Maven, вы можете использовать плагин Maven Bundle для встроенных или встроенных зависимостей в пакет OSGi:
или просто используйте osgi: установите с опцией wrap, как показано ниже.
osgi:install wrap:file:/u01/repository/com/oracle/ojdbc6/11.2.0/ojdbc6-11.2.0.jar
это развернет файл jar как пакет, и вы можете получить пакет в разделе "$fuse_home/data/cache/bundle{id}/version0.0 " папка.