将 RCP 项目更新到 Eclipse Tycho >= 2.0 导致 "Unable to satisfy dependency" 来自不同存储库的特性

Updating RCP project to Eclipse Tycho >= 2.0 leads to "Unable to satisfy dependency" for features from different repositories

使用 tycho 1.x 适用于我基于目标平台定义的 RCP 应用程序,包括具有来自不同存储库的依赖项的功能。由于 RCP 4.18 中工具栏的错误,我将项目更新为 RCP 4.20。使用此 RCP 版本,我的 UI 测试不再适用于 Tycho 1.x。所以我更新到 Tycho 2.x 但遇到另一个问题:来自不同存储库的功能的依赖性无法再解决,但如果我将所有存储库 URL 添加到目标平台定义中的功能位置(或添加所有存储库和单元到一个位置条目)。由于不同的原因,这些都不是选择。是否有可能获得旧行为?此更改的原因是什么?

由于 Tycho >= 2.0 不会扫描目标平台文件的所有位置,在解析 RCP 功能之前,有两种可能从不同的 p2 存储库中获取功能中包含的插件:

  1. 将功能所需的所有 p2 存储库添加到目标平台位置:
<locations>
  <location ...
    <unit ... feature
    <repository ... of included plugin 1
    <repository ... of included plugin 2
  </location>
</locations>
  1. 使用带有子存储库的 p2 复合存储库来解决该功能:
<locations>
  <location ...
    <unit ... feature
    <repository ... composite repo with child repos of included plugins
  </location>
</locations>

对我来说,问题只能通过复合存储库解决,因为无法将多个存储库添加到目标平台生成器文件的位置。