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格式 ) 查看以上代码段的 全文 。
例:
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
也可以看看:
- 插件清单 t(plugin.xml)
- osgi捆绑清单 (MANIFEST.MF)
在功能清单(feature.xml)规则方面, help.eclipse.org具有非常好的文档,但是要记住的最重要的内容以及我经常要查找的内容是如何陈述所需上游功能的匹配规则和插件。 经验表明,最好明确声明事物,这样就无需进行下游猜测,并且阅读清单的人都确切知道您的功能所需要的版本或与您的功能兼容的版本。 另外,虽然您可能正在使用PDE UI进行构建,但是其他人可能正在使用Tycho和Maven,并且每种工具都可以以自己的方式解释丢失的元数据。
如有疑问,请说清楚。
有效值和处理如下:
- 如果未指定version属性,则忽略match属性(如果已指定)。
- 完美 –依赖的插件版本必须与指定版本完全匹配。 如果“ patch”为“ true”,则假定为“ perfect”,并且无法设置其他值。 [1.2.3,1.2.3]
- 等效 –依赖的插件版本必须至少为指定的版本或更高的服务级别(主要和次要版本级别必须等于指定的版本)。 [1.2.3,1.3)
- 兼容 –依赖的插件版本必须至少为指定的版本,或者为更高的服务级别或次要级别(主版本级别必须等于指定的版本)。 [1.2.3,2.0)
- GreaterOrEqual –依赖的插件版本必须至少为指定的版本,或者更高级别的服务(次要或主要级别)。 1.2.3
上面的摘录的全文可以在这里看到 。
例:
<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>
参考: DivByZero博客上的JCG合作伙伴 Nick Boldt的MANIFEST.MF和feature.xml版本控制规则 。
翻译自: https://www.javacodegeeks.com/2012/04/manifestmf-and-featurexml-versioning.html