OSGI导出软件包

时间:2019-05-14 18:33:06

标签: osgi osgi-bundle

我需要为我的项目导入一个软件包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*E.D.C.BE.D.C.Bbdfd中的软件包之外,E.D.C.B.F*中的所有软件包(如E.D.C.B.G*E.D.C.B.G*)都被允许。

1 个答案:

答案 0 :(得分:3)

回答您的问题:

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

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

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

还要注意,指令是按顺序处理的,因此首先指定的排除或包含优先于随后的声明,这就是!*实际上毫无意义的原因。