Планы по поддержке Require-Bundle в maven-bundle-plugin

Планируется ли поддержка "Require-Bundle" в maven-bundle-plugin, даже если это не рекомендуется для OSGi. Бывают ситуации, когда имеет смысл использовать «Require-Bundle», например, для объединения разделенных пакетов.


person user1654885    schedule 22.12.2014    source источник


Ответы (2)


Require-Bundle поддерживается подключаемым модулем пакета, как и все заголовки OSGi, а также любые другие произвольные заголовки, которые вы хотите использовать. Просто напишите их в XML:

<Require-Bundle>
    org.example.foo; bundle-version=3.0,
    org.example.bar; bundle-version=1.0
</Require-Bundle>
<My-Extension-Header>
    blah blah blah
</My-Extension-Header>
person Neil Bartlett    schedule 24.12.2014

Вы можете указать заголовок Require-Bundle MANIFEST в инструкциях. Например.:

<instructions>
    <Require-Bundle>a.b.c</Require-Bundle>
</instructions>

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

person Balazs Zsoldos    schedule 22.12.2014
comment
Но зависимости не разрешаются автоматически, поскольку это не работает с шаблоном пакета импорта *. Верно? - person user1654885; 22.12.2014
comment
В случае разделенных пакетов имеет значение порядок пакетов в Require-Bundle. Bnd не может автоматически решить, какой пакет должен быть первым в порядке. Кроме того, bnd должен анализировать каждый вызов метода, чтобы решить, достаточно ли импортировать пакет, поскольку он используется только из одного пакета или необходимо использование Require-Bundle. Поскольку это слишком сложный вопрос, где некоторые ответы не могут быть предоставлены автоматически (например, порядок пакетов), вы должны поддерживать этот ЗАГОЛОВОК вручную. Однако лучше всего полностью избегать использования Require-Bundle. - person Balazs Zsoldos; 22.12.2014
comment
Спасибо за Ваш ответ. Но разве с импортом не то же самое? Порядок имеет еще большее значение, а вы вообще не можете объединять пакеты ?! Я также не понимаю, почему порядок важен для require-bundle - person user1654885; 22.12.2014
comment
Порядок не имеет значения в Import-Package, поскольку один и тот же пакет (с другой версией) не может быть импортирован дважды. С помощью Require-Bundle один и тот же пакет можно импортировать из нескольких пакетов, и эти пакеты могут содержать одни и те же классы. В этом случае порядок имеет значение при поиске класса. Если у вас есть зависимости, и несколько зависимостей содержат один и тот же пакет, bnd берет первый и сгенерирует Import-Package на его основе. Если бы он хотел сгенерировать Require-Bundle, он не знал бы, следует ли использовать Require-Bundle или Import-Package в этом случае. - person Balazs Zsoldos; 22.12.2014