p2 有一个查询语言允许对 p2 存储库的内容运行查询。然而,所有的例子文档假设查询语言是在 Java 内部使用的,例如
IQuery<IInstallableUnit> q = QueryUtil.createMatchQuery("this.id == $0", id);
metadataRepository.query(q);
如何从命令行执行查询(无需编写自己的 Java 应用程序)?
The p2主任申请可以选择列出或查询给定 p2 存储库的内容。和-list
你会得到所有单位,并且-list Q:<p2 QL collection query>
您可以查询子集。
该表达式需要是集合查询,因此您需要使用等效的集合查询,而不是上面给出的示例中的匹配查询。另外,占位符如$1
必须替换为实际值。
示例:查找所有的命令行org.eclipse.sdk.ide
Juno 发布火车存储库中的单元将是
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 用户界面中类别中显示的所有单位(尽管我不会尝试大型存储库,但查询似乎相当慢):
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))'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)