我有很多不同的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.bndlib
和biz.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/