更新依赖于与其他功能相同的库的功能 - p2错误“一次只能安装以下其中一项”

时间:2013-02-11 14:52:20

标签: eclipse dependencies rcp p2

我的项目中有以下结构:

产品“P”基于特征“FA”,其基于插件“PA”,其取决于Libray-Plugin“PL”。我可以导出整个产品,一切正常。

现在我想通过我的更新站点安装不同的模块。例如:Modul“M”实际上是一个名为“FB”的功能,它基于Plugin“PB”,它依赖于Library-Plugin“PL”。我最初能够安装模块(功能)。此时,Library-Plugin的版本为“1.0.0”。

当我更改模块(功能)并将FB,PB和PL的版本增加到1.0.1然后尝试安装它时,p2显示以下错误:

Cannot complete the install because of a conflicting dependency.
 Software being installed: Modul Feature B - FB 1.0.1
 Software currently installed: Product P with Feature A - FA 1.0.0
 Only one of the following can be installed at once: 
  Library-Plugin - PL 1.0.0
  Library-Plugin - PL 1.0.1
Cannot satisfy dependency:
 From: Modul Feature B - FB 1.0.1
 To: Library-Plugin - PL 1.0.1
Cannot satisfy dependency:
 From: Product P with Feature A - FA 1.0.0
 To: Library-Plugin - PL 1.0.0

我做错了什么?如何部署依赖于与其他已安装功能或产品相同的库插件的功能模块升级?

1 个答案:

答案 0 :(得分:0)

问题是您在功能FA和FB中包含插件的依赖项(即库插件PL)。这样,每个功能都将PL的版本限制为一个精确版本,因此如果您尝试独立更新FA或FB,则p2需要安装多个版本的PL。对于大多数捆绑包来说这是不可能的(因为大多数捆绑包都是单例)。

相反,您的功能应该只包含您自己的捆绑PA,分别是PB。通过这种方式,产品P的安装仍将包含PL(因为使用p2创建的产品安装始终包含所有依赖项),但您将不再获得PL插件的“一次只能安装以下一项”错误。这是因为PA和PB通常依赖于具有版本范围的PL(或者甚至可能没有版本限制),因此只要您的更新站点上有新版本,就可以通过p2更新PL。