2

我有两个反应堆版本:

第一个构建了一些捆绑包和相应的功能。成功后clean install,该功能位于我本地的 Maven 存储库中。第谷还生成了 p2 元信息……-p2artifacts.xml和……-p2metadata.xml

第二个构建包含一个基于特性的产品,它引用了第一个反应器中构建的特性。当尝试clean install第谷时抱怨一个未解决的功能 - 另一个反应堆构建中的一个。

未能执行目标 org.eclipse.tycho:tycho-p2-repository-plugin:0.12.0:assemble-repository [...] [“无法满足从 TestApp2 1.0.0 到 my.testlib.feature.feature 的依赖关系。组 [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

只有最后一位不同,可能是时间戳。

有谁知道为什么第谷抱怨未解决的功能?时间戳重要吗?

更新:由于第二次构建的时间戳会更改每个构建,我假设它是当前时间戳。

4

2 回答 2

3

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

于 2011-09-08T09:34:23.300 回答
0

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

由于 Tycho 中的一个错误(错误 373817),qualifier在这种情况下,文字不会被正确的时间戳替换:Tycho 使用当前构建的时间戳(正如您正确观察到的那样)而不是功能版本中可用的时间戳目标平台。

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

与所有“包含”引用(即功能“包含”插件和产品“包含”功能)一样,Tycho 将用目标平台的实际版本替换该版本。(注意:以前 Tycho 构建的工件mvn clean install自动成为目标平台的一部分。)但是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 错误,解决方法是相同的。

于 2014-11-27T12:14:49.310 回答