SonarQube v6.7.1多模块项目如何在仪表盘展示层级结构?
解决SonarQube 6.7.1展示Maven多模块层级的问题
我之前也碰到过类似的情况,特别是在SonarQube 6.7.x这种稍旧的版本上,给你几个可行的解决方案:
1. 优先排查版本兼容性问题
最新版的Sonar Scanner Maven插件大概率和SonarQube 6.7.1不兼容——SonarQube 6.7.x对应的Maven插件版本应该是2.x系列(比如2.8),而新版插件(3.x及以上)只支持SonarQube 7.9及更高版本。版本不匹配会直接导致子模块无法被正确上报到SonarQube。
你可以在父pom.xml里指定兼容的插件版本:
<build> <plugins> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>2.8</version> </plugin> </plugins> </build>
2. 确保Maven多模块的Sonar配置正确
在父pom.xml中统一配置Sonar参数,确保子模块能被自动识别:
- 不需要手动指定
sonar.modules(Maven多模块项目下插件会自动扫描子模块),但如果有特殊模块需要排除,可以添加:
<properties> <!-- 可选:排除不需要分析的模块 --> <sonar.exclusions>module-to-exclude/**/*</sonar.exclusions> </properties>
- 确认每个子模块的pom.xml正确继承了父pom,没有覆盖Sonar相关的配置项。
3. 在SonarQube中手动启用模块视图
SonarQube 6.7.x默认不会在仪表盘自动展示子模块层级,需要手动开启:
- 进入根项目的仪表盘页面
- 点击右上角的Configure Widgets按钮
- 在可用小部件列表中找到Modules小部件,添加到仪表盘的合适位置
- 保存配置后刷新页面,就能看到子模块的列表,点击子模块名称可进入对应的详情页
另外,你也可以在根项目的Project Settings -> Modules菜单里,确认所有子模块是否已经被正确识别。如果子模块没有出现在这里,说明分析过程中没有上报成功,需要回到前面的步骤排查配置或兼容性问题。
4. 重新执行分析命令
调整配置后,先清理Maven缓存再重新执行分析:
mvn clean install sonar:sonar
内容的提问来源于stack exchange,提问作者d-man
相关产品推荐
相关产品推荐

