在 OSGI 能力中添加版本要求
Adding version requirements in OSGI capability
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)"
感谢有关主题的任何指示。
1.8.1-qualifier
不是有效的 OSGi version。 1.8.1.qualifier
是有效的 OSGi 版本。
&(nameId=my-module)(version>=1.8)
不是有效的 OSGi filter expression。您需要用括号括起来。 (&(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))"
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)"
感谢有关主题的任何指示。
1.8.1-qualifier
不是有效的 OSGi version。 1.8.1.qualifier
是有效的 OSGi 版本。
&(nameId=my-module)(version>=1.8)
不是有效的 OSGi filter expression。您需要用括号括起来。 (&(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))"