gpt4 book ai didi

tycho - 单个 p2 站点中基于不同目标平台的功能

转载 作者:行者123 更新时间:2023-12-04 04:57:38 26 4
gpt4 key购买 nike

我有一个内部 p2 站点,其中包含我们在产品中使用的许多不同的实用程序功能。我刚刚添加了一组新插件以及带有实用功能的 RAP 新功能(而“旧”功能适用于 RCP/SWT)。

为了编译东西,我使用了两个不同的目标平台(一个用于 RCP,一个用于 RAP)并从插件和特性中引用这些。我已经组织了模块,所以我有通常的两层父 POM:

  • ... parent - 与所有常见的 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 构建具有这两种功能的更新站点?我是否必须创建一个具有所有可能依赖项的组合目标平台,还是有其他方法?

    最佳答案

    让我们从显而易见的开始:您想要聚合到 p2 存储库中的东西需要在 target platform 中。因为构建只能使用目标平台中的东西。但这似乎不是您的问题 - 您要聚合的事物的依赖关系存在相当大的问题。

    Currently ,聚合内容的依赖关系也需要在目标平台中。您应该能够通过合并 parent 双方的配置来创建联合 RCP&RAP 目标平台。

    不幸的是,这还不是全部:目前,还需要能够一次安装所有功能。这就是 Tycho 在依赖关系解析期间所模拟的:它假装使用模块的构建结果进行 p2 安装。如果在依赖解析过程中遇到“无法立即安装”错误,您可以尝试设置 target-platform-configuration开关allowConflictingDependenciestrue .最初引入此开关是为了完全支持您在(现已弃用)eclipse-update-site 中的用例。包装类型。我不确定它是否适用于 eclipse-repository尽管。

    如果它不起作用,我只能看到构建两个单独的 p2 存储库的可能性,并将它们组合到一个额外的(后)构建步骤中。您可以将两个 p2 存储库放在您的 Web 服务器上,并使用所谓的复合存储库对它们进行逻辑分组,或者使用 p2 mirror tool 将两个存储库复制(“镜像”)在一起。 .

    关于tycho - 单个 p2 站点中基于不同目标平台的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16567296/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com