Osgi Karaf Cave vs org.apache.felix.bundlerepository

Osgi Karaf Cave vs org.apache.felix.bundlerepository,osgi,apache-felix,apache-karaf,obr,Osgi,Apache Felix,Apache Karaf,Obr,你好 我试图在我的应用程序中获得OBR的好处。我将Karaf Cave(4.0.0)作为OBR实现,将org.apache.felix.bundlerepository(2.0.4)作为OBR客户端。我成功地配置了存储库本身,但无法正确使用它。 问题是:当我通过OBR安装bundle,并且它的所有依赖项都已经安装在OSGI运行时中时,它安装成功了。但是如果缺少一些需求,我会得到一个“未满足的需求”错误,这很奇怪,因为我确信解决这些需求的所有资源都存在于OBR描述符中,并且指向它们的所有链接都是有

你好

我试图在我的应用程序中获得OBR的好处。我将Karaf Cave(4.0.0)作为OBR实现,将org.apache.felix.bundlerepository(2.0.4)作为OBR客户端。我成功地配置了存储库本身,但无法正确使用它。 问题是:当我通过OBR安装bundle,并且它的所有依赖项都已经安装在OSGI运行时中时,它安装成功了。但是如果缺少一些需求,我会得到一个“未满足的需求”错误,这很奇怪,因为我确信解决这些需求的所有资源都存在于OBR描述符中,并且指向它们的所有链接都是有效的

为什么它们不能自动解决?如何配置OBR客户端以使用Karaf Cave

我还尝试了Sonatype Nexus的OBR实现(OBR插件),发现Cave生成的OBR描述符与Nexus生成的OBR描述符不同。此外:

  • Cave生成的是符合OSGI概要规范的
  • Nexus生成的一个不是,但在org.apache.felix.bundlerepository中像一个符咒一样工作——这个问题不会重现
我完全糊涂了

重现问题的步骤顺序(在Apache Karaf 4.0.0上重现):

1) 安装卡拉夫洞穴:

feature:repo-add cave
feature:install cave-server cave-http
2) 创建洞穴存储库:

cave:create-repository test
cave:proxy-repository test file:///path/to/some/local/maven/repo
  • 在这一步中,我能够成功地从中检索OBR描述符
3) 安装OBR客户端并从Karaf注册“测试”cave存储库:

feature:install obr
obr:url-add http://localhost:8181/cave/http/test-repository.xml

4) 尝试使用OBR:deploy部署一些OBR资源

我在安装vanilla Felix 5.4时也遇到同样的问题。尝试
obr:deploy
来自我的回购的捆绑将失败,并且
未满足要求
,除非我首先部署其位于同一回购中的依赖项。My repo还使用OSGi存储库规范格式,而不是专有的Felix OBR格式。