Как легко развернуть контейнер Karaf Osgi с проектом Maven
Я разрабатываю пакет OSGI для анализа PDF-файла с использованием библиотеки PDFBox. Я использую maven для сборки проекта, а Karaf в качестве контейнера OSGI. Библиотека PDFBox совместима с OSGI, поэтому я подумал, что это будет легко. Но я просто не могу понять модель развертывания.
В традиционном веб-приложении я создал бы один WAR-файл, содержащий все зависимости, и поместил бы его в контейнер сервлета, и он был бы развернут. С другой стороны, единственный способ, как я понял, как установить пакет osgi - это сделать это вручную. Мне нужно создать файл инструкций по установке, в котором перечислены все зависимости, которые необходимо вручную загрузить и скопировать в папку развертывания Karaf, и обязательно сделайте это в правильном порядке. Я чувствую, что вернулся в каменные века.
Должен быть более легкий путь, верно? Я до сих пор использую maven для объявления зависимостей, но мне просто нужно использовать предоставленную область. Было бы здорово, если бы эти зависимости могли быть установлены автоматически.
Я использую maven-bundle-plugin для создания пакета из моего приложения. Он генерирует OBR-репозиторий (repository.xml), и я попытался установить свой пакет с помощью плагина obr karaf, но он по-прежнему не помогает с зависимостями.
1 ответ
Существуют разные возможности для предоставления пакетов. Я предпочитаю устанавливать пакет с помощью Maven через консоль Karaf, например:
install mvn:org.apache.pdfbox/pdfbox/1.8.4
Если вы не хотите устанавливать каждый пакет один за другим, вы можете использовать так называемые функции, как описано здесь. Функция перечисляет все необходимые пакеты:
<feature name='my-project' version='1.0.0'>
<feature version='2.4.0'>camel-spring</feature>
<bundle start-level='80' start='false'>mvn:com.mycompany.myproject/myproject-dao</bundle>
<bundle start-level='85' start='false'>mvn:com.mycompany.myproject/myproject-service</bundle>
<bundle start-level='85' start='false'>mvn:com.mycompany.myproject/myproject-camel-routing</bundle>
</feature>
Вы добавляете функцию через консоль Karaf:
features:addUrl mvn:org.apache.servicemix.nmr/apache-servicemix-nmr/1.0.0-m2/xml/features
features:install nmr
Вместо mvn
обработчик, вы также можете использовать file
обработчик:
features:addUrl file:base/features/features.xml