4

我负责基于 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 文件中定义的依赖关系。当我遇到第谷无法将两者混合在一个反应​​堆构建中的问题时,我检查了这一点。

4

2 回答 2

1

您的目标平台配置中似乎存在错误,例如未激活包含该配置的配置文件。

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

于 2013-05-06T12:39:07.640 回答
0

我注意到的一件事是,当您引用版本 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

于 2013-04-23T06:56:18.043 回答