我的Jenkins工作有以下配置:
首先清理并构建maven项目,然后运行单元测试和静态分析:clean install sonar:sonar
问题是install
和sonar:sonar
各自进行了单元测试,这有效地使构建时间翻了一倍。
我通过将clean install sonar:sonar
更改为clean install -DskipTests
并使用Jenkins声纳插件运行Sonar来解决此问题。现在单元测试只运行一次,声纳显示结果,但Jenkins不再知道测试了。
我的猜测是Jenkins只是在构建之后查看surefire-reports文件夹,而不是在Sonar之后(这是一个构建后的操作)。
答案 0 :(得分:11)
您可以先运行clean install -DskipTests
,然后再添加第二个maven构建步骤sonar:sonar
。
测试(和完整的声纳分析)将在构建阶段运行,然后jenkins可以收集确定的结果。
答案 1 :(得分:2)
正如你所说,Sonar是一个后编译步骤。声纳要求构建完成并在其运行之前通过所有测试,否则它所做的事情没有任何意义。
Sonar使用仪器运行测试(cobertura,如果我没记错的话),它给出了测试的代码覆盖率。
因此,您需要在Sonar运行之前进行安装(或至少编译和测试),然后Sonar重新运行测试,并为其自身目的进行测试。