0

我对 Jenkins、Maven 和 Tycho 有一点奇怪的问题,很难找出谁是罪魁祸首。

所有 SCM 触发的构建都失败,但所有手动触发的构建都成功。

詹金斯版本:詹金斯版本。1.527
Maven 版本:3.05

我有一个模块化的第谷构建:

<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 构建时,某些模块不会构建。

在此处输入图像描述

当我手动构建它时,一切都很好:

在此处输入图像描述

这种行为是一致的。我已经试过了

  • 切换到不同的 Maven 版本 (3.05 / 3.04)
  • 在构建之前删除整个工作区
  • 清理所有来源
  • 运行-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'

客户特定的模块名称替换为------------。在这个问题中。

4

1 回答 1

2

我反复听说 Tycho 在 Jenkins 上构建的模糊问题。这些问题的原因似乎是一些触发这些构建的 Jenkins 插件钩入了 Maven 生命周期,这与 Tycho 在 Maven 内部所做的事情发生了某种冲突。

对于您所描述的问题,您使用的 Jenkins 插件似乎正在更改模块构建顺序。这对于普通的 Maven 构建(其中所有依赖项都在 POM 中声明)可能没问题,但对于 Maven/Tycho 构建可能会失败,其中依赖项在构建期间由 Tycho 计算。

为避免此问题,您应该以更接近普通命令行构建的方式触发 Maven 构建。我发现Maven 集成插件中的Invoke 顶级 Maven 目标构建步骤可以正常工作。

于 2013-08-15T08:00:46.303 回答