sonar scanner analyze maven jenkins sonarqube sonar-maven-plugin

scanner - error de compilación del complemento sonar maven, versión de SonarQube: null



sonarqube maven jenkins (6)

Descubra la versión del complemento apropiado para que ejecute la instalación del sonar.

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

Esta versión de complemento no funcionará en contra de la última versión del sonar, pero funcionará bien contra un 4.1.2.

Mis compilaciones de jenkins comenzaron a fallar con este mensaje:

[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

¿Qué es todo esto?


Esta es una pista:

[INFO] SonarQube version: null

Más adelante en el código, Maven intenta analizar este número de versión y falla. El código fuente está aquí: https://github.com/mojohaus/sonar-maven-plugin/blob/master/src/main/java/org/codehaus/mojo/sonar/bootstrap/RunnerBootstrapper.java

Desde el origen del corredor SonarQube , esto está respaldado por una instancia de propiedades. Entonces, tal vez el código no pudo acceder al servidor o el servidor no está devolviendo esta información. Difícil de decir.

Lo que puedo ver es que el código cambió en 2.5. Esa es probablemente la razón por la cual 2.4 aún funciona. Vea aquí cómo definir las versiones: el plugin Jenkins Sonar deja de funcionar de repente


Hemos tenido el mismo problema en el trabajo hoy en día, utilizamos automáticamente la última versión para los complementos maven y sonar. Al principio no fue fácil encontrar el problema.

La respuesta que dio elcodedocle es correcta, pero me gustaría agregar para aquellos que usan maven con sonar de manera automatizada que esta también es una solución:

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

De esta manera se ejecuta en la versión anterior 2.6 y puedo confirmar que funciona.

Probablemente hay un error en 2.7 y espero que se solucione pronto. Este fue nuestro error:

[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

EDITAR: Eche un vistazo a esta publicación para obtener más información: el plugin Jenkins Sonar deja de funcionar de repente

Aquí se explica que la nueva versión, 2.7, del complemento ya no es compatible con los proyectos de java 6. También puede encontrar una explicación sobre cómo solucionarlo en Jenkins si no está familiarizado con él. (mi explicación fue un poco corta)


La forma en que se pasa la versión del servidor SonarQube a maven-sonar-plugin ha cambiado en v2.7, junto con otras cosas, ya que ahora usa sonar-runner 2.5 .

De hecho, hay un error al usarlo con las instancias de SonarQube <4.3, para las cuales abrí el ticket: https://jira.sonarsource.com/browse/MSONAR-131

Tenga en cuenta que los SQ <4.5 ( LTS actual) ya no se admiten activamente y no hay garantía de que el sonar-maven-plugin no sea incompatible con ellos de otras formas debido a la nueva interfaz expuesta por sonar-runner 2.5 .

En estos casos, probablemente sea mejor bloquear la versión del complemento maven a 2.6 , como ya se sugirió.


Para aquellos interesados ​​en "¿por qué?" , He hecho más excavaciones y lo que parece estar sucediendo es esto:

Este archivo sq-version.txt se encuentra en org.codehaus.sonar: sonar-plugin-api , pero esta dependencia no está incluida (incluso transitivamente) en el sonar-maven-plugin . Todo lo que hace referencia a sonar-wise es org.sonarsource.sonar-runner: sonar-runner-api .

Parecen haber cambiado la ubicación y el nombre del archivo de versión txt, pero no han actualizado todos los códigos. Puede salirse con la suya agregando manualmente un sq-version.txt con contenido 5.2 (sin nueva línea) al classpath del plugin (posiblemente actualizando el plugin jar), o agregue una dependencia en sonar-plugin-api, pero estos son hacks.

El sonar-maven-plugin 2.6 usa sonar-runner 2.4, que es muy diferente de 2.5 que utiliza el sonar-maven-plugin 2.7 (el groupId para sonar-runner ha cambiado los dominios de org.codehaus.sonar.runner a org.sonarsource.sonar-runner ), por lo que es mejor seguir con el complemento v2.6 hasta que hayan suavizado la transición y lanzado algunas versiones más.


Se resolvió degradando la última versión (2.7) seleccionada automáticamente a una versión anterior (2.4) agregando este código a la sección de complementos de mi pom.xml

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>2.4</version> </plugin>