Maven 无法解析 sonar-maven-plugin 版本 5.1.2

Maven can't resolve sonar-maven-plugin version 5.1.2

我们在同一台机器上安装了 Sonar 和 Jenkins,Sonar 分析是 运行 作为 Jenkins 作业 post 步骤。 Jenkins 作业是使用 Maven 3.0.5 构建的。

一切都很好,直到我们昨天将 Sonar 从 4.5.x 更新到 5.1.2。

更新声纳步骤失败并出现异常:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar (default-cli) on project TestApplication: Can not execute Sonar

Caused by: org.apache.maven.plugin.MojoExecutionException: Can not execute Sonar

Caused by: org.apache.maven.plugin.PluginResolutionException: Plugin org.codehaus.sonar:sonar-maven3-plugin:5.1.2 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.codehaus.sonar:sonar-maven3-plugin:jar:5.1.2

Caused by: org.sonatype.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.codehaus.sonar:sonar-maven3-plugin:jar:5.1.2

Caused by: org.sonatype.aether.resolution.ArtifactResolutionException: Failure to find org.codehaus.sonar:sonar-maven3-plugin:pom:5.1.2 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced

我们发现实际上有5.1版本的org.codehaus.sonar:sonar-maven3-plugin,但maven repo中没有5.1.2。

修复:

我们设法通过在我们的 pom 文件中强制 org.codehaus.mojo:sonar-maven-plugin 版本到 2.6 来修复它,正如官方 Analyzing with Sonar 文档

上的建议

但是由于我们有几十个项目,应该有更好的解决方案而不是更改每个项目的 pom 文件

好的,找到了简单的解决方案:

在 Maven 存储库 (.m2) 中缓存了 org.codehaus.mojo:sonar-maven-plugin 的最新版本是 2.0,即使最新版本是 2.6。 (在文件 .m2/repository/org/codehaus/mojo/sonar-maven-plugin/maven-metadata-central.xml 中)

旧版本在工作方式上与新版本有很大不同(参见

我们删除了 .m2/repository/org/codehaus/mojo/sonar-maven-plugin 目录,以便下载更新版本。