6

我的 Jenkins 工作有以下配置:首先清理并构建 maven 项目,然后运行单元测试和静态分析:问题clean install sonar:sonar 是每个都运行单元测试,这有效地使构建时间加倍。installsonar:sonar

我通过使用 Jenkins 声纳插件更改并运行声纳来clean install sonar:sonar解决此问题。clean install -DskipTests现在单元测试只运行了一次,声纳显示了结果,但詹金斯不再知道这些测试了。

我的猜测是,Jenkins 只在构建后查看 surefire-reports 文件夹,而不是在 Sonar 之后(这是构建后操作)。

4

2 回答 2

11

您可以clean install -DskipTests先运行,然后添加第二个 Maven 构建步骤sonar:sonar。测试(和完整的声纳分析)将在构建阶段运行,之后詹金斯可以收集可靠的结果。

于 2011-09-20T15:41:56.377 回答
2

正如你所说,声纳是一个后编译步骤。Sonar 要求构建完成并通过所有测试才能运行,否则它所做的事情没有任何意义。

Sonar 使用仪器运行测试(如果我没记错的话是 cobertura),它提供了测试的代码覆盖率。

因此,您需要在 Sonar 运行之前进行安装(或至少编译和测试),然后 Sonar 重​​新运行测试并为其自己的目的进行检测。

于 2011-09-20T14:37:16.557 回答