maven-bundle-plugin
我正在使用 BND将库打包为 OSGi 包。我注意到 BND 生成了一个很长的Export-Package
列表,主要是因为它包含了许多由库本身在uses
其他导出包的指令中导出的包。
我(有点)理解uses
指令。我假设在这种情况下uses
,导出包中的类在方法签名(因此导入)中使用了其他包的类(在 下列出)。
从这个意义上说,我有两个问题:
- 是否真的有必要在导出包的
uses
指令中包含由同一个包导出的包?这些包不会被任何其他包导出;因此没有拆分包。 - 这种行为是否表明库的包结构定义不正确?顶级包使用的几个类通常位于子包中,反之亦然。这是一个被改编为 OSGi 包的库。包结构不是为 OSGi 友好而设计的。
以下是清单中列出的大多数导出包的方式
Export-Package: org.lib.annotation;version="10",org.lib.coverage;version="10";
uses:="javax.measure.unit, org.lib.annotation,org.lib.geometry,org.lib.ref,org.
lib.ref.operation,org.ref.util"
从上面uses
列表中的所有包中,仅从javax.measure.unit
另一个包中导入。
maven-bundle-plugin
配置:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.4.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${parsedVersion.osgiVersion}</Bundle-Version>
<Export-Package>org.lib.*;version=${project.version}</Export-Package>
<Import-Package>*</Import-Package>
<_experiments>true</_experiments>
</instructions>
</configuration>
</plugin>