Обработка разделенных пакетов: Require-Bundle с maven-bundle-plugin

Я адаптирую существующий набор библиотек, собирая их как пакеты OSGi. Это многомодульный проект Maven с несколькими уровнями наследования и агрегации POM. В идеале конфигурация плагина должна размещаться только в родительских POM.

В проекте более 100 банок. Уже есть мега-пакет, который охватывает всю библиотеку и экспортирует все пакеты. Мои усилия направлены на то, чтобы сделать библиотеку более модульной, что является основной причиной того, что они изначально были в виде пакетов OSGi.

Основная проблема в том, что в этой библиотеке кошмар с разделением пакетов, и я не могу изменить структуру пакета. Я пытаюсь решить проблему с помощью Require-Bundle, как рекомендовано в книге OSGi в действии, хотя в книге упоминается, что это не очень хорошая практика. Я попробовал рекомендовать использовать произвольный атрибут с именем "split" в Import-Package для разделения частей пакета и импорта только определенных пакетов. Но из-за большого количества пакетов, предоставляющих один и тот же пакет, его оказалось слишком сложно настроить.

Мой вопрос заключается в том, как настроить директиву maven-bundle-plugin <Require-Bundle>, если это вообще возможно, для использования подстановочных знаков (например, *) в качестве формы указания ему использовать все зависимости Maven вместо того, чтобы вручную перечислять все пакеты. названия и версии; то есть есть альтернатива этому:

<Require-Bundle>lib-api; version=${project.version}</Require-Bundle>

который использует какое-то сопоставление подстановочных знаков и может быть помещен в родительский POM?


person Boj    schedule 05.11.2013    source источник
comment
Проблема с этим - если это действительно возможно - заключается в том, что вы предполагаете, что ваши зависимости во время выполнения такие же, как и зависимости во время сборки. Обычно это не так.   -  person Neil Bartlett    schedule 05.11.2013
comment
Правда. Действительно, я предполагаю, что все пакеты, которые нужно вставить в <Require-Bundle>, являются зависимостями Maven, доступными во время сборки.   -  person Boj    schedule 06.11.2013
comment
Почему бы не объединить эти библиотеки в один пакет?   -  person Peter Kriens    schedule 06.11.2013
comment
@PeterKriens Уже есть мега-пакет библиотеки. Мои усилия направлены на то, чтобы разделить их. Я дополню вопрос подробностями о том, почему это проблема.   -  person Boj    schedule 06.11.2013


Ответы (1)


Короче нет. bnd не поддерживает Require-Bundle, он рассматривает его как обычный заголовок.

person Peter Kriens    schedule 06.11.2013