【发布时间】: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 中?
【问题讨论】:
-
这样做的问题——如果确实可能的话——是你假设你的运行时依赖与你的构建时依赖相同。通常情况并非如此。
-
是的。事实上,我假设所有要插入
<Require-Bundle>的包都是构建时可用的 Maven 依赖项 -
为什么不将这些库合并到一个包中?
-
@PeterKriens 该库已经有一大包了。我的努力是为了将它们分开。我会更新问题,详细说明为什么会出现这个问题。
标签: java maven osgi apache-felix maven-bundle-plugin