2016-05-31 25 views
9

Desidero estendere sonar.sources, che per impostazione predefinita è pom.xml,src/main/java, per src/main/resources per controllare i file XML che si trovano lì.plug-in sonar-maven: estensione sonar.sources nel progetto multi-modulo

Questo compito apparentemente semplice si è rivelato difficile poiché ho un progetto Maven multi-modulo (> 100 moduli, nidificati) con molti di loro non hanno una cartella src/main/resources e la maggior parte di loro non ha nemmeno una cartella src (ad es. per imballaggio = pom). Questo porta ad un errore di generazione se ho impostato sonar.sources-pom.xml,src/main/java,src/main/resources o pom.xml,src/main:

[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli) on project xyz-parent: The directory 'C:\...\submodule\src\main\resources' does not exist for Maven module ... Please check the property sonar.sources -> [Help 1] 

Il sonar-maven-plugin stesso utilizza ${project.build.sourceDirectory} farlo nel modo giusto in ogni modulo.

ho cercato di usare le espressioni regolari per impostare sonar.sources-src/main tagliando /java (o \java su Windows) tramite

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.7</version> 
    <executions> 
    <execution> 
     <id>regex-property</id> 
     <goals> 
     <goal>regex-property</goal> 
     </goals> 
     <configuration> 
     <name>sonar.sources</name> 
     <value>${project.build.sourceDirectory}</value> 
     <regex>[/\\]+java$</regex> 
     <replacement></replacement> 
     <failIfNoMatch>false</failIfNoMatch> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

Ma questo non fa nulla e non ho idea di quale fase del ciclo di vita dovrei associarlo per averlo eseguito

Oppure esiste un modo per evitare l'errore dovuto alla directory mancante in sonar.sources? In base a current sonar-maven source le directory mancanti vengono ignorate solo se il POM ha la confezione pom ma non per i moduli ear o jar senza risorse.

O dovrei assicurarmi che src/main esista prima dell'inizio del sonar? Quale gancio posso usare per quello?

risposta

10

Una delle cose che si può fare:

  • Nella tua POM radice, definire le seguenti proprietà:
    • sonar.sources di essere .
    • sonar.inclusions di essere src/main/**
    • => questo includerà tutti i file conosciuti che SQ trova nei tuoi moduli nella cartella src/main se esiste
  • Nei vostri moduli, se si desidera controllare meglio ciò che entra, devi solo usare/sovrascrivere sonar.exclusions o sonar.inclusions
+1

Grazie! Ho impostato 'sonar.inclusions' su' pom.xml, src/main/** 'e funziona proprio come dovrebbe. Penso che sarebbe un miglioramento per la [documentazione] (http: //docs.sonarqube .org/display/SONAR/Analysis + Parameters) se 'sonar.exclusions' non sono stati discussi solo nel contesto di [Restringere il Focus] (http://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus). – vboerchers

Problemi correlati