2

我正在创建一个 RCP 应用程序。我计划提供 p2 更新功能。

例如有 4 个插件:A,B,C,D

插件 A 和 B 代表我的 RCP 应用程序的核心功能。我创建了一个名为 com.myorg.feature.core 的功能。在 feature.xml 内部,在插件选项卡中,我添加了插件 A 和 B。

我在我的 RCP 应用程序的产品文件中添加功能 com.myorg.feature.core 作为依赖项。之后,我使用产品文件导出 RCP 应用程序(这里的产品是基于功能的产品)。

现在我又创建了两个功能。

com.myorg.feature.featureC
com.myorg.feature.featureD

由于这些是我的 RCP 应用程序的可选功能,我希望用户选择是否安装它们。因此,用户将选择安装新软件选项,其中将列出此功能。

我面临的问题是,这些插件 C 和 D 正在使用某些 3rd 方库,例如 BIRT、NATTABLE。所以每次,我构建 featureC 或 featureD,把它放在更新站点上,然后我尝试将它们安装在我的应用程序中,它们显示依赖失败,比如bundle missing: org.eclipse.birt.core

我回到 featureC 的 feature.xml -> 插件选项卡 -> 添加 org.eclipse.birt.core 并再次构建功能。但是有几次我的 RCP 应用程序安装失败,错误包丢失。

是否有任何机制可以让我从一开始就确定所有必需的捆绑包?是否是为我的 RCP 应用程序启动更新或新的可安装单元的正确方法?

4

2 回答 2

0

@Priank 最好在 feature.xml 的插件选项卡中添加所有依赖项,这只是一次努力。您可以从 feature.xml 的依赖项选项卡中计算所需的插件

于 2013-08-13T07:26:49.450 回答
0

对我来说,第一个问题应该是您是否真的想使用 Eclipse PDE 导出向导来提供更新。

相反,您应该为您的项目设置一个无头构建。如果您熟悉 PDE(并且碰巧不讨厌 Maven ;-),那么Tycho可能是您的正确选择。(免责声明:我是 Tycho 项目的提交者,可能不知道所有潜在的替代方案。)

您可以轻松地让 Tycho 在p2 存储库中包含所有传递依赖项:只需将选项设置为includeAllDependenciestycho -p2-repository-plugintrue

于 2013-08-05T15:53:27.767 回答