如果您启动 p2 控制台,您可以使用 p2 查询语言来查找依赖于包的所有功能。我的例子是在 Eclipse Juno (4.2) 中:
- 在控制台视图中切换到 OSGi 控制台
- ss p2.console # 查找控制台捆绑包号
- felix:start -t consoleBundleNumber
现在您可以发出 p2 查询。要查找当前安装中的哪些功能包含org.eclipse.jface,您可以使用:
osgi> provlpquery this "select(parent | parent.properties['org.eclipse.equinox.p2.type.group'] == true && parent.requirements.exists(rc | everything.exists(iu | iu.id == 'org.eclipse.jface' && iu ~= rc)))" true
org.eclipse.e4.rcp.feature.group 1.1.0.v20120521-2329-8yFTIGF3GGduEYqkQB9M3DKn
org.eclipse.e4.tools.css.spy.feature.feature.group 0.12.0.v20111206-1509-17B-7w3123161302752
要找出包含org.eclipse.ui.views.properties.tabbed的功能,您可以使用:
osgi> provlquery http://download.eclipse.org/releases/juno "select(parent | parent.properties['org.eclipse.equinox.p2.type.group'] == true && parent.requirements.exists(rc | everything.exists(iu | iu.id == 'org.eclipse.ui.views.properties.tabbed' && iu ~= rc)))" true
org.eclipse.amp.amf.feature.group 0.9.0.v20120528-0244
org.eclipse.bpel.feature.feature.group 1.0.1.v20120606-0845-CI
org.eclipse.jwt.feature.feature.group 1.2.0.v201205310546-7O7i-FK_Qj4QkVn3kW9q
org.eclipse.platform.feature.group 4.2.0.v20120528-1648-9JF7BHV8FyMteji0MoOeOuU6sAnxIeYtKNM1dK
org.eclipse.ptp.etfw.tau.feature.group 6.0.0.201206052145
org.eclipse.tcf.te.feature.feature.group 1.0.0.201206051725
org.eclipse.tcf.te.tcf.feature.feature.group 1.0.0.201206051725
在这种情况下,org.eclipse.platform.feature.group是最正确的。
第一个示例是在运行的 eclipse 中查询配置文件,因此它使用provlpquery this。第二个示例是指定一个外部 p2 存储库,因此它使用provlquery repo。
有关 p2 控制台的更多信息,请参阅http://wiki.eclipse.org/Equinox_p2_Console_Users_Guide。有很多黑魔法在发生:-)