java - 处理拆分包 : Require-Bundle with maven-bundle-plugin

标签 java maven osgi apache-felix maven-bundle-plugin

我正在调整现有的库集合,将它们构建为 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/

相关文章:

java - OSGi 基于角色的安全性

java - 过滤 TIMESTAMP 的 TIME 部分不起作用(JPA2、HIBERNATE)

java - Jenkins - 构建 Vaadin Web 应用程序需要很长时间

testing - 对于 OSGi(集成)测试,Arquillian 与 Pax Exam 相比如何?

osgi - 导出版本未指定版本时获取默认版本包

JavaFX + Maven + Ojdbc6 + IntelliJ(使用适用于 Windows 的 Javafx 应用程序部署 oracle jar)

java - Rest JAX-RS异常,未找到MessageBodyWriter

Java 列表电话簿

java - 如何在布局/样式 XML 中设置状态栏色调颜色?

java - 未找到 Maven 'resources' 文件夹