sonar扫描报错了,于是去网上搜索一下怎么配置,没想到找了三分钟没找到很好的方式,结合官网给的解决方式,写下这篇文章分享一下。
不妥之处欢迎讨论指正。
1、场景及错误日志
使用流水线的 jenkins 构建项目时,日志打印错误如下:
Failed to execute goal org.sonarsouce.scanner.maven:sonar-maven-plugin:3.6.0:sonar
on project ncrm: The directory '/home/jenkins/workspace/baidu-web/src/main' does not
exist for Maven module xxx.xxx:war:0.1. Please check the property sonar.source -> [Help 1]
我的项目属于多模块项目,父pom.xml 中配置的扫描范围是:
<sonar.sources>src/main</sonar.sources>
2、错误原因及解决方式
2.1 错误原因
项目下的 baidu-web 模块并不是标准的格式,也就是没有 src/main 这个目录,但 pom.xml 配置的是扫描 src/main 目录,所以就导致报错。
2.2 解决方案
2.2.1 排除 baidu-web 这个模块范围
也就是我们不扫描这个模块就行。
方式1:(亲试可行)
在 baidu-web 模块下的 pom.xml 中添加:
<sonar.skip>true</sonar.skip>
方式2:(亲试可行)
在父 pom.xml 中,也就是配置 <sonar.sources>的pom中,将原来的 src/main 修改为:
<sonar.sources>.</sonar.sources>
<sonar.inclusions>src/main/**</sonar.inclusions>
方式2是找src/main这个目录,没有的当然就不用管了
2.2.2 添加目录(未尝试此方式)
在 baidu-web 模块下创建目录 src/main
可能还有很多方式,欢迎分享。