繁体   English   中英

无法从Jenkins执行SonarQube分析

[英]Can not execute SonarQube analysis from Jenkins

我正在尝试从Jenkins配置Sonarqube分析(使用Maven)。 我安装了Sonarqube 3.7。 我配置了声纳jenkins插件,效果很好。 我有Maven 3.0.3并且正在使用声纳maven插件2.1。

问题是 - 它试图执行目标,但要求org.codehaus.sonar:sonar-maven3-plugin:jar:3.7。 我无法在任何地方找到这个罐子。 在存储库中,我只能看到pom而不是jar

Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.1:sonar (default-cli) on project twister: Can not execute SonarQube analysis
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Can not execute SonarQube analysis
at org.codehaus.mojo.sonar.Bootstraper.executeMojo(Bootstraper.java:109)
at org.codehaus.mojo.sonar.Bootstraper.start(Bootstraper.java:67)
at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:109)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: org.apache.maven.plugin.PluginResolutionException: Plugin org.codehaus.sonar:sonar-maven3-plugin:3.7 or one of its dependencies could not be resolved: Failure to find org.codehaus.sonar:sonar-maven3-plugin:jar:3.7 in the local repository

不要混淆。 涉及2个不同的插件。

第一个是我们命名为“Codehaus Sonar Mojo”。 当你做mvn sonar:sonar时,这是你打电话的那个mvn sonar:sonar 这个插件的GAV是: org.codehaus.mojo:sonar-maven-plugin我们最近发布了2.1版来支持Maven 3.1。 这个插件没有频繁发布,因为我们试图避免与SonarQube版本的任何耦合。 当你调用这个插件时,它只会做一些基本的检查,向SonarQube服务器询问它的版本,然后引导 “SonarQube Maven插件”。

“SonarQube Maven插件”是为SonarQube服务器的每个版本发布的插件。 这个插件的GAV是: org.codehaus.sonar:sonar-maven[3]-plugin 在过去,我们曾经需要2个不同的插件(一个用于Maven 2,一个用于Maven 3)。 根据Maven版本,“Codehaus Sonar Mojo”的工作是引导正确的一个。 从SonarQube服务器3.7开始,只有一个插件: org.codehaus.sonar:sonar-maven-plugin 为了不破坏与“Codehaus Sonar Mojo”的兼容性,当您使用Maven 3+时,仍然需要引导org.codehaus.sonar:sonar-maven3-plugin ,然后我们在旧位置添加了一个重定位pom。

总而言之,当您使用Maven 3+和SonarQube服务器3.7开始SonarQube分析时,这是预期的结果:

  1. mvn sonar:sonar
  2. Maven将下载并使用最新的“Codehaus Sonar Mojo”即org.codehaus.mojo:sonar-maven-plugin:2.1
  3. “Codehaus Sonar Mojo”将查询SonarQube服务器版本和bootstrap org.codehaus.sonar:sonar-maven3-plugin:3.7
  4. Maven将下载org.codehaus.sonar:sonar-maven3-plugin:3.7 pom org.codehaus.sonar:sonar-maven3-plugin:3.7并看到有一个重定位到org.codehaus.sonar:sonar-maven-plugin:3.7
  5. Maven将下载并使用org.codehaus.sonar:sonar-maven-plugin:3.7

在介绍之后,回到您的问题。 消息显示“Codehaus Sonar Mojo”无法下载org.codehaus.sonar:sonar-maven3-plugin:3.7 首先,您应该尝试Marc建议,并尝试更新您的Maven版本,以防有重新定位支持的错误(我在Maven发行说明中没有看到这一点)。 然后你应该检查你的Maven配置(你使用的是存储库管理器吗?)。

最后,如果您仍有问题,请从干净的Maven存储库(备份/删除〜/ .m2 /存储库)开始,然后运行mvn sonar:sonar -X并使用完整日志完成您的问题。

我已经查看了sonar-maven3-plugin pom文件,看起来它已被重新定位到sonar-maven-plugin

http://repo1.maven.org/maven2/org/codehaus/sonar/sonar-maven3-plugin/3.7/sonar-maven3-plugin-3.7.pom

pom说

Since Sonar 3.7 there is no more difference between Maven 2 and Maven 3 so relocate to Maven 2 plugin to avoid duplication 

所以我猜你可以使用sonar-maven-plugin而不是sonar-maven3-plugin。

我有同样的问题。 我正在使用mvn sonar:sonar ,从声纳3.1升级到3.7失败后出现完全相同的错误信息。

事实证明我使用的是旧版本的Maven(3.0.1),我猜这个版本没有正确处理插件的重定位。 升级Maven 3.0.5为我解决了这个问题

不确定我的诊断是否正确,但它看起来像:

  • 你不久前用过声纳,所以你的maven下载了所有的插件
  • 后来他们重新定位了一些插件,所以你下载的插件不能反映他们现在所期望的结构(听起来很荒谬,与maven的工作方式完全相反)

对我来说它有助于删除~/.m2/repository/org/codehouse/mojo/sonar-maven-plugin~/.m2/repository/org/codehouse/...与声纳的其他东西(我不记得确切)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM