【问题标题】:Handling split packages: Require-Bundle with maven-bundle-plugin处理拆分包:Require-Bundle 和 maven-bundle-plugin
【发布时间】:2013-11-15 20:41:39
【问题描述】:

我正在调整现有的库集合,将它们构建为 OSGi 包。这是一个多模块的 Maven 项目,具有多层 POM 继承和聚合。理想情况下,插件配置只放在父 POM 中。

该项目由 100 多个 jar 组成。已经有一个包含整个库并导出所有包的巨型包。我的努力旨在使库更加模块化,这是首先将它们作为 OSGi 捆绑包的主要原因。

主要问题是这个库有一个拆分包的噩梦,我无法更改包结构。我正在尝试使用Require-Bundle 解决问题,正如OSGi in Action 一书中所推荐的那样,尽管书中提到这不是一个好习惯。我尝试了在Import-Package 中使用名为“split”的任意属性来分隔包的各个部分并仅导入某些包的建议。但由于提供相同包的捆绑包数量众多,因此配置起来过于复杂。

我的问题是如何配置 maven-bundle-plugin <Require-Bundle> 指令,如果可能的话,使用通配符(例如 *)作为告诉它使用所有 Maven 依赖项的一种形式,而不是不必手动列出所有捆绑包名称和版本;即是否有替代方法:

<Require-Bundle>lib-api; version=${project.version}</Require-Bundle>

使用某种通配符匹配并且可以放在父 POM 中?

【问题讨论】:

  • 这样做的问题——如果确实可能的话——是你假设你的运行时依赖与你的构建时依赖相同。通常情况并非如此。
  • 是的。事实上,我假设所有要插入 &lt;Require-Bundle&gt; 的包都是构建时可用的 Maven 依赖项
  • 为什么不将这些库合并到一个包中?
  • @PeterKriens 该库已经有一大包了。我的努力是为了将它们分开。我会更新问题,详细说明为什么会出现这个问题。

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


【解决方案1】:

简而言之,没有。 bnd 不支持 Require-Bundle,它把它当作一个普通的 header。

【讨论】:

    猜你喜欢
    • 2015-02-20
    • 2018-05-24
    • 2013-02-10
    • 2011-06-18
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 2017-01-02
    相关资源
    最近更新 更多