Диапазоны версий плагинов OSGi
Зависимости от пакетов и пакетов имеют связанный диапазон версий, который указывается с использованием интервальной нотации: квадратная скобка «[» или «]» обозначает включающий конец диапазона, а круглая скобка «(» или «)» обозначает эксклюзивный конец из диапазона. Если один конец диапазона должен быть включен, а другой исключен, разрешается соединять круглую скобку с квадратной скобкой. Приведенные ниже примеры проясняют это.
Если используется один номер версии, когда требуется диапазон версий, это означает не одну версию, а диапазон, начиная с этой версии и включая все более поздние версии.
Есть четыре распространенных случая:
- «Строгий» диапазон версий, такой как [1.2.3,1.2.3], который обозначает эту версию и только эту версию.
- «Полуоткрытый» диапазон, такой как [1.2.3,2.0.0), который имеет включающий нижний предел и исключительный верхний предел, обозначая версию 1.2.3 и любую версию после этого, вплоть до, но не включая, версия 2.0.0.
- «Неограниченный» диапазон версий, например 1.2.3, который обозначает версию 1.2.3 и все более поздние версии.
- Нет диапазона версий, который обозначает любую версию, будет приемлемым. НЕ РЕКОМЕНДУЕТСЯ .
Полный текст приведенного выше фрагмента можно посмотреть здесь ( или здесь, в формате PDF ).
Пример:
1
|
Require-Bundle: org.eclipse.core.runtime;bundle-version= "[3.4.0,4.0.0)" , org.eclipse.core.resources;bundle-version= "[3.4.0,4.0.0)" , org.eclipse.ui.ide;bundle-version= "[3.4.0,4.0.0)" , org.eclipse.ui.navigator;bundle-version= "3.5.100" , com.ibm.icu |
Смотрите также:
- плагин манифест т (plugin.xml)
- манифест пакета osgi (MANIFEST.MF)
С точки зрения правил манифеста функций (feature.xml), help.eclipse.org имеет довольно хорошую документацию, но самое важное, что нужно помнить — и что мне часто приходится искать — это как сформулировать правила соответствия для требуемых вышестоящих функций и плагины. Опыт показывает, что всегда лучше четко заявлять о вещах, поэтому нет необходимости в догадках ниже по течению, и любой, кто читает ваш манифест, точно знает, какие версии требуются или совместимы с вашей функцией. Кроме того, хотя вы можете использовать PDE UI для сборки, кто-то другой может использовать Tycho и Maven, и каждый инструмент может интерпретировать пропущенные метаданные по-своему.
Если есть сомнения, изложите это.
Допустимые значения и обработка следующие:
- если атрибут версии не указан, атрибут соответствия (если указан) игнорируется.
- Совершенно — зависимая версия плагина должна точно соответствовать указанной версии. Если «patch» — «true», предполагается «perfect» и другие значения не могут быть установлены. [1.2.3,1.2.3]
- эквивалентно- зависимая версия плагина должна быть как минимум в указанной версии или на более высоком уровне обслуживания (уровни основной и вспомогательной версий должны совпадать с указанной версией). [1.2.3,1.3)
- совместимая — зависимая версия плагина должна быть как минимум в указанной версии, либо на более высоком уровне обслуживания или второстепенном уровне (основной уровень версии должен соответствовать указанной версии). [1.2.3,2.0)
- moreOrEqual — зависимая версия плагина должна быть как минимум в указанной версии или на более высоком уровне обслуживания, на младшем или главном уровне. 1.2.3
Полный текст приведенного выше фрагмента можно посмотреть здесь .
Пример:
01
02
03
04
05
06
07
08
09
10
11
|
< requires > < import feature = "org.eclipse.m2e.feature" version = "1.0.0" match = "compatible" /> < import feature = "org.maven.ide.eclipse.wtp.feature" version = "0.13.0" match = "greaterOrEqual" /> < plugin id = "ch.qos.logback.classic" version = "0.9.27.v20110224-1110" match = "greaterOrEqual" /> < plugin id = "ch.qos.logback.core" version = "0.9.27.v20110224-1110" match = "greaterOrEqual" /> < plugin id = "ch.qos.logback.slf4j" version = "0.9.27.v20110224-1110" match = "greaterOrEqual" /> < plugin id = "org.slf4j.api" version = "1.6.1.v20100831-0715" match = "compatible" /> < plugin id = "com.ning.async-http-client" version = "1.6.3.201106061504" match = "equivalent" /> < plugin id = "org.jboss.netty" version = "3.2.4.Final-201106061504" match = "perfect" /> < plugin id = "org.hamcrest.core" version = "1.1.0.v20090501071000" match = "equivalent" /> </ requires > |
Ссылка: правила управления версиями MANIFEST.MF и feature.xml от нашего партнера по JCG Ника Болдта в блоге DivByZero .