2015-10-22 19 views
6

miei Jenkins costruisce appena iniziato a fallire con questo messaggio:sonar errore di generazione Maven plug-in, la versione SonarQube: null

[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 

Che cosa è questa storia?

+0

Il suggerimento è qui 'Versione SonarQube: null', e indica che ComparableVersion (che ho scritto btw ;-)) è passato' null'. La versione è dichiarata nel tuo POM? – Kenney

+0

No. Come posso farlo? – NotGaeL

+0

(So come aggiungere esplicitamente il plugin sonar maven al mio pom, ma non riesco a trovare dove posizionare il parametro della versione SonarQube) – NotGaeL

risposta

6

Per chi è interessato a "perché?", ho fatto un po 'di scavo e quello che sembra accadere è questo:

Questo file sq-version.txt si trova in org.codehaus.sonar:sonar-plugin-api, ma questa dipendenza non è incluso (anche transitivamente) nella sonar-maven-plugin. Tutto ciò che fa riferimento al sonar è org.sonarsource.sonar-runner:sonar-runner-api.

Sembrano have changed the location and name of the version txt file ma non aggiornato tutto il codice. Si potrebbe farla franca con l'aggiunta manuale di sq-version.txt con il contenuto 5.2 (non di nuova riga) al percorso di classe del plugin (eventualmente aggiornando il jar del plugin), oppure aggiungere una dipendenza su sonar-plugin-api, ma questi sono hack.

Il sonar-maven-plugin 2.6 utilizza il sonar-runner 2.4, che è molto diverso da 2,5 che i sonar-maven-plugin 2,7 usi (la groupId per sonar-runner ha cambiato domini da org.codehaus.sonar.runner a org.sonarsource.sonar-runner), in modo da è meglio attenersi al plugin v2.6 fino a quando non hanno appianato la transizione e rilasciato altre versioni.

7

risolto effettuando il downgrade alla versione raccolti automaticamente più recente (2.7) per una più antica (2.4) con l'aggiunta di questo codice alla sezione plugin del mio pom.xml

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

Per noi, la versione 2.7 del plug-in sonar-maven ha esito negativo allo stesso modo, ma funziona con la versione 2.6. Qualche idea su quale sia la ragione? – Kaitsu

+1

vedere questo se si utilizza jenkins per attivarlo: http://stackoverflow.com/a/33297231/187950 – domi

0

Questo è un suggerimento:

[INFO] SonarQube version: null 

Più avanti nel codice, Maven tenta di analizzare questo numero di versione e fallisce. Il codice sorgente è qui: https://github.com/mojohaus/sonar-maven-plugin/blob/master/src/main/java/org/codehaus/mojo/sonar/bootstrap/RunnerBootstrapper.java

Da source of the SonarQube runner, questo è supportato da un'istanza di proprietà. Quindi forse il codice non ha potuto accedere al server o il server non sta rinviando questi dati. Difficile da dire.

Quello che posso vedere è che il codice è cambiato in 2.5. Questo è probabilmente il motivo per cui il 2.4 funziona ancora. Vedi qui come inchiodare le versioni: Jenkins Sonar plugin suddenly stops working

+1

Direi che il server non restituisce la versione. Per quanto ne so, la versione del server Sonarqube viene interrogata grazie a "BatchIsolatedRunner.getVersion" https://github.com/SonarSource/sonar-runner/blob/master/sonar-runner-batch/src/main/java/org /sonar/runner/batch/BatchIsolatedLauncher.java –

+0

Piuttosto possibile. Non ho una configurazione locale, quindi non posso eseguire il debug di ATM. –

+1

Bug confermato. Vedi answer http://stackoverflow.com/a/33386209/737790 –

2

Abbiamo avuto lo stesso problema al giorno d'oggi, utilizziamo automaticamente l'ultima versione per i plug-in Maven e Sonar. All'inizio non è stato facile trovare il problema.

L'elcodedocle risposta ha dato è corretto, ma vorrei aggiungere per coloro che utilizzano Maven con il sonar in modo automatico che si tratta di una soluzione di aswell:

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

In questo modo viene eseguito sulla versione precedente 2.6 e posso confermare che funziona.

C'è probabilmente un bug in 2.7 e spero che venga risolto presto. Questo è stato il nostro errore:

[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: Date un'occhiata a questo post per qualche informazione in più: Jenkins Sonar plugin suddenly stops working

Qui è spiegato che la nuova versione, 2.7, del plugin non è più compatibile è con progetti java 6. Puoi anche trovare una spiegazione su come risolverlo in Jenkins se non hai familiarità con esso. (la mia spiegazione era un po 'breve)

5

Il modo in cui è passata la versione del server SonarQube a maven-sonar-plugin è stato modificato in v2.7, insieme ad altre cose, poiché ora utilizza sonar-runner 2.5.

V'è infatti un errore quando lo si usa con le istanze SonarQube < 4.3, per il quale ho aperto il biglietto: https://jira.sonarsource.com/browse/MSONAR-131

Nota che SQs < 4,5 (corrente LTS) sono non supportati più attivamente e non v'è alcuna garanzia che sonar-maven-plugin non sarà incompatibile con loro in altri modi a causa della nuova interfaccia esposta da sonar-runner 2.5.

Per questi casi, è probabilmente meglio per bloccare la versione del plug-in maven su 2.6, come già suggerito.

+0

Sto usando le seguenti versioni. Ho anche provato a menzionare la versione nell'obiettivo, ma ho ancora riscontrato il problema. SonarQube: v 4.5.1, java: v 1.7.0, sonar-maven-plugin: 3.0.2 (predefinito). Ho anche provato a menzionare la versione precedente nell'obiettivo come: org.sonarsource.scanner.maven: sonar-maven-plugin: 2.0.6: sonar –

0

Scopri la versione plug-in appropriata per l'installazione di sonar in esecuzione.

E.g. mvn org.codehaus.mojo: sonar-maven-plugin: 2.6: sonar

Questa versione del plug-in non funziona contro l'ultima versione del sonar, ma funzionerà benissimo con un 4.1.2.