使用远程存储库中的功能使用Maven / Tycho组装Eclipse产品

时间:2013-04-22 15:57:46

标签: maven tycho

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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”。

这看起来像已知的tycho bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=373817