如何在 Eclipse 下载网站上找到包含所需插件的功能特性

31
当开发针对目标平台的RCP应用程序时,我(和其他人)经常遇到需要从Eclipse发布软件站点添加依赖项的情况。每当一个插件包含在我的IDE中,但不在我的目标平台中,并且我尝试从产品定义运行应用程序时,我会得到一个警告屏幕,通知我无法解析这样或那样的捆绑包。

“没问题,只需从Eclipse下载站点添加包含插件的功能到目标平台,并将所需的插件添加到插件项目/功能项目中等等....”

但是,据我所知,没有简单的方法(例如网站)可以找出哪个功能包含哪个插件。例如,为了添加org.eclipse.ui.views.properties.tabbed,我需要知道该插件包含在Eclipse Platform SDK功能中(以及其他功能)。

迄今为止,我还没有找到一种简单的方法来确定哪个功能包含哪个插件。通常我会从谷歌插件名称开始搜索,尝试在搜索结果中找到教程或类似内容,这可能会告诉我需要包含哪个功能才能获得插件。当然,这可能很繁琐。
所以我的问题是:有更好的、甚至是官方(或者官方)的方式来快速简单地找到这些信息吗?
5个回答

25
如果您启动p2控制台,可以使用p2查询语言查找所有依赖于某个bundle的功能。我的例子在Eclipse Juno(4.2)中:
  1. 切换到控制台视图中的OSGi控制台
  2. ss p2.console#查找控制台包号
  3. 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。这里有很多黑科技正在运作 :-)

有没有一种方法可以搜索功能?请参见以下问题:http://stackoverflow.com/questions/22152086/how-to-search-for-a-feature-in-eclipse - Roland

4

还有一个GUI工具可以回答这个问题,p2browser:

  • 添加相关的P2存储库
  • 按IU、能力或(Java)包进行过滤
  • 右键单击相关的IU并选择“包括功能在内打开”

该工具还可用于搜索提供特定Java包的插件/捆绑包。


3
尽管我开发了相当多的RCP应用程序,但我还没有找到一个方便的解决方案来解决这个问题。一个很好的插件来源是Eclipse IDE本身。要查找依赖项,我发现在“插件清单编辑器”中的“依赖项分析”功能非常有用。此外,人们可以通过“产品配置编辑器”右上角的“验证...”按钮验证产品配置。如果缺少插件,则会列出它们作为结果。
到目前为止,我尚未尝试过的一种可能性是通过指定一个或多个软件站点来定义“目标平台”,而不是依靠本地下载的功能和插件。
当然,这不是你要寻找的答案,但在我看来,这个问题没有真正的解决方案。只有工具和车辆(部分在上面描述)有助于在构建RCP应用程序的“目标平台”时减轻痛苦。

1

在经过大量谷歌搜索和查看以上答案后,我做了以下操作:

  1. 在Eclipse中创建一个新的通用项目。
  2. 将功能文件夹作为链接文件夹添加到此项目中。
  3. 在该项目中搜索所有使用我的插件名称的feature.xml文件。

希望这也能对其他人有所帮助。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接