3

我有几个插件,并想创建一个不错的更新站点来提供它们。其中一些只包含核心功能(不会做任何事情,我们称之为 core-plugin),而另一些则为最终用户提供一些功能(它们依赖于核心插件,我们称之为 useme-plugin)。现在,我已经为每个 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 功能中......还是我必须这样做?任何人都可以帮助我正确地构建它吗?

4

1 回答 1

3

功能被用于分组相关的插件,这些插件应该作为一个单元安装在目标系统上。因此,对于一个重要的应用程序,您通常具有许多功能:

  • 具有应用程序基本功能的主要功能
  • 一些可选插件功能的特性
  • 许多具有核心功能的特性
  • 许多功能与主要的 3rd 方插件集合

两个或更多功能可以包含同一个插件 - 插件仍将仅存在于目标系统上的一个实例中。在特殊情况下,同一插件的多个不同版本甚至可以存在于目标系统上。在其他不同功能依赖于同一插件的不同版本的情况下,您会遇到必须由开发人员解决的冲突。

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

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

在将插件划分为功能时,您必须首先考虑目标系统上想要的应用程序和想要的插件。只有当您有多个应用程序或插件,每个应用程序或插件都使用核心插件的子集或第三个插件时,它才会变得非常困难。

您还没有写过您是否有一个应用程序或多个应用程序,所以我假设您只有一个应用程序 - 将这个想法扩展到共享一组通用插件的多个应用程序是相当容易的。

您可以通过几种不同的方式解决此问题。绝对最简单的解决方案是制作单个应用程序功能,并在其中包含 UI、核心和 3rd 方插件 - 或多或少如您所建议的那样。如果您只有一个产品并且不希望在其他设置中使用核心插件,则此方法可以正常工作。

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

所以在你的情况下,你也可以有两个特性:核心特性和应用程序特性,这取决于核心特性。

或者你可以有

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

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

于 2011-08-09T14:18:19.137 回答