我正在调整现有的库集合,将它们构建为 OSGi 包。它是一个多模块 Maven 项目,具有多层 POM 继承和聚合。理想情况下,插件配置将仅放置在父 POM 中。
该项目由 100 多个 jar 组成。已经有一个包含整个库并导出所有包的大型包。我的努力旨在使库更加模块化,这是将它们作为 OSGi 包放在首位的主要原因。
主要问题是这个库有一个拆分包的噩梦,我无法更改包结构。我正在尝试使用 Require-Bundle
解决问题,正如 OSGi in Action 一书中所推荐的,尽管书中提到这不是一个好的做法。我尝试了在 Import-Package
中使用名为“split”的任意属性的建议分离 bundle 的各个部分并仅导入某些包。但由于提供相同包的 bundle 数量众多,因此配置起来太复杂了。
我的问题是如何配置 maven-bundle-plugin
<Require-Bundle>
指令,如果可能的话,使用通配符(例如 *)作为告诉它使用所有 Maven 依赖项的一种形式,而不是必须手动列出所有包的名称和版本;即是否有替代方案:
<Require-Bundle>lib-api; version=${project.version}</Require-Bundle>
使用某种通配符匹配并且可以放在父 POM 中?
最佳答案
简而言之,没有。 bnd 不支持 Require-Bundle,它将其视为普通 header 。
关于java - 处理拆分包 : Require-Bundle with maven-bundle-plugin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19781116/