【问题标题】:OSGI export packageOSGI 导出包
【发布时间】:2019-05-14 18:33:05
【问题描述】:

我需要为我的项目导入一个包 A。但是,无法解决导入问题。于是从我需要的包中查看了导出包文件。

我正在使用 Equinox、spring 和 maven。以下所有代码都在 pom.xml 文件中。

// E.D.C.B.A

!E.D.C.B.F*
!E.D.C.B.G*
!E.D.C.B.Z*
E.D.C.B*,
!*

这个问题可以缩小为两个简单的问题。

  1. E.D.C.B* 是否包含E.D.C.B
  2. !* 是什么意思?这是否意味着不导出任何包或不导出任何包,但需要指定这些包?

根据我的理解,我认为上面的代码意味着没有指定的包导出。除了E.D.C.B.F*E.D.C.B.G*E.D.C.B.G* 中的包外,E.D.C.B*(如E.D.C.BE.D.C.Bbdfd)中的所有包都是允许的。

【问题讨论】:

  • 你需要指定你的开发环境....这是bnd吗? Gradle/Maven/Bndtools??
  • @PeterKriens 感谢您的指正。
  • 您使用的是哪个 maven 插件?也许显示实际的 pom 会有所帮助

标签: osgi osgi-bundle


【解决方案1】:

回答您的问题:

我假设您正在谈论来自 Apache Felix maven-bundle-pluginExport-Package 指令。如果这不正确,请更具体。

  1. 是的,E.D.C.B* 将导出包 E.D.C.B 和子包。
  2. !* 如果您之前已经指定了要导出的包,则通常不需要,但通常意味着:not (any package)

在这种情况下你的最终理解是正确的。

还要注意,指令是按顺序处理的,因此首先指定的排除或包含优先于后面的声明,这就是为什么!* 实际上没有任何意义。

【讨论】:

  • 非常感谢。我终于在 Apache Felix 文档中找到了我需要的一切。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 2012-09-04
  • 2020-07-15
  • 1970-01-01
  • 2012-08-16
  • 2018-11-09
相关资源
最近更新 更多