我正在创建一个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正在使用某些第三方库,例如BIRT,NATTABLE。所以每次我构建featureC或featureD,把它放在更新站点上,我尝试在我的应用程序中安装它们,它们显示依赖性失败,如bundle missing: org.eclipse.birt.core
我回到featureC的feature.xml - >插件标签 - >添加org.eclipse.birt.core并再次构建功能。但有几次我的RCP应用程序无法安装,错误包丢失。
是否有任何机制可以让我从头开始确定所有必需的捆绑包?是我的RCP应用程序启动更新或新的可安装单元的正确方法吗?
答案 0 :(得分:0)
对我而言,第一个问题应该是您是否真的想使用Eclipse PDE导出向导来提供更新。
相反,您应该为您的项目设置无头构建。如果您熟悉PDE(并且不喜欢讨厌Maven ;-),Tycho可能是您的正确选择。 (免责声明:我是Tycho项目的提交者,可能不知道所有可能的替代方案。)
您可以轻松地让Tycho在p2 repository中包含所有传递依赖项:只需在tycho-p2-repository-plugin上将选项includeAllDependencies
设置为true
。
答案 1 :(得分:0)
@Priank最好在feature.xml中的插件选项卡中添加所有依赖项,这只需要一次性工作。您可以从feature.xml的依赖项选项卡
计算所需的插件