Как легко развернуть контейнер 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
Другие вопросы по тегам