Как легко развернуть контейнер Karaf Osgi с проектом maven

Я разрабатываю пакет OSGI для анализа PDF-файла с помощью библиотеки PDFBox. Я использую maven для создания проекта и Karaf в качестве контейнера OSGI. Библиотека PDFBox совместима с OSGI, поэтому я подумал, что это будет легко. Но я просто не могу получить правильную модель развертывания.

в традиционном веб-приложении я бы построил один WAR-файл, содержащий все зависимости, и поместил бы его в контейнер сервлета, и он был бы развернут. С другой стороны, единственный способ, которым я понял, как установить пакет osgi выполняется вручную. Я должен создать файл инструкции по установке, в котором перечислены все зависимости, которые необходимо вручную загрузить и скопировать в папку karaf deploy, и обязательно сделать это в правильном порядке. У меня такое чувство, будто я вернулся в каменный век.

там должен быть более простой способ, верно? Я все еще использую maven для объявления зависимостей, но мне просто нужно использовать предоставленную область. Было бы здорово, если бы эти зависимости могли быть автоматически установленный.

Я использую Maven-bundle-plugin для создания пакета из моего приложения. Он генерирует репозиторий OBR (репозиторий.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 handler, вы также можете использовать file обработчик:

features:addUrl file:base/features/features.xml