Tycho无法解决从不同反应堆构建的产品到eclipse特征的引用

时间:2011-09-08 09:12:13

标签: eclipse maven eclipse-plugin eclipse-rcp tycho

我有两个反应堆构建:

第一个构建一些捆绑和一个相应的功能。成功clean install后,该功能在我当地的Maven回购中。 Tycho还生成了p2元信息...... -p2artifacts.xml和...... -p2metadata.xml

第二个版本包含基于特征的产品,该产品引用第一个反应堆中构建的功能。当尝试clean install Tycho抱怨未解决的功能时 - 另一个反应堆构建之一。

  

无法执行目标   org.eclipse.tycho:tycho-p2-repository-plugin:0.12.0:assemble-repository [...] [“无法满足从TestApp2 1.0.0到my.testlib.feature.feature.group的依赖关系[1.0。 0.201109081051]。“]

正如您所看到的,我正在使用Tycho 0.12.0,它应该能够在设置pomDependencies=consider标志时解析本地maven存储库的工件,我做了。

我查看了本地maven repo生成的p2元信息,我发现功能版本略有不同。 p2artifacts.xml中的功能版本如下:

  

版本= '1.0.0.201109071453'

比较两个版本

1.0.0.201109081051 // what tycho looks for
1.0.0.201109071453 // what's in my local mvn repo

最后一位只有一个区别,可能是时间戳。

有谁知道为什么tycho抱怨未解决的功能?时间戳是否重要?

更新:由于第二次构建的时间戳改变了每个构建,我认为它是当前的时间戳。

2 个答案:

答案 0 :(得分:3)

在引用.product中的功能时,可能使用“.qualifier”作为版本后缀。 默认情况下,“.qualifier”会被构建时间戳替换,因此这可能不是您想要的。 请尝试使用“0.0.0”(=最新)。

答案 1 :(得分:0)

您的产品文件似乎在另一个反应堆中对您的功能的引用中指定了版本1.0.0.qualifier

由于Tycho(bug 373817)中的错误,qualifier文字在这种情况下没有被正确的时间戳取代:Tycho使用当前版本的时间戳(正如您正确观察到的)而不是目标平台中可用的功能版本的时间戳。

正如Jan已经指出的那样,此问题的解决方法是在该功能的引用中使用版本0.0.0

与所有"包含"一样引用(即功能"包括"插件,产品"包括"功能),Tycho将使用目标平台的实际版本替换该版本。 (注意:以前使用mvn clean install的Tycho构建的工件是automatically part of the target platform。)但是对于0.0.0,这对于两个反应堆来说甚至可以正常工作。


供参考:对于较新的Tycho版本,在问题中描述的设置情况下的错误消息是不同的:

  

无法执行目标org.eclipse.tycho:tycho-p2-publisher-plugin:0.22.0:publish-products(...):发布产品时出现异常(...)\ test.product:发布结果:[包含元素my.testlib.feature.feature.group 1.0.0.201109081051缺失。无法确定对此元素的要求的过滤器。]

此消息是由于相同的Tycho错误而发生的,并且解决方法是相同的。