如何避免从Bundle-ClassPath创建私有包条目?

时间:2014-11-20 20:53:30

标签: java osgi bnd bndtools

我正在尝试创建一个包装jar的包及其所有依赖项(大约20个其他jar)并公开我自己设计的接口。我不想为所有依赖项创建包,因为我想创建一个"密封组件"这包含了整个混乱。

显示问题的示例bnd文件看起来像

Bundle-Version: 0.0.0.${tstamp}
Export-Package:  \
    pub
Include-Resource: lib=lib/
Bundle-ClassPath: .,lib/ant-1.9.3.jar

(这只是一个示例......在现实世界中,Bundle-Classpath中有大约20个条目)最后一行是问题。 Include-Resource条目将把包装好的jar及其所有依赖项吸入到bundle中,并且效果很好。但是,将所有jar添加到Bundle-ClassPath会导致bnd将它们添加到Private-Package。通常情况下我不会关心,除了包含的罐子中有这么多包装,bnd文件变得巨大,并且bndtools试图创建它。

我尝试手动创建Private-Package并将其放在bnd文件中,但是只是覆盖它。

1 个答案:

答案 0 :(得分:1)

我不确定你为什么担心Private-Package。它对OSGi框架没有任何意义。这只是一件事。如果您不想在清单中看到它,只需添加

即可
-removeheaders: Private-Package

到您的bnd文件。