Maven报错:未找到sonar前缀插件,本地安装后仍无法解决
我之前也碰到过这个棘手的问题——明明本地仓库里有Sonar相关插件,Maven就是死活识别不到,下面几个亲测有效的方案应该能帮你解决:
给项目pom.xml显式添加Sonar插件配置
有时候Maven没法自动关联到Sonar插件的前缀,直接在项目的pom.xml里声明插件就能打破这个僵局:<build> <plugins> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.9.1.2184</version> <!-- 建议使用官方最新稳定版 --> </plugin> </plugins> </build>配置完之后再执行
mvn sonar:sonar试试。在Maven全局settings.xml中添加插件组
如果你不想每个项目都单独配置pom,可以修改全局的settings.xml(路径是~/.m2/settings.xml,Windows用户在C:\Users\<你的用户名>\.m2\settings.xml),在<pluginGroups>节点里加入Sonar的插件组:<pluginGroups> <pluginGroup>org.sonarsource.scanner.maven</pluginGroup> <!-- 保留原有的其他插件组 --> <pluginGroup>org.codehaus.mojo</pluginGroup> <pluginGroup>org.apache.maven.plugins</pluginGroup> </pluginGroups>这样Maven就会自动在这个组里查找前缀为
sonar的插件了。检查本地仓库的插件完整性
有时候插件下载不完整(比如中途断网),Maven会默认认为插件不存在。你可以去~/.m2/repository/org/sonarsource/scanner/maven/sonar-maven-plugin/对应的版本目录,看看有没有完整的.jar和.pom文件,如果文件损坏或者缺失,直接删掉整个版本目录,重新执行mvn sonar:sonar让Maven重新下载完整的插件。用完整插件坐标直接执行命令
如果上面的方法都没效果,可以绕开前缀限制,直接用完整的插件GAV来运行命令:mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar这个命令会强制Maven定位到指定的插件,完全不受前缀配置的影响。
确认Maven版本兼容性
Sonar Maven插件3.9及以上版本要求Maven 3.6.0或更高版本,你可以用mvn -v查看当前Maven版本,如果版本太低,升级一下Maven再尝试执行Sonar命令。
内容的提问来源于stack exchange,提问作者pragathi b

