如何在Eclipse下载站点上找出哪个功能包含所需的插件

时间:2012-04-05 08:58:30

标签: eclipse plugins eclipse-rcp update-site target-platform

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

“没问题,只需将包含插件的功能从Eclipse下载站点添加到目标平台,然后将所需的插件添加到插件项目/功能项目中,那是什么......” / p>

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

到目前为止,我还没有找到一种简单的方法来找出哪个功能包含哪个插件。我通常开始使用Google搜索插件名称,并尝试在搜索结果中查找教程或类似内容,这可能会告诉我要包含哪些功能才能访问插件。当然,这可能是单调乏味的。

所以我的问题是:是否有更好的,甚至是官方的(或行政的)方式来快速简单地找到这些信息?

5 个答案:

答案 0 :(得分:22)

如果启动p2控制台,则可以使用p2查询语言查找依赖于捆绑包的所有功能。我的例子是Eclipse Juno(4.2):

  1. 在控制台视图中切换到OSGi控制台
  2. ss p2.console#查找控制台包号
  3. felix:start -t consoleBundleNumber
  4. 现在您可以发出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。有很多黑魔法在进行: - )

答案 1 :(得分:3)

还有一个GUI实用程序可以回答这个问题,p2browser

  • 添加相关的P2存储库
  • 按IU,功能或(Java)包过滤
  • 右键单击相关的IU,然后选择“打开包含功能”

该实用程序对于搜索提供特定Java包的插件/包也很有用。

答案 2 :(得分:2)

虽然开发了很多RCP应用程序,但我没有遇到过这个问题的方便解决方案。一个很好的插件源是Eclipse IDE本身。为了找出依赖关系,我发现插件清单编辑器中的依赖关系分析功能非常有帮助。此外,可以通过产品配置编辑器右上角的验证... 按钮验证 产品配置 。如果缺少插件,则会将其列为结果。

我迄今未尝试过的一个可能性是通过指定一个或多个软件站点来定义目标平台,而不是依赖于本地下载的功能和插件。

肯定这不是你要找的答案,但imho对这个问题没有真正的解决方案。在构建RCP应用程序的目标平台时,只有工具和工具(部分描述)有助于减轻痛苦。

答案 3 :(得分:1)

基本理念:获取所有功能的定义,然后搜索它。

更详细的描述: http://divby0.blogspot.com/2010/10/howto-find-feature-that-contains-plugin.html

看起来不是一个有效的解决方案,但仍然是它。

答案 4 :(得分:1)

好了很多谷歌及以上的答案后,我确实关注

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

    我希望这对其他人也有帮助

相关问题