Mes versions de jenkins commencent tout juste à échouer avec ce message:
[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'est-ce que tout cela?
Pour ceux qui s'intéressent à "pourquoi?", J'ai encore creusé et ce qui semble se passer est la suivante:
RunnerBootstrapper tente de vérifier si une version est 5.2+:
Tout d'abord, serverVersion est récupéré depuis un programme de lancement créé dans EmbeddedRunner ,
en utilisant IsolatedLauncher créant un proxy de classe d'implémentation BatchIsolatedLauncher
which tente de lire un fichier de ressources sq-version.txt
contenant la version.
Ce fichier sq-version.txt
se trouve dans org.codehaus.sonar: sonar-plugin-api , mais cette dépendance n'est pas incluse (même de manière transitoire) dans le sonar-maven-plugin . Sonar seul est référencé par org.sonarsource.sonar-runner: sonar-runner-api .
Ils semblent ont changé l’emplacement et le nom du fichier txt de la version mais n’ont pas mis à jour tout le code. Vous pourriez vous en tirer en ajoutant manuellement un sq-version.txt
avec content 5.2
(sans nouvelle ligne) au chemin d'accès aux classes du plugin (éventuellement en mettant à jour le fichier jar du plugin), ou en ajoutant une dépendance à sonar-plugin-api, mais ce sont des bidouilles.
Sonar-maven-plugin 2.6 utilise sonar-runner 2.4, qui est très différent de la version 2.5 utilisée par sonar-maven-plugin 2.7 (le groupId de sonar-runner a a changé de domaine de org.codehaus.sonar.runner
à org.sonarsource.sonar-runner
), donc il est préférable de s'en tenir au plug-in v2.6 jusqu'à ce qu'ils aient lissé la transition et publié quelques versions supplémentaires.
Résolu en rétrogradant la dernière version (2.7) sélectionnée automatiquement en une version plus ancienne (2.4) en ajoutant ce code à la section plugins de mon pom.xml
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.4</version>
</plugin>
La manière dont la version du serveur SonarQube est passée à maven-sonar-plugin
a changé dans la v2.7, entre autres choses, puisqu'elle utilise maintenant sonar-runner 2.5
.
Il y a effectivement un bogue lors de son utilisation avec des instances SonarQube <4.3, pour lesquelles j'ai ouvert le ticket: https://jira.sonarsource.com/browse/MSONAR-131
Notez que les fichiers SQ <4.5 ( LTS _ actuels) ne sont plus pris en charge activement et rien ne garantit que sonar-maven-plugin
ne sera pas incompatible avec eux d'une autre manière en raison de la nouvelle interface exposée par sonar-runner 2.5
.
Dans ces cas, il est probablement préférable de verrouiller la version du plugin maven à la version 2.6 , comme déjà suggéré.
Nous avons eu le même problème au travail aujourd'hui, nous utilisons automatiquement la dernière version pour les plugins maven et sonar. Ce n’était pas facile de trouver le problème au début.
La réponse donnée par elcodedocle est correcte, mais je voudrais ajouter pour ceux qui utilisent maven avec sonar de manière automatisée qu'il s'agit également d'une solution:
org.codehaus.mojo: sonar-maven-plugin: 2.6: sonar
De cette façon, il fonctionne sur l'ancienne version 2.6 et je peux confirmer que cela fonctionne.
Il y a probablement un bug dans la version 2.7 et j'espère qu'il sera corrigé bientôt. C'était notre erreur:
[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
EDIT: Jetez un coup d’œil à ce post pour plus d’informations: Le plugin Jenkins Sonar cesse soudainement de fonctionner
Nous expliquons ici que la nouvelle version 2.7 du plug-in n’est plus compatible avec les projets Java 6. Vous pouvez également trouver une explication sur la façon de résoudre ce problème dans Jenkins si vous ne le connaissez pas. (mon explication était un peu courte)
C'est un indice:
[INFO] SonarQube version: null
Plus tard dans le code, Maven tente d'analyser ce numéro de version et échoue. Le code source est ici: https://github.com/mojohaus/sonar-maven-plugin/blob/master/src/main/Java/org/codehaus/mojo/sonar/bootstrap/RunnerBootstrapper.Java
À partir de la source du coureur SonarQube , elle est protégée par une instance de propriétés. Alors peut-être que le code n'a pas pu accéder au serveur ou que le serveur n'envoie pas ces données. Dur à dire.
Ce que je peux voir, c'est que le code a changé en 2.5. C'est probablement pourquoi 2.4 fonctionne toujours. Voyez ici comment clouer les versions: Le plugin Jenkins Sonar cesse soudainement de fonctionner
Découvrez la version de plug-in appropriée pour votre installation de sonar.
Exemple: Mvn org.codehaus.mojo: sonar-maven-plugin: 2.6: sonar
Cette version du plugin ne fonctionnera pas avec la dernière version du sonar, mais fonctionnera correctement contre un 4.1.2.