Uso il sonar 4.5.1 ed è compatibile con JDK 1.7 e versioni successive. Per i progetti che si trovano su JDK1.6 in Jenkins, voglio eseguire un'analisi sonar usando JDK1.7 . Per ottenere questo risultato con Jenkins, in obiettivi e opzioni maven, sto usando -Dsonar.java.source = jdk1.7.0_76 ma durante la compilazione sembra che jdk1.7.0_76 non venga selezionato per l'analisi del sonar. Sonar Analysis è ancora in corso con la versione 1.6 di JDK che è definita nella sezione JDK di Jenkins. Ciò si traduce nell'errore di compilazione: "Il plugin findbugs non è supportato con Java 1.6.0_26". Non voglio usare il sonar nell'azione post build perché genera un altro errore, quindi desidero fornire i dettagli del sonar solo negli obiettivi e nelle opzioni. Perché jdk1.7.0_76 non viene selezionato? Cosa mi manca? C'è un altro modo per fornire la versione JDK1.7?
(Modificato)
Il mio requisito: l'analisi di maven dovrebbe essere eseguita usando jdk 1.6 e l'analisi del sonar dovrebbe essere fatta con jdk 1.7 e successivi (l'analisi dell'ecoscandaglio è prevista negli obiettivi di Maven e nessuna azione di Sonar-postbuild è usata)
sotto Maven obiettivi e opzioni
clean install -Dmaven.test.skip = true -Dsonar.jdbc.url = jdbc: postgresql: //sonardb.test.com: 5555/sonar -Dsonar.host.url = http://localhost:9000/sonar -Dsonar.java.target = jdk1.8.0_40 -Dsonar.java.source = jdk1.8.0_40 org.codehaus.mojo: sonar-maven-plugin: 1.0: sonar -Dsonar.branch = test
Qui di seguito trovate le schermate
Fornitura della versione JDK in obiettivi e opzioni MAVEN
risposta
È necessario eseguire l'analisi con Java 7 o versioni successive. La proprietà sonar.java.source
indica semplicemente all'analizzatore la versione di Java con cui il codice è compatibile.
Sei libero di compilare il codice con Java 6 (o inferiore), ma lo scanner (se questo è SonarQube Scanner, SonarQube Scanner per Maven, ...) deve run con Java 7.
Date un'occhiata al vostro script mvn
:
# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
Questo cambiamento viene fatto a livello del proprio ambiente di Maven. Prima di avviare Maven, è necessario impostare la variabile di ambiente JAVA_HOME
nella posizione di JDK versione 1.7.
Immagino che tu stia utilizzando un passaggio post-build execute shell
. Se stai usando bash
è sufficiente digitare JAVA_HOME="path to your JDK 1.7 home"
prima della riga che contiene il vostro comando mvn
nell'area command
testo della configurazione del processo Jenkins' come segue:
, per favore trova la domanda modificata con screenshot aggiunti. –
Se si desidera eseguire analisi utilizzando un jdk alternativo, è necessario utilizzare un passaggio post! – Kraal
Intendi dire che questo parametro non funziona: -Dsonar.java.target = jdk1.8.0_40 -Dsonar.java.source = jdk1.8.0_40 se fornito in Obiettivi e Opzioni? –
Anche se questa è una vecchia questione ancora rispondere a beneficio di altri:
Se si va a configurare la pagina del proprio lavoro e fare clic sul pulsante "Avanzate" per il plug-in Sonar, si avrà un'opzione per selezionare JDK per lo stesso come desplyed sotto selezionare JDK 7 che dovrebbe essere già configurato per il tuo Jenkins (per questo puoi andare a Gestire Jenkins):
Non sto utilizzando il sonar-runner qui. Come ho accennato nella mail, so che l'analisi dovrebbe essere eseguita con Java 7 o successivo, ma qual è il modo corretto (sintassi) di fornire gli obiettivi e le opzioni di Maven come quello che ho menzionato non viene accettato durante la compilazione. –
Potrebbe essere necessario aggiornare $ JAVA_HOME appena prima e subito dopo l'analisi –