插件 - 功能 - 更新站点

3
我有几个插件想要创建一个漂亮的更新站点来提供它们。其中一些仅包含核心功能(不会做任何事情,我们称之为核心插件),而其他一些则为最终用户提供一些功能(它们依赖于核心插件,我们称之为使用插件)。 现在,我为每个使用插件创建了特性。我包含了相应的插件并设置了所有依赖项(核心插件)。 这些特性,我已经添加到了一个更新站点。 当我现在尝试安装它们时,我收到缺少核心插件的投诉:
    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-feature 中都包含 core-plugins ,这样做有什么问题吗?或者说我必须这样做吗?能否有人帮我正确地组织它?

1个回答

3
特性旨在将相关的插件分组,以便作为单个单元在目标系统上安装。因此,对于一个非平凡的应用程序,通常会有若干个特性:
- 主要特性包含应用程序的基本功能 - 多个可选附加功能的特性 - 具有核心功能的多个特性 - 具有第三方插件主要集合的多个特性
两个或多个特性可以包含相同的插件 - 插件仍然只存在于目标系统上的一个实例中。在特殊情况下,甚至可以在目标系统上存在多个不同版本的同一插件。在其他情况下,如果不同的特性依赖于同一插件的不同版本,则会出现冲突,必须由开发人员解决。
特性还可以包括或依赖其他特性,在这种情况下,所依赖的特性也必须安装在目标系统上。因此,主应用程序特性依赖所需的核心和第三方特性,而第三方特性也是如此。所依赖的特性的安装通常会自动发生。p2 足够聪明,只在安装或更新时下载所需的插件...
在运行时,特定插件在目标系统上的来源并不重要,这为您提供了许多选项。
将插件分成特性时,必须首先考虑目标系统上想要的应用程序和所需的附加功能。当您有多个每个使用核心插件或第三方插件子集的应用程序或附加功能时,这才变得真正困难。
您没有写明您是否有单个应用程序或多个应用程序,因此我假设您只有一个应用程序 - 将这个想法扩展到共享一组公共插件的多个应用程序相当容易。
您可以以几种不同的方式解决此问题。最简单的解决方案是创建一个单独的应用程序特性,并在其中包含 UI、核心和第三方插件 - 更多或更少地按照您的建议。如果您只有一个产品并且不希望在其他设置中使用核心插件,则此方法很好用。
通常,您会将特性分为核心和 UI 特性。这样做最常见的原因是将 UI 功能分成不同的特性,以允许最终用户仅安装所需的功能。
因此,在您的情况下,您也可以有两个特性:核心特性和应用程序特性,后者依赖于核心特性。
或者您可以有:
- 核心特性 - UI 功能特性 - 依赖于核心特性 - 来自 Eclipse 的 RCP 特性 - 主应用程序特性,依赖于所有其他特性
有很多方法可以做到这一点...

非常感谢您详细的回答。它对我帮助很大,今天早上的第一次测试已经很好地运行了 :-) - Antje Janosch
问题剩余:如果其他特性依赖于核心特性,我是否需要将核心特性添加到更新网站?将核心特性未分类以在类别视图中隐藏是一种好的做法吗? - Antje Janosch
所有功能应该在更新站点上,唯一的例外是仅列在PDE特征编辑器的“包含特征”选项卡中的功能。您可以将某些功能设置为未分类以隐藏它们。个人而言,我从不这样做... - Tonny Madsen
好的,所以与其让一个功能依赖于核心功能,最好将核心功能包含进去?我不确定它们之间有什么区别。有吗?我原本认为可以隐藏核心功能,因为单独安装它对最终用户没有任何好处。 - Antje Janosch
如果您包含核心功能 - 通常使用基本RCP功能完成 - 您可以将包含的功能视为宏。这使得更容易理解应用程序的组成... - Tonny Madsen

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