问题标签 [obr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
osgi - 通过 OBR 部署同一捆绑包的 2 个版本
我们在 Apache Karaf 中使用 Apache Felix OSGi Bundle Repository v1.6.4。我们正在以编程方式尝试使用 obr mean 部署一个包(比如 demo-bundle-2.0.0.jar)。然而,另一个版本的演示包 (1.0.0) 已经存在。我们要求捆绑包的两个版本应该共存。但是,当安装 2.0.0 时,obr 会覆盖 v1.0.0。
我的问题:这是预期的行为吗?是否有任何解决方法可以使捆绑包的两个版本都可用?
osgi - 如何在 OBR 存储库的“资源”元素中获取额外属性?
我们尝试让Apache Felix Web Console OBR 插件与当前BND Tools / Bindex生成的 OBR 存储库一起工作。
问题是生成的存储库(例如,使用来自 Eclipse 的“Release Bundles”生成的存储库)无法被 Felix Web 插件读取。
相反,插件可以正确理解Felix 自己的 OBR 存储库,因为它似乎在“resource”元素中具有其他属性,而我们的存储库中缺少这些属性:
http://www.osgi.org/download/rfc-0112_BundleRepository.pdf中的模式规范为“资源”XML 元素中的属性留出了空间,但是它们被定义为 Java API 的一部分。
这个 gitHub 叉子似乎可以完成这项工作https://github.com/rkrzewski/bindex但有人知道这是什么状态吗?有朝一日这会被整合到 Bindex 中吗?更新:这是 Rafał 的答案,这个分叉的所有者https://github.com/rkrzewski/bindex/issues/3#issuecomment-27784279 所以,我在 bndtools-users 谷歌组上重新提问:https://groups。 google.com/forum/#!topic/bndtools-users/ZdY0ASnLNmc
或者有没有其他方法可以使用缺少的资源属性生成 OBR 存储库?谢谢。
osgi - Apache Felix 中 OBR 解析期间的 OSGI Bundle Repository (OBR) 功能冲突
我正在调查在 Felix 中使用 OBR 作为大型应用程序的部署选项,但遇到了一些初始障碍。
采取的方法
- 我创建了一个带有 manifest.mf 的新 jar,其中列出了“Require-Bundle:”部分中的每个应用程序依赖项(基本上是手动部署中的所有内容),一直到第三方库。我的意图是首先声明所有内容,然后将其配对并通过 OBR 解析第三方捆绑包
使用 maven-bundle-plugin 将我的本地 .m2 存储库索引为 OBR
/li>启动 Apache Felix 并添加 OBR 存储库
/li>尝试部署包含整个应用程序包依赖项列表的 jar
/li>
问题
由于使用了 Spring 的依赖注入,javax.inject 上的某些包中有包要求。但是,在 OBR 中,有不止一个捆绑包宣传 javax.inject 的功能。它在 Spring 捆绑包和 Google Guice 捆绑包中都可用。不幸的是,OBR 解析器似乎选择了阻止我的应用程序启动的 Guice 实现。
解决方法
如果我从 OBR 索引中删除 Guice 库,则 OBR 解析器永远不会找到它,因此使用 Spring 实现,并且应用程序启动没有问题。
问题
- 我列出了高级应用程序 jar 中的所有依赖项,包括包含 Spring 的 javax.inject 实现的依赖项。为什么当我明确告诉 Felix 的 OBR 解析器部署一个已经提供它的包时,它会尝试解决包需求?当我尝试以这种方式部署(使用单个捆绑包)时,OBR 解析是否以深度优先的方式发生?
- 我很好奇通常用于创建/维护第三方库的 OBR 存储库以确保没有包功能冲突的策略是什么。是否应该创建和维护较小的 OBR 存储库索引,那些仅包含应用程序依赖项且没有包能力冲突的索引?是否有可以提供帮助的 Maven 插件?
- 更广泛的社区如何通过 OBR 一次部署超过 100 个捆绑包?也许有比父捆绑解决方案更好的选择。
maven - OSGi:如何将 PuTTY scp 与 maven-bundle-plugin 一起使用
我想将我的 maven 编译的 OSGi 包部署到我的远程 OSGi 存储库。我在 Windows 7 上并使用来自 eclipse 的 maven-bundle-plugin (2.3.7)。该存储库位于 linux 上,可通过 ssh 访问。
我已配置settings.xml
为使用plink
和pscp
(Putty 工具)来完成 ssh 工作。在<distributionManagement>
我设置存储库 url 时,它以scpexe://
maven-deploy 目标工作正常,并将 jar 文件和 metadata.xml 上传到存储库。
现在我还希望生成和上传 OBR 元数据。因此,我添加了 maven-bundle-plugin 的配置<remoteOBR>my-repository</remoteOBR>
(与<distributionManagement>
.
执行部署时(在 Maven 部署阶段成功完成后),我收到错误消息。
[错误] 无法在项目引导程序上执行目标 org.apache.felix:maven-bundle-plugin:2.3.7:deploy (default-deploy):传输失败:退出代码:1 - 'scp' 未被识别为内部或外部命令、可运行程序或批处理文件。
-> [帮助 1]
这意味着 maven-bundle-plugin 不使用pscp
settings.xml 中指定的命令,而是使用路径上不可用的“scp”。
如何配置 maven-bundle-plugin 以使用 PuTTY 的 pscp 上传 OBR 数据?
maven - Maven / OSGi:部署到不是 Maven 存储库的 OBR
我的 maven 构建在本地安装工件,并且需要访问项目的远程 maven 存储库。我没有对该存储库的写入权限 - 所以我的构建(包含我的更改)到目前为止只是本地的。
当我构建时,我想将 .jar 部署到我可以控制的远程 OBR。这不是一个完整的 Maven 存储库(例如 Nexus),只是一个网络服务器。应自动生成并上传描述 OBR 的 repository.xml。
简单地调用目标“部署”将尝试上传到项目的 maven 存储库,由于我没有写访问权限而失败。
我想:
- 在本地构建和安装,根据需要获取远程 maven 存储库的所有依赖项
- 将 jar 上传到 OBR
- 生成repository.xml OBR描述并上传
我应该如何配置 maven-bundle-plugin?我必须调用哪个目标?
osgi - 未找到 OBR START 命令?
我正在尝试遵循本教程: http: //felix.apache.org/site/apache-felix-osgi-bundle-repository.html
但是,当我尝试使用 OBR START 命令时,我得到了这个:
如您所见,我的 HELP 命令列表还指出没有安装 obr:start 命令。我正在使用我刚刚从网站下载的 felix 框架 4.4.0。
我错过了什么?
谢谢!
osgi - 在 Nexus 中安装 obr 插件
我想在我的 Nexus oss 2.10.0-02 中安装 Nexus-obr-plugin GitHub 。
OBR 插件似乎没有在标准 Nexus OSS 中提供。我可以找到这个插件的 jar 版本http://mvnrepository.com/artifact/org.sonatype.nexus.plugins/nexus-obr-plugin/2.10.0-02。
我查看了 Nexus 附带的其他插件,每个插件似乎都在一个包含 jar、Manifestfile(在 META-INF 下)和所需依赖项的文件夹中。
我把罐子放在文件夹里plugin-repository/nexus-obr-plugin-2.10.0-02/nexus-obr-plugin-2.10.0-02.jar
。在依赖项文件夹中下载所需的依赖项:
并根据来自其他 Nexus 插件的其他清单文件创建了一个清单文件。有了这个,我成功地启动了 Nexus,并且插件控制台声明 OBR 插件已激活。但是“创建新的托管存储库”下没有可用的 OBR 提供程序。
有没有很好的解释如何安装 obr 插件以及在哪里可以下载具有所有依赖项和 MANIFEST 文件的插件?
maven - Gradle、OSGi 和 OBR(或其他存储库?)
以前我一直在使用 Maven 和 maven-bundle-plugin 来存档以下内容:
- 这样做时
mvn install
,本地 maven repo 会自动包含我的包 + 我的所有包的 deps - 本地 repo 成为 OBR 存储库
mvn bundle:index
,repository.xml 也会自动更新mvn install
。 - 本地仓库现在可用于 Karaf 捆绑部署
现在,我希望将一些项目迁移到 Gradle,这在很多方面都非常好。我正在使用“org.dm.bundle”插件成功创建捆绑包(基本的“osgi”插件不允许我自动创建服务组件)。
通过使用 Gradle 的 maven 插件,我可以gradle install
在本地 maven repo 中安装我自己的包。然后我可以使用bindex
手动(或通过一些 gradle hacking)索引 repo。但是,我的依赖项没有放入 maven repo,它们只存储在 gradle 缓存目录中。因此,我还不能使用 OBR 存储库在 Karaf 中进行部署。
我一直在环顾四周,试图找到一些好的解决方案,但我没有找到任何东西。
我查看了 Karaf 功能文件,它允许我直接指定 mvn URL,而不是依赖 OBR,但我想避免手动弄乱功能文件。
有使用 Nexus 的参考,但据我所知,只有 Nexus Pro 支持 OBR?
我也愿意就替代解决方案提出建议;主要目标是我将能够在 Karaf 中部署我的 bundles + deps。真的不需要使用 Maven,尽管我需要一些方法让不同的 Gradle 项目从其他一些项目(它们不属于同一个多项目)中找到依赖项。
任何让我走上正轨的想法或讨论都值得赞赏!
osgi - 卡拉夫洞穴 vs org.apache.felix.bundlerepository
再会。
我试图在我的应用程序中获得 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)安装卡拉夫洞穴:
2)创建洞穴存储库:
3) 安装 OBR 客户端并从 Karaf 注册“测试”洞穴存储库:
4) 尝试使用 obr:deploy 部署一些 OBR 资源
nexus - 基于 OSGI 的应用程序的 Nexus 或 Artifactory
我们正在开发一个基于 OSGI 的 Soa 解决方案,并且即将建立一个 maven 存储库管理器。我读到 Nexus 支持 OBR 而 Artifactory 似乎没有 - 首先,这是真的吗?其次,由于这是我的第一个 OSGI 应用程序开发,我不确定在这种情况下选择不支持 OBR 的存储库有什么缺点?
谢谢和问候, 普里亚