【问题标题】:Assembling an Eclipse product with Maven / Tycho from features in remote repositories使用 Maven / Tycho 从远程存储库中的功能组装 Eclipse 产品
【发布时间】:2013-04-22 15:57:45
【问题描述】:

我负责基于 Eclipse 项目的基于 Maven/Tycho 的构建。该项目实际上由两个子项目Pa和Pb组成,每个子项目都是单独构建的。 Pa 包含许多组合到 p2 存储库中的功能和插件。 Pb 包含另一组功能以及一个产品,所有这些都取决于 Pa 的功能。

当我尝试从 Pb 中的功能以及 Pa 中的功能构建 Pb 产品时出现问题。因此,我的产品文件包含以下功能:

<features>
  <feature id="de.cau.cs.kieler.synccharts.feature" version="0.0.0"/>
  <feature id="de.cau.cs.kieler.kaom.feature" version="0.0.0"/>
</features>

虽然第一个功能来自 Pb 项目,但第二个功能来自 Pa,需要 Maven/Tycho 从 p2 存储库下载。通过我的父 pom.xml 中的以下定义,构建系统可以知道存储库:

<profiles>
  <profile>
    <id>juno42</id>
    <properties>
      <tycho-version>0.17.0</tycho-version>
      <targetJdk>1.5</targetJdk>
    </properties>

    <repositories>
      <repository>
        <id>p2.pa</id>
        <layout>p2</layout>
        <url>repository_url_of_project_pa</url>
      </repository>
    </repositories>
  </profile>
</profiles>

当我尝试构建 Pb(在之前构建 Pa 并在上面定义的 URL 下发布更新站点之后)时,我收到类似以下错误消息:

[ERROR]   Software being installed: de.cau.cs.kieler.product 0.8.0.qualifier
[ERROR]   Missing requirement: de.cau.cs.kieler.kaom.feature.feature.group 0.6.0.201304190326 requires 'de.cau.cs.kieler.core.model.gmf [0.2.2.201304190326]' but it could not be found
[ERROR]   Cannot satisfy dependency: de.cau.cs.kieler.product 0.8.0.qualifier depends on: de.cau.cs.kieler.kaom.feature.feature.group 0.0.0

Maven/Tycho 显然已经从 Pa 中找到了要包含在最终产品中的功能,但未能找到该功能所包含的插件。我仔细检查了插件实际上是在 Pa 的 p2 存储库中发布的,并且所需的版本是否匹配。

有什么我没看到的吗?如果 Tycho 已经找到该功能,它不应该能够找到该功能所包含的插件吗?感谢您对解决此问题的任何帮助。 :)

附带说明,在我们的项目中,Tycho 基于插件的 MANIFEST.MF 文件计算依赖关系,而不是基于 pom.xml 文件中定义的依赖关系。当我遇到第谷无法将两者混合在一个反应​​堆构建中的问题时,我检查了这一点。

【问题讨论】:

    标签: maven tycho


    【解决方案1】:

    您的目标平台配置似乎有错误,例如通过不激活包含配置的配置文件。

    您应该以调试模式 (-X) 启动构建并检查 Tycho 打印出的目标平台配置。

    【讨论】:

      【解决方案2】:

      我注意到的一件事是,当您引用 0.8.0.qualifier 版本时

      在您的产品中,构建抱怨另一个版本 0.6.0.qualifier

      [错误] 缺少要求:de.cau.cs.kieler.kaom.feature.feature.group 0.6.0.201304190326 需要 'de.cau.cs.kieler.core.model.gmf [0.2.2.201304190326]' 但它找不到

      另外,不要在版本引用中使用“.qualifier”,除非它们是在同一个反应器中构建的,因为 .qualifier 被替换为当前构建时间戳。尝试改用“0.0.0”。

      这看起来像已知的第谷错误https://bugs.eclipse.org/bugs/show_bug.cgi?id=373817

      【讨论】:

      • 糟糕,版本不匹配是我在编写文本时的一个错误。我已经更正了。
      • 我现在已将产品包含的功能版本替换为0.0.0。问题仍然存在。 Tycho 无法找到 de.cau.cs.kieler.kaom.feature.feature.group 中包含的所有插件,即使它们可以通过与该功能相同的 p2 存储库获得。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      相关资源
      最近更新 更多