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:
RunnerBootstrapper intenta verificar si una versión es 5.2+:
En primer lugar, serverVersion se recupera de un iniciador creado en EmbeddedRunner ,
utilizando IsolatedLauncher creando un proxy de la clase de implementación BatchIsolatedLauncher
que intenta leer un archivo de recursos
sq-version.txt
contiene la versión.
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>