2016-04-05 22 views
5

Ho un progetto composto da diversi moduli.Maven SonarQube multi modulo

Sto cercando di analizzare questi con SonarQube.

Ho incluso il plugin Sonar Maven come una dipendenza in ogni modulo:

<dependency> 
    <groupId>org.codehaus.sonar</groupId> 
    <artifactId>sonar-maven-plugin</artifactId> 
    <version>5.1</version> 
</dependency> 

Poi sto correndo Maven usando:

mvn clean verificare sonar: sonar

Maven si completa correttamente e posso vedere l'analisi del sonar che si verifica tuttavia quando apro l'interfaccia utente Sonar, i moduli non sono visibili nei progetti.

Tuttavia ...

Se faccio funzionare l'ordine Maven da una directory singolo modulo, è visibile nei progetti.

Sentire mi manca qualcosa di molto semplice, apprezzare qualsiasi aiuto!

risposta

6

Invece di come dipendenza, mettere il sonar-maven-plugin nella sezione <build> della radice pom.xml, come segue:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.sonarsource.scanner.maven</groupId> 
      <artifactId>sonar-maven-plugin</artifactId> 
      <version>3.0.1</version> 
     </plugin> 
    </plugins> 
</build> 

E poiché è un progetto multi-modulo, si dovrebbe first perform an install from the root project and then run the sonar:sonar goal as a dedicated step, come segue:

mvn clean install 
mvn sonar:sonar 

Per configurare l'URL del server sonarqube, specify a project property of sonar.host.url nel vostro settings.xml o pom.xml come segue:

0.123.
<properties> 
    <!-- Optional URL to server. Default value is http://localhost:9000 --> 
    <sonar.host.url>http://myserver:9000</sonar.host.url> 
</properties> 
+0

Questo sembra aver funzionato. Avevo bisogno di cancellare i progetti Sonar che avevo creato durante l'esecuzione da un singolo modulo, ma seguendo questo posso vedere il progetto creato. Sembra anche che la v5.1 non sia disponibile come plugin, ho invece dovuto usare 2.7.1. Non è un esperto di Maven così insicuro perché questo è ...? – timothyclifford

+1

La versione di SonarQube Scanner per Maven non sta seguendo le versioni del server SonarQube. Si prega di controllare http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven#AnalyzingwithSonarQubeScannerforMaven-HowtoFixVersionofMavenPlugin –

+0

@timothyclifford Come menzionato da Julien H., il plugin Maven ha versioni separate da SonarQube stesso. Ho corretto la risposta per avere groupId/artifactId/version per l'ultima versione del plugin compatibile con SonarQube server v5.1. – heenenee

0

SonarQube supporta progetti multi-modulo proprio come fa Maven. Ciò significa che un progetto Maven contenente più moduli si associa a un progetto SonarQube che contiene più moduli/componenti, non più progetti.

Prendere codice SonarQube per esempio (si tratta di un progetto di Maven multi-modulo): i parent project aggregati per tutte le informazioni dal sotto-moduli, quindi se si controlla la sua structure (o la sua pagina di code) si può vedere la lista di tutti i sub- componenti (ad esempio: SonarQube::Core)

La linea di fondo è che si sta visualizzando il comportamento previsto. I sottomoduli di un progetto Maven non sono destinati ad essere analizzati come progetti, è sempre necessario analizzare il progetto principale e SonarQube gestirà i moduli in modo nativo.

+0

Nicolas, per favore, spiegami perché sono necessarie le invocazioni separate di esperti come i report @heenenee? Questo è contro-intuitivo e sembra contraddire il modo in cui Maven di solito lavora; ad esempio, non è necessario eseguire "mvn clean" e quindi "mvn install" separatamente, è sufficiente eseguire "mvn clean install". Grazie. – chrisinmtown

Problemi correlati