一个能力应该在什么时候有一个有效的时间“解决”,什么时候“活跃”?
您何时希望在解析资源时忽略功能?你希望他们什么时候得到尊重?
http://bnd.bndtools.org/chapters/230-manifest-annotations.html
https://osgi.org/javadoc/r6/core/org/osgi/resource/Namespace.html#EFFECTIVE_ACTIVE
一个能力应该在什么时候有一个有效的时间“解决”,什么时候“活跃”?
您何时希望在解析资源时忽略功能?你希望他们什么时候得到尊重?
http://bnd.bndtools.org/chapters/230-manifest-annotations.html
https://osgi.org/javadoc/r6/core/org/osgi/resource/Namespace.html#EFFECTIVE_ACTIVE
虽然这并不容易,但我认为您可以从 OSGi 核心规范中获得必要的信息。
请参阅第3.3.3 章捆绑功能
有效 - (解析)指定功能可用的时间,解析(默认)或其他名称。OSGi 框架解析器只考虑没有有效指令或有效:=resolve 的功能。外部代理可以考虑具有其他有效指令值的功能。
我认为这里的重要部分是“由外部代理考虑”。
您可以在第3.3.6 章捆绑要求中找到相同的内容
有效 - (解决)指定考虑需求的时间,解决(默认)或其他名称。OSGi 框架解析器只考虑没有有效指令或有效:=resolve 的需求。其他要求可以由外部代理考虑。有效指令的其他名称应在 OSGi 联盟注册
简而言之:只有有效:=解析(默认)由 OSGi 容器处理。其他值可能由 3rdparty 技术处理。
在第8.6 章 osgi.identity 命名空间中,您可以找到有关非解析有效性的示例:
Require-Capability: «
osgi.identity; «
filter:="(&(osgi.identity=org.example.foo-source)(version=1.1))"; «
effective:=meta; «
classifier:=sources; «
resolution:=optional
我想这个要求可以通过开发环境来解决。通过解决此要求,可以从外部存储库下载捆绑包的源。
如果您想在 MANIFEST 标头中提及 OSGi 服务的使用情况,则 Effective :=active会很有用。OSGi 容器不处理这些需求,但很高兴知道捆绑包 XY 需要一个 OSGi 服务才能启动其功能(通过检查捆绑包的需求)。