处理拆分包: 使用maven-bundle-plugin的Require-Bundle

3
我正在将一组现有的库构建为OSGi捆绑包。这是一个多模块Maven项目,具有几个层次的POM继承和聚合。理想情况下,插件配置应仅放置在父POM中。
该项目由100多个JAR文件组成。已经有一个超级捆绑包涵盖了整个库并导出所有包。我的努力旨在使库更加模块化,这也是首次将它们作为OSGi捆绑包的主要原因。
主要问题是该库存在分割包问题,而我无法更改包结构。我试图使用“Require-Bundle”来解决此问题,正如书籍“OSGi in Action”中推荐的那样,尽管该书提到这不是一个好的做法。我尝试了使用名为“split”的任意属性在“Import-Package”中分离捆绑包的部分并仅导入某些包的建议。但由于提供相同包的捆绑包数量太多,这种方法配置起来过于复杂。
我的问题是如何配置“maven-bundle-plugin”“Require-Bundle”指令,如果可能的话,使用通配符(例如*)作为告诉它使用所有Maven依赖项的形式,而不必手动列出所有捆绑包名称和版本;即是否有替代方法:
<Require-Bundle>lib-api; version=${project.version}</Require-Bundle>

使用某种通配符匹配方式,并将其放在父 POM 中的内容?

如果确实可以这样做,那么问题就在于你假设运行时的依赖与构建时的依赖是相同的。通常情况下,这并不成立。 - Neil Bartlett
的确,我假设在<Require-Bundle>中插入的所有捆绑包都是在构建时可用的Maven依赖关系。 - Boj
为什么不将这些库合并成一个单一的捆绑包? - Peter Kriens
@PeterKriens已经有一个库的超级捆绑包了。我的努力是为了将它们分开。我会在问题中提供关于为什么这是个问题的详细信息。 - Boj
1个回答

1
简而言之,bnd不支持Require-Bundle,它将其视为普通标头。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接