Я связываюсь с OSGi и пытаюсь настроить проект с помощью Apache Felix и Maven. Я хотел бы использовать многомодульные сборки и декларативные службы. Проект размещается на GitHub: osgi-maven-example (Обратите внимание, что ссылка указывает на конкретный фиксации и не ГОЛОВЕ хранилища.)Обратная связь с несколькими модульными проектами Maven с OSGi
У меня несколько вопросов по поводу общей настройки проекта:
Согласно Neil Bartlett,
bnd-maven-plugin
должен предпочтительно использоваться над плагином Apache Felix Bnd, поскольку он соответствует жизненному циклу Maven. Судя по возрасту bnd-maven-plugin, это, по-видимому, относительно новый подход, и поэтому я не уверен, что это хорошая идея.Я использую пакет декларативных услуг (
org.apache.felix.scr.annotations
) от Apache Felix для определения моих компонентов. Эти аннотации используютсяmaven-scr-plugin
для генерации дескрипторов служб, которые включены вMANIFEST.MF
с использованием следующей строки в файлеbnd.bnd
:Service-Component: OSGI-INF/*.xml
. Является ли это способ использования декларативных услуг?IntelliJ отображает предупреждение в
GermanGreeter
-класса:
Что именно это означает? Нужно ли мне об этом заботиться? Как я могу это исправить?
Хотя я очень рад за этот рабочий пример, мне интересно, если я использую все эти технологии в их прямом пути, и я был бы очень признателен, если бы я мог бы получить обратную связь от общей установки, прежде чем я начиная использовать его в более крупном проекте.
Благодарим за внимание к официальному пакету аннотаций. Что касается плагина bnd: разве не совсем наоборот? Насколько я знаю, плагин bundle создает банку самостоятельно, что на самом деле является работой плагина jar. –
Да, maven-bundle-plugin определяет новую упаковку и новый жизненный цикл, но эта упаковка не является обязательной (см. Цель «manifest»). bnd-maven-plugin более прост в использовании, так как он не меняет жизненный цикл/упаковку, но ему не хватает других вещей.например, его конфигурация не соответствует «maven way» (единая точка конфигурации - pom.xml) или наследует конфигурации между проектами (общий файл bnd в maven repo). оба имеют pro & con –
Благодарим вас за разъяснение! –