我的詹金斯号建筑刚开始失败,并显示以下消息:
[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
这是怎么回事?
对于那些对 “为什么” 感兴趣的人 ,我做了更多的挖掘工作,看来正在发生的事情是这样的:
RunnerBootstrapper尝试检查版本是否为5.2+:
首先,从在EmbeddedRunner中创建的启动器检索 serverVersion ,
使用IsolatedLauncher创建代理的实现类BatchIsolatedLauncher
它将尝试读取sq-version.txt包含版本的资源文件。
sq-version.txt
该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的依赖关系,但是这些都是黑客。
5.2
sonar-maven-plugin 2.6使用了sonar-runner 2.4,它与sonar-maven-plugin 2.7使用的2.5完全不同(sonar-runner的groupId已将 域 从 更改org.codehaus.sonar.runner为org.sonarsource.sonar-runner),因此最好坚持使用v2。 6个插件,直到他们平滑过渡并发布了更多版本。
org.codehaus.sonar.runner
org.sonarsource.sonar-runner