2015-05-28 2 views
0

Я использую OSGi/равноденствие и во время просмотра одного из наших пучков MANIFEST.MF файла я столкнулся странные строки:Что такое dynamic = экспорт домена в osgi?

Export-Package: package.a.b.c;dynamic=domain 

Что это означает, что пакет экспортируется с динамическому = доменом варианта и как делаю он отличается от обычного экспорта (без каких-либо дополнительных опций)?

ответ

4

Вы можете добавить столько настраиваемых атрибутов в предложение Export-Package, сколько захотите. С другой стороны (Import-Package) вы можете указать, что для вас подходит только пакет с определенным атрибутом.

Смотрите главу 3.6.5 Экспорт-пакет базовой спецификации OSGi:

Следующие атрибуты являются частью этой спецификации:

  • версия - версия названных пакетов с синтаксисом, как определено в версии на стр. 35. Он определяет версию связанных пакетов. Значение по умолчанию - 0.0.0.

  • спецификация-версия - псевдоним атрибута версии только для облегчения миграции из более ранних версий. Если атрибут версии присутствует, значения должны быть равны.

Кроме того, могут быть указаны произвольные сопоставимые атрибуты. См Атрибут соответствия на странице 58

И увидеть главу 3.7.7 Атрибут Matching из основной спецификации OSGi:

Например, следующие операторы будут соответствовать.

A: Import-Package: com.acme.foo;company=ACME 

B: Export-Package: com.acme.foo; « 
    company="ACME"; « 
    security=false 

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

Обратите внимание, что я приводил только некоторые части этой главы. Вы должны проверить оригинал в спецификации.

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

+0

Я узнал что-то сегодня, спасибо! – kukis

+0

Стоит отметить, что некоторые или все атрибуты могут быть помечены как обязательные, добавив директиву 'обязательный: = динамический'. Это означает, что импортер * должен * иметь соответствующее значение для атрибута 'dynamic' или он не может импортировать этот пакет из этого пакета. Это может быть полезно для работы с разделенными пакетами, поскольку это позволяет избежать любого пакета из «случайного» импорта части разделения. Однако это довольно сложная тема! –

+0

@NeilBartlett Вот почему я рекомендовал прочитать спецификацию :) –

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