2016-02-19 5 views
2

Я связываюсь с 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 -класса: intellij-warning
    Что именно это означает? Нужно ли мне об этом заботиться? Как я могу это исправить?

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

ответ

3

В настоящее время существует официальный набор аннотаций для DS под пакетом . Эти аннотации упакованы в банке «компендиум» (org.osgi/CMPN), и БНД имеет директиву для создания компонентов дескрипторов: -dsannotations : *

первой часть Вашего вопроса подлежит мнения ... maven-bundle-plugin более " maven centric ": его проще интегрировать в сборку maven. bnd-maven-plugin больше «bnd centric»: вы управляете стандартными файлами bnd, но он нарушил некоторые соглашения о maven. оба имеют преимущество и неудобно

+0

Благодарим за внимание к официальному пакету аннотаций. Что касается плагина bnd: разве не совсем наоборот? Насколько я знаю, плагин bundle создает банку самостоятельно, что на самом деле является работой плагина jar. –

+0

Да, maven-bundle-plugin определяет новую упаковку и новый жизненный цикл, но эта упаковка не является обязательной (см. Цель «manifest»). bnd-maven-plugin более прост в использовании, так как он не меняет жизненный цикл/упаковку, но ему не хватает других вещей.например, его конфигурация не соответствует «maven way» (единая точка конфигурации - pom.xml) или наследует конфигурации между проектами (общий файл bnd в maven repo). оба имеют pro & con –

+0

Благодарим вас за разъяснение! –

1

Я согласен с Джереми, что вы должны использовать стандартизированные аннотации. Они могут использоваться как с felix maven-bundle-plugin, так и с bnd-maven-plugin. Пример первого см. Apache Karaf Tutorial part 10 - Declarative services. Для второго this post from Neil является хорошим источником информации. Вам не нужен плагин scr.

Плагин maven-bundle довольно стабилен и прост в использовании. Проблема заключается в том, что он переопределяет жизненный цикл maven, который может вызвать проблемы с некоторыми настройками проекта. Плагин bnd-maven нуждается в немного больше maven xml в родительском, но имеет то преимущество, что он лучше вписывается в сложные сборки, так как он не настраивает maven.

+0

Я уже читал и также ссылался на это сообщение в блоге в моем вопросе. Однако, если я не настраиваю плагин scr, никаких дескрипторов службы не генерируются, а также службы не запускаются, как только я развертываю пакеты. –

+1

Вам необходимо включить поддержку аннотации spec. Как для maven-bundle-plugin, так и для bnd-maven-plugin вы можете сделать это в файле bnd.bnd, используя «-dsannotations: *». Как объяснил Джереми ... и, конечно же, вам нужно использовать аннотации spec –

+0

У меня уже есть эта строка в моем .bnd файле. Поэтому он должен работать, как только я переключаюсь на официальные аннотации? –

 Смежные вопросы

  • Нет связанных вопросов^_^