我有一个内部 p2 站点,其中包含我们在产品中使用的许多不同的实用程序功能。我刚刚添加了一组新插件以及带有实用功能的 RAP 新功能(而“旧”功能适用于 RCP/SWT)。
为了编译东西,我使用了两个不同的目标平台(一个用于 RCP,一个用于 RAP)并从插件和特性中引用这些。我已经组织了模块,所以我有通常的两层父 POM:
- ...父母 - 所有常见的 Tycho 和 Maven 预订
- ...parent.rcp - 依赖/使用 RCP/SWT 功能的所有插件的容器 - 还将目标平台设置为包含 RCP/SWT 功能
- ...parent.rap - RAP 相同
那里没有问题。一切都编译并运行所有测试。
我什至在这两个特性(RCP 和 RAP)中都有一些现有的插件,因为它们不依赖于任何 UI 功能(例如 OSGi 测试实用程序)。那里也没有问题。
但是...当我尝试使用这两种功能(RCP 和 RAP)创建一个 p2 更新站点时,我遇到了问题。我收到以下消息:
[INFO] Resolving dependencies of MavenProject: com.rcpcompany:com.rcpcompany.uibindings.updatesite:3.0.0-SNAPSHOT @ /Git/ui-bindings/com.rcpcompany.uibindings.updatesite/pom.xml
[INFO] Cannot complete the request. Generating details.
[INFO] Cannot complete the request. Generating details.
[INFO] {osgi.ws=gtk, osgi.os=linux, osgi.arch=x86, org.eclipse.update.install.features=true}
[ERROR] Cannot resolve project dependencies:
[ERROR] Software being installed: com.rcpcompany.uibindings.updatesite raw:3.0.0.'SNAPSHOT'/format(n[.n=0;[.n=0;[-S]]]):3.0.0-SNAPSHOT
[ERROR] Missing requirement: com.rcpcompany.utils.rap.feature.feature.group 1.0.0.qualifier requires 'org.eclipse.rap.ui.forms 0.0.0' but it could not be found
[ERROR] Cannot satisfy dependency: com.rcpcompany.uibindings.updatesite raw:3.0.0.'SNAPSHOT'/format(n[.n=0;[.n=0;[-S]]]):3.0.0-SNAPSHOT depends on: com.rcpcompany.utils.rap.feature.feature.group [1.0.0,1.0.1)
[ERROR]
[ERROR] Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from com.rcpcompany.utils.rap.feature.feature.group 1.0.0.qualifier to org.eclipse.rap.rwt.osgi [2.0.0,2.1.0).", "Unable to satisfy dependency from com.rcpcompany.utils.rap.feature.feature.group 1.0.0.qualifier to org.eclipse.rap.rwt.testfixture [2.0.0,2.1.0).", "Unable to satisfy dependency from com.rcpcompany.utils.rap.feature.feature.group 1.0.0.qualifier to org.eclipse.rap.ui.forms 0.0.0.", "No solution found because the problem is unsatisfiable."] -> [Help 1]
....
由于更新项目与 RCP 目标平台相关联,我理解上述消息,因此 Tycho(或 p2)无法从 RAP 目标平台找到插件并抱怨。
(如果我创建两个不同的更新站点,一切正常,但我不希望这样:-/)
如何说服 Tycho 构建具有这两种功能的更新站点?我是否必须创建一个具有所有可能依赖项的组合目标平台,还是有其他方法?