什么时候能力有效时间“解决”和“活跃”?
您何时希望在解析资源时忽略功能?你什么时候想要他们受到尊重?
http://bnd.bndtools.org/chapters/230-manifest-annotations.html
https://osgi.org/javadoc/r6/core/org/osgi/resource/Namespace.html#EFFECTIVE_ACTIVE
答案 0 :(得分:1)
虽然这并不容易,但我认为您可以从OSGi核心规范中获取必要的信息。
参见 3.3.3 Bundle Capabilities
章节有效 - (解析)指定功能可用的时间,可以是解析(默认)或其他名称。 OSGi框架解析器仅考虑没有有效指令或有效的Capabilities:= resolve。外部代理可以考虑使用有效指令的其他值的功能。
我认为这里的重要部分是" 由外部代理商考虑"。
您可以在 3.3.6 Bundle Requirements
一章中找到相同的内容有效 - (resolve)指定考虑需求的时间,可以是resolve(默认)或其他名称。 OSGi框架解析器只考虑没有有效指令或有效的要求:= resolve。 外部代理可以考虑其他要求。有效指令的其他名称应在OSGi联盟中注册
简而言之:OSGi容器只处理有效:= resolve(默认)。其他值可能由第三方技术处理。
在 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服务才能启动其功能(通过检查捆绑包的要求)。