声纳maven插件构建错误,SonarQube版本:null

Not*_*aeL 6 maven jenkins sonarqube sonar-maven-plugin

我的jenkins构建刚刚开始失败并显示以下消息:

[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
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?

Not*_*aeL 7

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

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>2.4</version>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

  • 对于我们来说,声纳-maven-plugin的2.7版本也失败了,但是与2.6版一起使用.不知道是什么原因? (2认同)

Ken*_*ney 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的依赖,但这些都是黑客.

该声纳Maven的插件2.6使用声纳亚军2.4,它是2.5截然不同的是声纳Maven的插件2.7用途(在的groupId声纳亚军已经改变域org.codehaus.sonar.runnerorg.sonarsource.sonar-runner),所以最好坚持到第2版. 6插件直到他们平滑过渡并发布了更多版本.


Dua*_*ses 5

传递SonarQube服务器版本的方式maven-sonar-plugin在v2.7中已经改变,因为它现在使用了sonar-runner 2.5.

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

请注意,不再主动支持SQ <4.5(当前LTS),并且sonar-maven-plugin由于新接口所暴露,因此无法保证在其他方面不会与它们不兼容sonar-runner 2.5.

对于这些情况,最好将maven插件版本锁定为2.6,如已建议的那样.