【问题标题】:Make sure bundles use same dependencies versions确保包使用相同的依赖版本
【发布时间】:2015-08-07 11:58:47
【问题描述】:

我正在寻找一种方法来确保我在 Karaf 中部署的所有功能都需要具有相同版本的依赖项。该项目由 40 多个捆绑包组成,难以手动验证。

我正在考虑开发一个 Maven 插件来进行检查,但在此之前我想确定这样的解决方案还不存在。

【问题讨论】:

    标签: maven osgi karaf


    【解决方案1】:

    如果您想确保使用相同的版本,请创建一个父项目并仅在那里定义依赖项的版本。因此,您可以确保所有模块都具有相同的依赖关系。当然,这只有在所有这些模块都非常密切相关(例如属于同一个应用程序/发布单元)时才有意义。

    【讨论】:

    • 不,它们不是 :) 这就是为什么我要寻找更复杂的系统
    • 如果它们不是密切相关的,那么你不应该强制它们需要相同的依赖关系。它会在组件之间产生紧密的耦合,这会让你很头疼。而是使用 OSGi 提供的灵活性并使用导入范围。顺便提一句。 Karaf 还允许导入可能有帮助的功能范围。
    【解决方案2】:

    您为什么要这样做?每个包应该依赖于它需要的包的版本,并且依赖应该是一个范围。因此,如果您针对 API 包版本 1.0.0 进行编译,并且您是该 API 的使用者,那么您应该使用范围 [1.0.0, 2.0.0) 导入。有关详细信息,请参阅 OSGi Core Release 5 规范的第 3.7.3 节(“语义版本控制”)。

    在运行时,OSGi 框架将确保您的包连接到其允许范围内的包版本。显然,如果您有来自不同导入器的非重叠版本范围,那么框架将无法通过单个导出器满足它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 2014-11-17
      • 1970-01-01
      相关资源
      最近更新 更多