我正在尝试创建一个包装 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个条目)最后一行是问题所在。包含资源条目会将包装的 jar 及其所有依赖项吸进捆绑包中,这很好用。但是,将所有 jar 添加到 Bundle-ClassPath 会导致 bnd 将它们添加到 Private-Package。通常我不会在乎,除了包含的 jar 中有太多包,以至于 bnd 文件变得巨大,并且 bndtools 在尝试创建它时会爆炸。
我尝试手动创建私有包并将其放入 bnd 文件中,但 bnd 只是覆盖了它。
我不知道你为什么担心Private-Package
.它对OSGi框架没有任何意义。这只是一件好事。如果您不想在清单中看到它,只需添加
-removeheaders: Private-Package
到您的 BND 文件。