Jenkins,Maven和Tycho有一点奇怪的问题,很难找出谁是罪魁祸首。
所有SCM触发的构建都失败,但所有手动触发的构建都成功。
詹金斯版本:Jenkins ver。 1.527我有一个模块化的tycho构建:
<modules>
<module>../main.plugin.test</module>
<module>../main.plugin.internationalization.at</module>
<module>../crud.plugin</module>
<module>../rest.plugin</module>
<module>../main.plugin</module>
<module>../main.feature</module>
<module>../product</module>
<module>../target-definition</module>
<module>../rest.plugin.test</module>
</modules>
Jenkins被配置为带有模块的简单maven构建。
它只执行:
-X clean deploy
当触发SCM-Build时,某些模块不会构建。
当我手动构建它时,一切都很好:
此行为是一致的。我已经尝试了
-X deploy
(不干净)任何数量的手动调用都会成功。任何数量的scm触发器都会失败。
在(工作)之前,两个Maven日志看起来完全相同:
[INFO] Reactor Build Order:
[INFO]
[INFO] client-master
[INFO] crud-plugin
[INFO] main-plugin
[INFO] ------------.main.plugin.test
[INFO] ------------.main.plugin.internationalization.at
[INFO] rest-plugin
[INFO] main-plugin
[INFO] ------------.product
[INFO] target-definition
[INFO] ------------.rest.plugin.test
和(失败):
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] main-plugin
[INFO] ------------.plugin.test
[INFO] ------------.main.plugin.internationalization.at
[INFO] rest-plugin
[INFO] main-plugin
[INFO] ------------.product
[INFO] ------------.rest.plugin.test
因此最终的错误信息是:
Caused by: java.lang.IllegalStateException: ------------..client:------------..crud.plugin:eclipse-plugin:1.0.0-SNAPSHOT does not provide an artifact with classifier 'null'
客户特定的模块名称将替换为------------。在这个问题上。
答案 0 :(得分:2)
我多次听到Tycho建立在Jenkins身上的模糊问题。这些问题的原因似乎是一些Jenkins插件触发了这些构建挂钩到Maven生命周期中,并且这与Tycho在Maven内部的作用发生了某种程度的碰撞。
对于您所描述的问题,您使用的Jenkins插件似乎正在更改模块构建顺序。对于正常的Maven构建(其中所有依赖项都在POM中声明),这可能没问题,但是对于Maven / Tycho构建可能会失败,其中依赖项是由Tycho在构建期间计算的。
要避免此问题,您应该以更接近正常命令行构建的方式触发Maven构建。我发现 Maven Integration插件中的 Invoke顶级Maven目标构建步骤没有问题。