首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令行使用p2查询语言查找p2存储库中的单元

命令行使用p2查询语言查找p2存储库中的单元
EN

Stack Overflow用户
提问于 2013-08-06 14:16:31
回答 2查看 1.3K关注 0票数 3

p2有一个允许在p2存储库的内容上运行查询的查询语言。然而,文档中的所有示例都假设查询语言是在Java内部使用的。

代码语言:javascript
复制
IQuery<IInstallableUnit> q = QueryUtil.createMatchQuery("this.id == $0", id);
metadataRepository.query(q);

如何从命令行执行查询(不编写自己的Java应用程序)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-06 14:16:31

p2董事应用程序可以选择列出或查询给定p2存储库的内容。使用-list,您可以获得所有单元,而使用-list Q:<p2 QL collection query>,您可以查询一个子集。

表达式需要是集合查询,因此,您需要使用等效的集合查询,而不是上面给出的示例中的匹配查询。另外,像$1这样的占位符必须被实际值替换。

示例:在Juno发布的列车存储库中查找所有org.eclipse.sdk.ide单元的命令行为

代码语言:javascript
复制
eclipse -application org.eclipse.equinox.p2.director \
   -repository http://download.eclipse.org/releases/juno \
   -list 'Q:everything.select(x | x.id == "org.eclipse.sdk.ide")'

作为一个更有用的示例,您可以使用此命令查找p2用户界面中显示在类别中的所有单元(尽管我不会尝试大型存储库,但查询似乎相当缓慢):

代码语言:javascript
复制
eclipse -application org.eclipse.equinox.p2.director \
   -repository <URL of some small repository> \
   -list 'Q:everything.select(y | everything.select(x | x.properties ~= filter("(org.eclipse.equinox.p2.type.category=true)")).collect(x | x.requirements).flatten().exists(r | y ~= r))'
票数 4
EN

Stack Overflow用户

发布于 2014-03-31 08:19:42

Ian编写的p2diff工具值得一提。他的文章概述了p2 API,并介绍了使用p2 API应该理解的一些关键概念。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18082719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档