【问题标题】:What does Apache Cave solveApache Cave 解决了什么问题
【发布时间】:2017-08-26 05:50:18
【问题描述】:

我目前使用 karaf 和 artifactory 作为我的 osgi jar 存储库。这很好用。我遇到了用于 Karaf 的 Apache Cave 工具,它看起来非常像一个存储库,除了它也可以存储在数据库或其他数据源中而不是文件系统中。

这提供了什么价值。使用 Cave 可以解决哪些用例

【问题讨论】:

    标签: osgi apache-karaf karaf obr


    【解决方案1】:

    免责声明:我不参与 OSGi 规范或 Apache Cave 的开发。以下所有内容仅是我根据个人经验得出的结论。

    Apache Cave 是 OSGi 存储库规范的参考实现。后者又解决了 OSGi 包供应的问题。它应该以下列方式工作:它提供了一个存储库描述符,它定义了一组资源(通常是捆绑包)、它们提供的功能以及它们需要的要求。此元信息用于在您部署某些资源时自动提供依赖项。

    详细信息在规范 https://osgi.org/download/r6/osgi.cmpn-6.0.0.pdf 第 132 节中进行了解释。

    对我来说,围绕 OSGi 存储库的情况似乎很阴暗。 Apache Cave 是 OSGi 存储库的提供者,但我没有找到任何合适的客户端。我的问题Karaf Cave vs org.apache.felix.bundlerepository 仍未得到解答。

    有几种选择。 Apache Felix 有自己的实现(org.apache.felix.bundlerepository),在概念上非常相似,但与规范不完全兼容(信息可能已过时,需要检查)。 Karaf 使用 Features 工具解决了同样的问题。

    【讨论】:

    【解决方案2】:

    这提供了什么价值?使用 Cave 可以解决哪些用例?

    Cave 用于存储Repositories,其中包含有关捆绑包(或一般工件)的重要信息(例如位置、版本、要求、功能...)。它是解决过程中的三个重要部分之一。另外两个是ResolverResolve Context

    Resolver 是您可能从 OSGi 运行时知道的。它会告诉您是否满足捆绑包的要求(因此可以启动它)。为此,它与Resolve Context 交谈以了解可用的、预期的、可选的等。Resolve Context 将依次咨询一个或多个Repositories 以了解可用的捆绑包.很多时候,这些只是安装在您的运行时中的捆绑包。但是,可以有一个运行时使用 Repository 来引用可以在 Resolver 确定需要时安装的外部工件。

    在构建时可以使用大致相同的概念。例如Bnd 项目允许您定义.bndrun 文件,这些文件是Resolve Context 的基于属性的版本。您可以在其中提供的其中一项内容是Repositories,其中包含有关可用捆绑包的信息。此类存储库可以由Cave(或其他任何东西,包括本地 XML 文件) 提供服务。基于该信息Bnd 可以为您组装一个运行时(根据您想要运行的包告诉您需要哪些包)。

    此外,Cave 可以充当 Maven 存储库或代理到其他 Maven 存储库。这很方便,因为您可以使用 Cave 作为 Resolver 和传统 Maven 依赖项的“单一联系点”。

    【讨论】:

      猜你喜欢
      • 2015-07-24
      • 1970-01-01
      • 2014-06-21
      • 2010-09-21
      • 1970-01-01
      • 2011-04-06
      • 2019-12-29
      • 2011-01-21
      • 1970-01-01
      相关资源
      最近更新 更多