我们让Sonar和Jenkins位于同一台机器上,Sonar分析作为Jenkins工作后步骤运行。 Jenkins的工作是使用Maven 3.0.5构建的。
在我们昨天将Sonar从4.5.x更新到5.1.2之前,一切都很好。
更新声纳步骤失败后出现异常:
org.apache.maven.lifecycle.LifecycleExecutionException:无法在项目TestApplication上执行目标org.codehaus.mojo:sonar-maven-plugin:2.0:sonar(default-cli):不能执行声纳
引起:org.apache.maven.plugin.MojoExecutionException:无法执行Sonar
引起:org.apache.maven.plugin.PluginResolutionException:插件org.codehaus.sonar:sonar-maven3-plugin:5.1.2或其中一个依赖项无法解析:失败读取org.codehaus.sonar的工件描述符:sonar-maven3-plugin:jar:5.1.2
引起:org.sonatype.aether.resolution.ArtifactDescriptorException:无法读取org.codehaus.sonar的工件描述符:sonar-maven3-plugin:jar:5.1.2
引起:org.sonatype.aether.resolution.ArtifactResolutionException:未能找到org.codehaus.sonar:sonar-maven3-plugin:pom:5.1.2 in http://repo.maven.apache.org/maven2 was缓存在本地存储库中,在中心的更新间隔过去或强制更新之前,不会重新尝试解析
我们发现实际上有5.1版本的org.codehaus.sonar:sonar-maven3-plugin,但在maven repo中没有5.1.2。
修正:
我们设法通过强制org.codehaus.mojo:sonar-maven-plugin版本修复它,在我们的pom文件中通过官方Analyzing with Sonar doc
的建议但是,由于我们有几十个项目,应该有更好的解决方案而不是改变每个项目的pom文件
答案 0 :(得分:2)
好的,找到了简单的解决方案:
在maven存储库(.m2)中缓存了最新版本的org.codehaus.mojo:sonar-maven-plugin为2.0,即使最新版本是2.6。 (在档案.m2/repository/org/codehaus/mojo/sonar-maven-plugin/maven-metadata-central.xml
)
旧版本的工作方式与新版本有很大不同(见Which sonar-maven-plugin version to use?)
我们删除了.m2 / repository / org / codehaus / mojo / sonar-maven-plugin目录,以便下载更新的版本。