6

我的詹金斯构建刚刚开始失败,并显示以下消息:

[INFO] --- sonar-maven-plugin:2.7:sonar (default-cli) @ cividas-core-web ---
[INFO] artifact com.ontimize:ontimize-core: checking for updates from central
[INFO] artifact com.ontimize:ontimize-core: checking for updates from imatia-local
[INFO] artifact com.ontimize:ontimize-core: checking for updates from snapshots
[INFO] User cache: /var/lib/jenkins/.sonar/cache
[INFO] SonarQube version: null
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.773s
[INFO] Finished at: Thu Oct 22 19:49:04 CEST 2015
[INFO] Final Memory: 13M/193M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.7:sonar (default-cli) on project cividas-core-web: null: MojoExecutionException: NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.7:sonar (default-cli) on project cividas-core-web: null
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
    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:317)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException
    at org.codehaus.mojo.sonar.bootstrap.ExceptionHandling.handle(ExceptionHandling.java:41)
    at org.codehaus.mojo.sonar.bootstrap.RunnerBootstrapper.execute(RunnerBootstrapper.java:107)
    at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:141)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 19 more
Caused by: java.lang.NullPointerException
    at org.apache.maven.artifact.versioning.ComparableVersion.parseVersion(ComparableVersion.java:354)
    at org.apache.maven.artifact.versioning.ComparableVersion.<init>(ComparableVersion.java:345)
    at org.apache.maven.artifact.versioning.DefaultArtifactVersion.parseVersion(DefaultArtifactVersion.java:110)
    at org.apache.maven.artifact.versioning.DefaultArtifactVersion.<init>(DefaultArtifactVersion.java:46)
    at org.codehaus.mojo.sonar.bootstrap.RunnerBootstrapper.isVersionPriorTo5Dot2(RunnerBootstrapper.java:192)
    at org.codehaus.mojo.sonar.bootstrap.RunnerBootstrapper.execute(RunnerBootstrapper.java:84)
    ... 22 more
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Sonar analysis completed: FAILURE

这是怎么回事?

4

6 回答 6

7

通过将此代码添加到我的插件部分将自动选择的最新(2.7)版本降级到旧版本(2.4)来解决pom.xml

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>2.4</version>
  </plugin>
于 2015-10-22T18:17:52.937 回答
6

对于那些对“为什么”感兴趣的人 ,我做了更多的挖掘,似乎正在发生的事情是这样的:

sq-version.txt文件位于org.codehaus.sonar:sonar-plugin-api中,但此依赖项不包含(甚至是可传递的)sonar-maven-plugin中。它引用的所有声纳都是org.sonarsource.sonar-runner:sonar-runner-api

他们似乎更改了版本 txt 文件的位置和名称,但没有更新所有代码。您可能会手动向插件类路径添加sq-version.txt内容5.2(没有换行符)(可能通过更新插件 jar),或者添加对 sonar-plugin-api 的依赖项,但这些都是黑客行为。

sonar-maven-plugin 2.6 使用 sonar-runner 2.4,这与 sonar-maven-plugin 2.7 使用的 2.5 有很大不同(sonar-runner 的 groupId 已将从更改org.codehaus.sonar.runnerorg.sonarsource.sonar-runner),因此最好坚持使用 v2.2 版本。 6 插件,直到他们顺利过渡并发布了更多版本。

于 2015-10-26T19:35:18.137 回答
5

在 v2.7 中, SonarQube 服务器版本的传递方式maven-sonar-plugin以及其他内容发生了变化,因为它使用 now sonar-runner 2.5

将它与 SonarQube 实例 < 4.3 一起使用时确实存在一个错误,我为此打开了票证:https ://jira.sonarsource.com/browse/MSONAR-131

请注意,SQs < 4.5(当前LTS)不再受到积极支持,并且sonar-maven-plugin由于sonar-runner 2.5.

对于这些情况,最好将 maven 插件版本锁定为 2.6,如前所述。

于 2015-10-28T08:34:06.503 回答
2

我们今天在工作中遇到了同样的问题,我们自动使用最新版本的 maven 和 sonar 插件。起初发现问题并不容易。

elcodedocle 给出的答案是正确的,但我想为那些以自动方式使用 maven 和声纳的人补充说,这也是一个解决方案:

org.codehaus.mojo:sonar-maven-plugin:2.6:sonar

这样它可以在旧版本 2.6 上运行,我可以确认它可以工作。

2.7 中可能有一个错误,我希望它很快得到修复。这是我们的错误:

[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven plugin:2.7:sonar (default-cli) on project (projectName): Unable to determine structure of project. Probably you use Maven Advanced Reactor Options with a broken tree of modules. "(projectName)" is orphan -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

编辑: 查看这篇文章以获取更多信息:Jenkins Sonar 插件突然停止工作

这里解释了插件的新版本 2.7 不再与 java 6 项目兼容。如果您不熟悉它,还可以在 Jenkins 中找到有关如何修复它的说明。(我的解释有点短)

于 2015-10-26T15:56:47.693 回答
0

这是一个提示:

[INFO] SonarQube version: null

稍后在代码中,Maven 尝试解析此版本号并失败。源代码在这里:https ://github.com/mojohaus/sonar-maven-plugin/blob/master/src/main/java/org/codehaus/mojo/sonar/bootstrap/RunnerBootstrapper.java

SonarQube runner 的来源,这是由属性实例支持的。所以可能代码无法访问服务器,或者服务器没有发回这些数据。很难说。

我可以看到代码在 2.5 中发生了变化。这可能就是为什么 2.4 仍然有效的原因。在这里查看如何确定版本:Jenkins Sonar 插件突然停止工作

于 2015-10-26T10:24:40.383 回答
0

发现适合您运行声纳安装的插件版本。

例如 mvn org.codehaus.mojo:sonar-maven-plugin:2.6:sonar

此插件版本不适用于最新的声纳版本,但适用于 4.1.2。

于 2015-11-10T08:01:59.590 回答