web-dev-qa-db-fra.com

erreur de construction du plug-in sonar maven, version de SonarQube: null

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?

6
NotGaeL

Pour ceux qui s'intéressent à "pourquoi?", J'ai encore creusé et ce qui semble se passer est la suivante:

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.

6
Kenney

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>
7
NotGaeL

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é.

5
Duarte Meneses

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)

2
nick wouters

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

0
Aaron Digulla

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.

0
99Sono