当前位置: 首页 > 知识库问答 >
问题:

在OSGI中管理传递依赖关系?

姬向明
2023-03-14

我正在尝试构建一个简单的REST服务来学习OSGI。我正在使用Spark Servlet来处理请求。

我将 spark core 作为依赖项嵌入,在 maven 中构建了我的项目,并在部署时在 Karaf 中出现了布线包错误。

看起来我一个接一个地跟踪程序包,一个一个地解决每个错误,仅仅解决依赖关系就需要大约2个小时。显然我做错了什么。。

我应该如何执行此操作,以便使用 spark servlet?

共有1个答案

松烨烨
2023-03-14

OSGi的主要思想是创建可重用的模块。大量传递依赖关系表明有人没有收到消息。

如果你发现自己处于这种境地,那么这表明你陷入了困境。现在,很多人显然生活在这种混乱中,因为他们忘记了一个更好的世界,在这个世界里,你可以得到重复利用,事情可以开箱即用。

一个简单的规则是,在应用程序部分(应该非常小),你可以使用任何你想要的东西,因为它永远不会被重用。然而,我会尽我所能限制具有可传递依赖关系的库的依赖关系,因为,依我看,从长远来看,它们总是比它们在短期内带来的问题更多。

将OSGi与大型传递依赖项一起使用会花费大量资金,但不会获得任何好处。

 类似资料:
  • null null 尝试强制升级的错误日志:“无法解析配置”:reading-condermination-server-quarkus-impl:TestCompileClasspath“的所有文件。 无法解析JUnit:JUnit:4.13。要求方:project:reading-concermination-server-quarkus-impl>找不到满足版本约束的“junit:junit

  • 我是OSGI新手(抱歉),在尝试部署我的包和相关依赖项时遇到了一些问题。 这是我的POM: 然后我使用Maven命令捆绑它: mvn org . Apache . Felix:maven-bundle-plugin:bundle all 这是成功的,并生成我的包以及3个依赖包: net.sf.ehcache_2.10.0.jar org.apache.commons.lang3_3.4.0.jar

  • 我正在使用Gradle的Spring Boot框架。我知道,为了包含一些Spring依赖项,我可以引用“starters”而不显式定义版本;该版本将由我选择的Spring Boot版本控制,它是Spring Boot Gradle插件的版本。示例(省略非相关的分级代码): 请注意,没有为我的应用程序依赖项定义显式版本。 我如何确保我为那些依赖项使用的版本与我的其他Spring Boot依赖项兼容?

  • 我正在从一个使用Android-Maven-Plugin的Maven项目中构建一个Android应用程序。在这个项目中,我使用了新的beta版数据绑定库。 它包含在Android SDK的本地m2repository中(extras/Android/m2repository)。这个存储库中的库打包为AAR类型。 附注:对于我自己的本地构建,我有几个解决方案(例如重新打包为jar),但我更喜欢一个更

  • 在应用中,您希望使用不同的类来处理不同的任务以保持代码的简洁。我们把这些类称为 依赖。如何将这些依赖关系传递给将在后台任务调用的方法呢? 当您在后台任务中调用静态方法时,仅限于应用程序的静态上下文,这需要您使用以下获取依赖关系的模式: 通过 new 手动实例化依赖 服务定位器模式 抽象工厂模式 或 建设者模式 单例模式 然而,所有这些模式使您的应用程序的单元可测试性方面变得非常复杂。为了解决这个问

  • Maven的核心功能之一是依赖管理。 一旦我们处理多模块项目(由数百个模块/子项目组成),管理依赖项是一项艰巨的任务。 Maven提供高度的控制来管理这些场景。 传递依赖发现 通常情况下,当一个库(比如A)依赖于其他库时,比如说B.如果另一个项目C想要使用A,那么该项目也需要使用库B. Maven有助于避免此类要求发现所需的所有库。 Maven通过读取依赖项的项目文件(pom.xml),找出它们的