我有很多不同的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,然后需要注册表等。很难确切地了解需要什么,以及很多东西是春分内部的,所以这似乎也不是可行的方法。

是否有许多与春分有关的捆绑包提供“简便”的网关来执行此操作?

最佳答案

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

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

关于java - 如何以编程方式查询p2存储库中的信息和工件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54445118/

10-10 04:16