Конфликты возможностей OSGI Bundle Repository (OBR) во время разрешения OBR в Apache Felix

Я изучаю использование OBR в Феликсе в качестве варианта развертывания для большого приложения, но столкнулся с некоторыми начальными препятствиями.

Принятый подход

  1. Я создал новый файл jar с manifest.mf, в котором перечислены все зависимости приложений (в основном все в ручном развертывании) вплоть до сторонних библиотек в разделе "Require-Bundle:". Мое намерение состояло в том, чтобы сначала объявить все, а затем выполнить сопряжение и разрешить сторонние пакеты, разрешенные через OBR.
  2. Индексировал мой локальный репозиторий.m2 как OBR, используя maven-bundle-plugin

    mvn org.apache.felix:maven-bundle-plugin:2.3.7:index
    
  3. Запустил Apache Felix и добавил репозиторий OBR

    obr:repos add file:///~/.m2/repository/repository.xml
    
  4. Попытка развернуть jar-файл, содержащий весь список зависимостей пакета приложения

    obr:deploy --required-only --start  com.conorjgall.application.definition
    

Проблемы

В некоторых пакетах javax.inject есть требование к пакету из-за использования инъекции зависимостей в Spring. Тем не менее, в OBR есть более одного пакета, объявляющего о возможности javax.inject. Он доступен как в комплекте Spring, так и в пакете Google Guice. К сожалению, распознаватель OBR, похоже, выбрал реализацию Guice, которая мешает запуску моего приложения.

Временное решение

Если я удаляю библиотеку Guice из индекса OBR, распознаватель OBR никогда не находит ее, поэтому используется реализация Spring, и приложение запускается без проблем.

Вопросы

  1. Я перечислил все зависимости в jar приложения высокого уровня, включая ту, что содержит реализацию javax.inject в Spring. Почему распознаватель OBR Феликса пытается разрешить требование пакета, когда я прямо сказал ему развернуть пакет, который уже предоставляет его? Происходит ли разрешение OBR в глубину, когда я пытаюсь развернуть его таким образом (используя один пакет)?
  2. Мне любопытно, какова стратегия, обычно используемая для создания / поддержки OBR-репозиториев сторонних библиотек, чтобы гарантировать отсутствие конфликтов возможностей пакетов. Следует ли создавать и поддерживать меньшие индексы репозитория OBR, которые содержат только зависимости приложений и не допускают конфликтов возможностей пакетов? Есть ли плагин Maven, который может помочь?
  3. Как более широкое сообщество развертывает>100 пакетов одновременно через OBR? Возможно, есть лучшие варианты, чем решение родительского пакета.

0 ответов

Другие вопросы по тегам