为什么要先运行mvn clean clover2:setup install clover2:clover,then:mvn sonar:sonar

时间:2016-03-30 03:45:30

标签: sonarqube clover sonarqube-scan

根据问题Sonar + Clover only runs on src-instrumented,建议先使用mvn clean clover2:setup install clover2:clover,然后:mvn sonar:sonar。

想知道为什么我们不能使用mvn clean clover2:setup install clover2:clover sonar:sonar?

2 个答案:

答案 0 :(得分:1)

过去,建议单独运行目标sonar:sonar。自从SonarQube Scanner for Maven停止尝试运行单元测试+通过分配新的Maven生命周期为您收集覆盖范围之后,情况就不再如此。

现在,一般建议是在一个命令中运行目标。例如mvn clean package sonar:sonar

在Clover的情况下,clover:setup目标将改变Maven模型以使所有其他插件(如surefire)使用检测类而不是原始源代码。这确实是一个问题,因为它会阻止SonarQube匹配类文件。因此,在您的情况下,您应该坚持两个单独的目标,或手动配置sonar.sources以引用原始源代码。

答案 1 :(得分:0)

比较maven日志并找到可能的原因:

" mvn clean clover2:setup install clover2:clover sonar:sonar"似乎有问题找到Source dirs。日志显示它使用$ {project} \ target \ clover \ src-instrumented和$ {project} \ target \ generated-sources \ annotations作为源dirs。

如果显式指定src / main / java,那么这个单一命令效果很好。唯一棘手的问题是为什么单独运行目标并不需要指定sonar.sources,但插件仍然可以找到源目录的正确文件夹。