Eclipse 插件-功能-更新站点

Eclipse 插件-功能-更新站点,eclipse,plugins,update-site,Eclipse,Plugins,Update Site,我有几个插件,并想创建一个很好的更新网站,以提供他们。其中一些只包含核心功能(不做任何事情,我们称之为核心插件),而另一些则为最终用户提供一些功能(它们依赖于核心插件,我们称之为useme插件)。 现在,我已经为每个useme插件创建了功能。我包括了相应的插件并设置了所有依赖项(核心插件)。 这些功能,我已经添加到一个更新站点。 当我现在尝试安装它们时,我收到了关于缺少核心插件的投诉: Cannot complete the install because one or more req

我有几个插件,并想创建一个很好的更新网站,以提供他们。其中一些只包含核心功能(不做任何事情,我们称之为核心插件),而另一些则为最终用户提供一些功能(它们依赖于核心插件,我们称之为useme插件)。 现在,我已经为每个useme插件创建了功能。我包括了相应的插件并设置了所有依赖项(核心插件)。 这些功能,我已经添加到一个更新站点。 当我现在尝试安装它们时,我收到了关于缺少核心插件的投诉:

    Cannot complete the install because one or more required items could not be found.
  Software being installed: Useme-plugin 1.1.0.201108090928 (de.xxx.feature.feature.group 1.1.0.201108090928)
  Missing requirement: Useme-plugin 1.1.0.201108090928 (de.xxx.feature.feature.group 1.1.0.201108090928) requires 'de.xxx.coreplugin 1.1.0' but it could not be found

我做错什么了吗?我不想在每个useme功能中都包含核心插件。。。还是我必须这么做?有人能帮我正确地构造它吗?

功能是对应该作为单个单元安装在目标系统上的组相关插件的补充。因此,对于一个非平凡的应用程序,您通常有许多功能:

  • 应用程序的基本功能的主要特性
  • 可选外接程序功能的许多功能
  • 具有核心功能的许多功能
  • 第三方插件主要集合的许多功能
两个或多个功能可以包含相同的插件-该插件仍然只存在于目标系统上的一个实例中。在特殊情况下,目标系统上甚至可以存在同一插件的多个不同版本。在其他情况下,如果不同的功能依赖于同一插件的不同版本,则存在必须由开发人员解决的冲突

功能还可以包括或依赖于其他功能,在这种情况下,依赖的功能也必须安装在目标系统上。因此,主要应用程序功能取决于所需的核心功能和第三方功能,第三方功能也是如此。依赖特性的安装通常在p2中自动进行。p2足够智能,在安装或更新时只下载所需的插件

在运行时,特定插件如何在目标系统上结束并不重要,这在您的情况下提供了许多选项

在将插件划分为特征时,必须首先考虑目标系统上的所需应用程序和所需的外接程序。只有当您有多个应用程序或外接程序,并且每个应用程序或外接程序都使用一个子集的核心插件或第三个插件时,才会变得非常困难

您还没有编写过是单个应用程序还是多个应用程序,因此我假设您只有一个应用程序—将此想法扩展到共享一组公共插件的多个应用程序相当容易

你可以用几种不同的方法解决这个问题。绝对最简单的解决方案是创建一个单一的应用程序功能,并在其中包含UI、核心和第三方插件——或多或少如您所建议。如果您只有一个产品,并且不希望在其他设置中使用核心插件,那么这种方法就可以了

通常,您将功能划分为核心功能和UI功能。通常是因为UI功能被划分为不同的功能,以允许最终用户仅安装所需的功能

因此,在您的情况下,您还可以有两个特性:核心特性和应用程序特性,这取决于核心特性

或者你可以

  • 核心特征
  • UI功能特性-取决于核心特性
  • RCP特性(来自Eclipse)
  • 以及依赖于所有其他功能的主要应用程序功能

有很多方法可以做到这一点……

非常感谢您的详细回答。这对我帮助很大,今天早上的第一次测试已经很好地工作了:-)剩下的问题:我是否必须将核心功能添加到更新站点(如果其他功能依赖于它)?将此核心功能保留为未分类以使其隐藏在“类别”视图中是否是一种良好的做法?您的所有功能都应位于更新站点上-唯一的例外是仅在PDE功能编辑器的“包含的功能”选项卡中列出的功能。您可以将某些功能取消分类,而不是隐藏它们。就我个人而言,我从来没有这样做过……好吧,与其让一个功能依赖于一个核心功能,不如包含核心功能?我不确定我是否得到了区别。有吗?虽然我不知怎的可以隐藏核心功能,因为最终用户在安装它时不会得到任何东西。如果你包括核心特性-通常是用基本的RCP功能——你可以只考虑包含的宏功能。这使得理解应用程序的组成变得更加容易。。。