根据问题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?
答案 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,但插件仍然可以找到源目录的正确文件夹。