【发布时间】:2019-06-24 00:01:50
【问题描述】:
我有一堆不同的 p2 存储库,我想以编程方式查询信息。他们提供什么类型的捆绑包/功能?什么类型的许可证(如果有)与捆绑包配对?我想简单地下载罐子。
换句话说,我想以编程方式查询和下载 p2 存储库中包含的任何公共信息,但我实际上不需要对这些信息执行任何与 OSGi 相关的操作。
有没有相对简单的方法来做到这一点?
我已经尝试了一些东西,但发现它们还不够:
解决方案 1:p2 导演:
我知道 p2 导向器,但是我想从非 Eclipse 应用程序中查询信息并添加 Eclipse 以通过命令行触发命令似乎有点奇怪。此外,这会将我限制在 p2 导向器的相当有限的界面(例如,我认为我不能只下载一个 jar,我可以安装它,它也会解压缩它,也许还有其他我不知道的东西的)。
解决方案 2:手动构建 OSGi 容器:
浏览 Eclipse API,我认为拥有 IArtifactRepository/IMetadataRepository 的实例就足够了(例如:https://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fequinox%2Fp2%2Frepository%2Fartifact%2Fclass-use%2FIArtifactRepository.html)。但是,获得工件似乎并非易事。如果我从头开始,使用这里分析器中提供的信息:Programmatically Start OSGi (Equinox)? 然后我必须构建和初始化 IProvisioningAgentProvider,然后是 IProvisioningEventBus,然后我需要一个注册表等。很难准确理解需要什么,并且很多东西都是Equinox-internals,所以这似乎也不是要走的路。
是否有许多与 Equinox 相关的捆绑包提供了“简单”的网关来执行此操作?
【问题讨论】:
-
非composite p2 存储库包含文件
content.jar和artifacts.jar,它们只是压缩的XML 文件并包含您正在寻找的所有存储库元数据。这能回答你的问题吗? -
@howlger 我知道,谢谢,但这意味着我必须为这些 xml 文件编写解析器,并且存储库和 xml 文件的格式似乎都尽可能标准化看,所以格式可能只是随机改变。