我想根据OSGi
规范开发一个多模块应用程序。假设我的模块之一使用ojit_code。 Spring在其存储库中提供了捆绑的Apache Commons Logging 1.1.1
版本,因此我可以在POM中添加相应的依赖项。
例如,如果将捆绑软件安装在Apache Commons Logging 1.1.1
中,那么在我也安装Apache Felix
捆绑软件之前,对Apache Commons Logging 1.1.1
的依赖关系不会解决吗?我的捆绑包将尝试导入尚未导出的软件包。
我不太了解Apache Commons Logging 1.1.1
世界中的依赖管理如何工作。我应该安装应用程序需要的每个捆绑软件吗?另外,我不明白它如何与Maven集成?
预先感谢您的解释
编辑:我已经看到Apache Felix的一个名为OBR的子项目,该子项目似乎有助于捆绑管理(例如部署)。但是,我们已经有了一个带有本地存储库,私有存储库的Maven架构... OBR如何集成到Maven?
最佳答案
如果要将OSGi与maven一起使用,那么我建议将Apache Karaf用作可以使用Felix OSGi框架的服务器。好处是您可以使用mvn:urls从maven存储库直接安装捆绑软件。
如果仅将Apache Karaf与Maven存储库一起使用,则在运行时将没有传递解析。您必须安装所需的所有捆绑软件。很有帮助的是,karaf具有功能的概念。因此,您可以将这些功能用作粗粒度的构建基块。您还可以在引用其他功能和包的地方创建自己的功能。这样一来,您就可以安装整个应用程序。
Felix和Karaf也支持OBR,但您必须创建自己的OBR Repo。当前没有公共OBR仓库。 OBR的优点是它可以解决大多数传递依赖项。 Karaf功能甚至可以与OBR一起使用,因此您只需在功能中列出一些顶级捆绑包,然后让OBR解决其余问题。
在实践中,我对不带OBR的简单Karaf功能有很好的经验。这是一些手工工作,但是比您预期的要少,并且效果很好。