OSGI 导出包

OSGI export package

我需要为我的项目导入包 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)都是允许的

回答您的问题:

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

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

你最终的理解是正确的。

另请注意,指令已处理 in-order,因此首先指定的排除或包含优先于后续声明,这就是为什么 !* 实际上没有任何意义。