再会。
我试图在我的应用程序中获得 OBR 的好处。我将 Karaf Cave (4.0.0) 作为 OBR 实现,将 org.apache.felix.bundlerepository (2.0.4) 作为 OBR 客户端。我成功地配置了存储库本身,但我无法正确使用它。问题是:当我通过 OBR 安装包并且它的所有依赖项都已经安装在 OSGI 运行时中时,它安装成功。但是,如果缺少某些要求,我会收到“未满足的要求”错误,这很奇怪,因为我确信解决这些要求的所有资源都存在于 OBR 描述符中,并且指向它们的所有链接都是有效的。
为什么不能自动解决?如何配置 OBR 客户端以使用 Karaf Cave?
我还尝试了 Sonatype Nexus(OBR 插件)的 OBR 实现,发现 Cave 生成的 OBR 描述符和 Nexus 生成的描述符不同。而且:
- 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
3) 安装 OBR 客户端并从 Karaf 注册“测试”洞穴存储库:
feature:install obr
obr:url-add http://localhost:8181/cave/http/test-repository.xml
4) 尝试使用 obr:deploy 部署一些 OBR 资源