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