gpt4 book ai didi

java - 使用 OSGi 进行依赖管理

转载 作者:行者123 更新时间:2023-12-02 08:47:53 24 4
gpt4 key购买 nike

我想根据OSGi规范开发一个多模块应用程序。假设我的一个模块使用 Apache Commons Logging 1.1.1。 Spring 在其存储库中提供了 Apache Commons Logging 1.1.1 的捆绑版本,因此我可以在 POM 中添加相应的依赖项。

例如,如果我在 Apache Felix 中安装我的 bundle ,那么在我安装该 bundle 之前,对 Apache Commons Logging 1.1.1 的依赖关系不会得到解决吗? Apache Commons Logging 1.1.1 也是如此吗?我的包将尝试导入尚未导出的包。

我不太明白依赖管理在 OSGi 世界中是如何工作的。我应该安装我的应用程序需要的每个包吗?另外,我不明白它是如何与Maven集成的?

提前感谢您的解释

<小时/>

编辑:我看到 Apache Felix 有一个名为 OBR 的子项目,它似乎有助于 bundle 管理(例如部署)。但是,我们已经有了一个带有本地存储库、私有(private)存储库的 Maven 架构……OBR 如何集成到 Maven?

最佳答案

如果你想将 OSGi 与 maven 一起使用,那么我推荐 Apache Karaf 作为可以使用 Felix OSGi 框架的服务器。优点是您可以使用 mvn: url 直接从 Maven 存储库安装 bundle 。

如果您仅将 Apache Karaf 与 Maven 存储库一起使用,那么您在运行时没有传递解析。您必须安装所需的所有 bundle 。有很大帮助的是 karaf 有特征的概念。因此,您可以将这些功能用作粗粒度的构建 block 。您还可以在引用其他功能和 bundle 的情况下创建自己的功能。这允许使用一个命令安装整个应用程序。

Felix 和 Karaf 也支持 OBR,但您必须创建自己的 OBR 存储库。目前没有公共(public) OBR 存储库。 OBR的优点是可以解决大部分传递依赖。 Karaf 功能甚至可以与 OBR 一起使用,因此您只需在功能中列出一些顶级 bundle ,然后让 OBR 解决其余的问题。

在实践中,我在没有 OBR 的情况下使用简单的 Karaf 功能有很好的经验。这是一些手工工作,但比你想象的要少,而且效果很好。

关于java - 使用 OSGi 进行依赖管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11435840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com