在OSGI功能中添加版本要求

问题描述 投票:0回答:1

OSGI 功能是否支持版本控制以及它是如何工作的?假设我有一个声明如下的模块:

Bundle-SymbolicName: my-module
Implementation-Version: 1.8.1-qualifier
Provide-Capability: org.foo.dependency;nameId="my-module",version="1.8.1-qualifier"

我可以添加这个要求来获取上面的模块吗?

Require-Capability: org.foo.dependency;filter:="&(nameId=my-module)(version>=1.8)"

如果已在提供程序模块中指定,是否还有一种方法可以在清单上利用

Implementation-Version
?我看到对
osgi.wiring.bundle
here 的引用。我可以根据要求这样做吗:

Require-Capability: org.foo.dependency;filter:="(nameId=my.module)",osgi.wiring.bundle;filter:="(bundle-version>=1.8)"

感谢有关该主题的任何指示。

java osgi requirements
1个回答
0
投票

1.8.1-qualifier
不是有效的 OSGi 版本
1.8.1.qualifier
是有效的 OSGi 版本。

&(nameId=my-module)(version>=1.8)
不是有效的 OSGi 过滤器表达式。您需要用括号括起来。
(&(nameId=my-module)(version>=1.8))

您不能使用

Implementation-Version
,但可以使用
Bundle-Version

Bundle-SymbolicName: my-module
Bundle-Version: 1.8.1.qualifier

Require-Capability: osgi.wiring.bundle;filter:="(&(osgi.wiring.bundle=my-module)(bundle-version>=1.8))"

参见 https://docs.osgi.org/specation/osgi.core/8.0.0/framework.namespaces.html#framework.namespaces.osgi.wiring.bundle.

© www.soinside.com 2019 - 2024. All rights reserved.