如何以编程方式查询p2存储库中的信息和工件?

时间:2019-01-30 16:25:50

标签: java eclipse osgi p2

我有很多不同的p2存储库,我想以编程方式查询信息。它们提供什么类型的捆绑软件/功能?捆绑在一起的是哪种类型的许可证(如果有)?我只想下载jar。

换句话说,我想以编程方式查询和下载p2存储库中包含的任何公共信息,但是我实际上不需要执行任何与OSGi相关的信息。

有相对简单的方法吗?

我已经尝试了几件事,发现它们不够用:

解决方案1:p2主管

我了解p2导演,但是我想从非Eclipse应用程序中查询信息,然后添加eclipse然后通过命令行触发命令,这似乎有点奇怪。而且,这会将我限制在p2 Director的相当有限的界面上(例如,我认为我不能只下载一个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,IPProvisioningEventBus,然后需要注册表等。很难确切地了解到底是什么。是必需的,而且很多东西是春分内部的,所以这似乎也不是可行的方法。

许多与春分有关的捆绑软件中的任何一个都提供了“简便”的途径吗?

1 个答案:

答案 0 :(得分:3)

bnd代码库具有一个可能有用的P2存储库。 bnd命令行允许您交互使用它。首先创建一个bndrun文件repo.bndrun

-standalone  true
-plugin.p2 \
    aQute.bnd.repository.p2.provider.P2Repository; \
            url="https://bndtools.jfrog.io/bndtools/update/"

然后在外壳程序的同一目录中执行以下操作:

$ bnd repo -w repo.bndrun repo list

biz.aQute.bnd.maven                      [4.2.0.201901301338-SNAPSHOT]
biz.aQute.bndlib                         [4.2.0.201901301338-SNAPSHOT]
biz.aQute.repository                     [4.2.0.201901301338-SNAPSHOT]
biz.aQute.resolve                        [4.2.0.201901301338-SNAPSHOT]
...
org.bndtools.templating.gitrepo          [4.2.0.201901301338-SNAPSHOT]
org.bndtools.versioncontrol.ignores.manager [4.2.0.201901301338-SNAPSHOT]
org.bndtools.versioncontrol.ignores.plugin.git [4.2.0.201901301338-SNAPSHOT]
org.slf4j.api                            [1.7.2.v20121108-1250]

这将显示p2存储库中可用的bsns和版本的列表。您 也可以从中为OBR生成OSGi XML索引:

bnd repo -w repo.bndrun index 

此索引非常易于解析,并具有OSGi标准化格式。

如果需要工件的版本:

$ bnd repo -w repo.bndrun versions bndtools.api
[4.2.0.201901301338-SNAPSHOT]

您还可以从中获取工件:

$ bnd repo -w repo.bndrun get bndtools.api
$ ls -1
bndtools.api-4.2.0.201901301338-SNAPSHOT.jar
repo.bndrun

如果您包含Maven Central中的biz.aQute.bndlibbiz.aQute.bnd.repository,那么您还可以使用代码中的P2存储库。

您可以从brew for MacOS安装最新的bnd。在其他操作系统上,您 可以从组biz.aQute.bnd中的Maven Central下载biz.aQute.bnd JAR。

https://repo1.maven.org/maven2/biz/aQute/bnd/biz.aQute.bnd/4.1.0/biz.aQute.bnd-4.1.0.jar

[我是这个项目的提交者]