SonarQube 6.7.1多语言配置求助:Java8+Angular2项目扫描报错
解决SonarQube 6.7.1扫描Java+TypeScript项目时的多语言配置问题
我之前维护Java+Angular项目时,也碰到过和你一模一样的问题——用Maven配合SonarQube 6.7.1扫描多语言时,设置sonar.language=java,ts直接报错。核心原因是这个参数在SonarQube 6.x版本里已经不支持逗号分隔多语言了,再加上还有插件安装和配置的细节需要注意,下面给你一步步的解决办法:
1. 替换废弃/不兼容的参数
SonarQube 6.7.1中,sonar.language参数只能指定单个语言,如果要同时扫描多种语言,你需要改用sonar.project.languages参数,这个参数支持用逗号分隔多个语言标识:
# 在pom.xml的properties里配置,或者作为Maven命令行参数 sonar.project.languages=java,ts
甚至更省心的是:完全移除语言指定参数,SonarQube会自动检测项目中存在的代码类型(前提是对应语言的插件已经安装)。
2. 确保SonarQube服务器安装了TypeScript插件
报错提示“java,ts”不是插件,很大概率是你的SonarQube服务器上没有安装TypeScript扫描插件(SonarTS),而且这个插件的版本必须和SonarQube 6.7.1兼容:
- 登录SonarQube后台,进入「Administration > Marketplace」
- 搜索「TypeScript」,找到SonarTS插件,选择兼容6.7.1的版本(比如1.1.0,更高版本可能不支持旧版SonarQube)
- 安装完成后,重启SonarQube服务器
3. 配置TypeScript文件路径(如果需要)
如果你的Angular .ts文件不在Sonar默认扫描的目录下,需要手动指定TypeScript源码路径,避免Sonar找不到这些文件:
# 示例:假设你的Angular代码在src/main/webapp/src目录下 sonar.typescript.sources=src/main/webapp/src
4. 完整的Maven配置示例
在你的项目pom.xml中,Sonar插件的配置可以参考下面的结构:
<build> <plugins> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.4.0.905</version> <!-- 这个版本兼容SonarQube 6.7.1 --> </plugin> </plugins> </build> <properties> <sonar.host.url>http://your-sonarqube-server:9000</sonar.host.url> <sonar.login>your-auth-token-or-username</sonar.login> <sonar.project.languages>java,ts</sonar.project.languages> <sonar.typescript.sources>src/main/webapp/src</sonar.typescript.sources> </properties>
5. 验证扫描
配置完成后,运行Maven扫描命令:
mvn clean verify sonar:sonar
这时候Sonar应该会同时扫描Java代码和TypeScript代码,不会再出现之前的插件错误了。
内容的提问来源于stack exchange,提问作者d-man
相关产品推荐
相关产品推荐

