osgi中的dynamic=域导出是什么?

osgi中的dynamic=域导出是什么?,osgi,equinox,osgi-bundle,Osgi,Equinox,Osgi Bundle,我使用osgi/equinox,在浏览其中一个bundle MANIFEST.MF文件时,我遇到了奇怪的行: Export-Package: package.a.b.c;dynamic=domain 使用dynamic=domain选项导出包意味着什么?它与常规导出(没有任何附加选项)有何不同?您可以向导出包子句添加任意数量的自定义属性。另一方面(导入包),您可以指定只有具有特定属性的包才适合您 见第3.6.5章OSGi核心规范导出包: 以下属性是本规范的一部分: 版本-命名软件包的版本,其

我使用osgi/equinox,在浏览其中一个bundle MANIFEST.MF文件时,我遇到了奇怪的行:

Export-Package: package.a.b.c;dynamic=domain

使用dynamic=domain选项导出包意味着什么?它与常规导出(没有任何附加选项)有何不同?

您可以向导出包子句添加任意数量的自定义属性。另一方面(导入包),您可以指定只有具有特定属性的包才适合您

见第3.6.5章OSGi核心规范导出包:

以下属性是本规范的一部分:

  • 版本-命名软件包的版本,其语法如第35页版本中所定义。信息技术 定义关联包的版本。默认值为0.0.0

  • 规范版本-版本属性的别名,仅用于简化从早期版本的迁移。如果存在版本属性,则值必须相等

此外,还可以指定任意匹配属性。请参阅第58页的属性匹配

参见OSGi核心规范第3.7.7章属性匹配:

例如,以下语句将匹配

除版本和捆绑包版本属性使用版本范围比较外,属性值按字符串进行比较。必须忽略属性值中的前导空格和尾随空格

请注意,我只引用了本章的部分内容。你应该检查规格中的原件


我不认为这些属性在Equinox代码中是以特定的方式处理的。如果有多个具有相同名称的包,则可以在导入包子句中使用它们。

您可以向导出包子句添加任意数量的自定义属性。另一方面(导入包),您可以指定只有具有特定属性的包才适合您

见第3.6.5章OSGi核心规范导出包:

以下属性是本规范的一部分:

  • 版本-命名软件包的版本,其语法如第35页版本中所定义。信息技术 定义关联包的版本。默认值为0.0.0

  • 规范版本-版本属性的别名,仅用于简化从早期版本的迁移。如果存在版本属性,则值必须相等

此外,还可以指定任意匹配属性。请参阅第58页的属性匹配

参见OSGi核心规范第3.7.7章属性匹配:

例如,以下语句将匹配

除版本和捆绑包版本属性使用版本范围比较外,属性值按字符串进行比较。必须忽略属性值中的前导空格和尾随空格

请注意,我只引用了本章的部分内容。你应该检查规格中的原件


我不认为这些属性在Equinox代码中是以特定的方式处理的。如果有多个具有相同名称的包,则可以在导入包条款中使用这些属性。

值得一提的是,通过添加指令
mandatory:=dynamic
,可以将某些或所有属性标记为必填属性。这意味着导入程序必须具有
动态
属性的匹配值,否则无法从该捆绑包导入该包。这对于处理拆分包非常有用,因为它避免了任何捆绑包“意外”导入拆分的一部分。然而,这是一个相当高级的话题@这就是我建议阅读规范的原因:)值得一提的是,通过添加指令
mandatory:=dynamic
,可以将部分或所有属性标记为强制属性。这意味着导入程序必须具有
动态
属性的匹配值,否则无法从该捆绑包导入该包。这对于处理拆分包非常有用,因为它避免了任何捆绑包“意外”导入拆分的一部分。然而,这是一个相当高级的话题@这就是我建议阅读规范的原因:)
A: Import-Package: com.acme.foo;company=ACME

B: Export-Package: com.acme.foo; «
  company="ACME"; «
  security=false