Как легко развернуть контейнер 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