2010-02-17 14 views
7

Sto usando il plugin checkstyle in Maven 2. Ora voglio passare il mio file di configurazione, da quello predefinito a a) un file online, o b) un file locale. Ho provato le seguenti due cose, che non hanno funzionato entrambe. Eventuali suggerimenti?Maven 2 checkstyle plug-in versione 2.5 - Problema con configLocation

A) File locale, che è direttamente nella mia cartella del progetto accanto al pom.xml

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <configuration> 
     <configLocation>checkstyle.xml</configLocation> 
    </configuration> 
</plugin> 

B) file remoto, che è memorizzato su un server

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <configuration> 
     <configLocation>http://stud.hs-heilbronn.de/~nischmid/development/checkstyle-config.xml</configLocation> 
    </configuration> 
</plugin> 

In entrambi i casi il risultato in un errore come questo:

[INFO] An error has occurred in Checkstyle report generation. Embedded error: Failed during checkstyle execution Could not find resource 'file:checkstyle.xml'.

Qualsiasi aiuto sarebbe apprezzato!

risposta

6

Ho visto diverse questioni relative alla configLocation in Jira con la versione 2.5 del plugin (come MCHECKSTYLE-129 o MCHECKSTYLE-131), sia a) e b) solo funzionano bene con la versione 2.4.

Quindi, a meno che non si sta utilizzando Maven 3, suggerisco di rollback a 2.4 per ora:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <configLocation>checkstyle.xml</configLocation> 
    </configuration> 
</plugins> 

o

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <configLocation>http://stud.hs-heilbronn.de/~nischmid/development/checkstyle-config.xml</configLocation> 
    </configuration> 
</plugin> 

Come nota a margine, per un multi-moduli costruire, dai uno sguardo allo Multimodule Configuration.

+0

Il ritorno alla versione 2.4 ha risolto il problema a), tuttavia il problema b) resiste. Ho seguito le istruzioni fornite in MCHECKSTYLE-129 che risolvono il problema b). Quindi ho il plugin checkstyle versione 2.5 con plexus-resources 1.0-alpha-7-SNAPSHOT e tutto funziona bene. Grazie Pascal! –

+0

@Nils Stranamente, ho provato b) con il tuo URL e ha funzionato per me con 2.4. Ad ogni modo, se lo risolvessi con 2.5 aggiungendo la dipendenza da plesso-risorse, va bene :) –

5

Ho cercato di utilizzare la versione 3.0.1 del plug-in Checkstyle e ho trovato configLocation non ha alcun effetto. Ho provato l'approccio sopra, ma ancora senza fortuna.

Per riepilogare, la risposta sopra probabilmente funziona, ma potrebbe essere necessario impostare una proprietà checkstyle.config.location.

Utilizzando -X per ottenere output di debug, ho visto:

[DEBUG] (f) configLocation = config/sun_checks.xml 

Scorrimento più indietro nel registro, sembra configLocation non viene impostato:

<configLocation default-value="config/sun_checks.xml">${checkstyle.config.location}</configLocation> 

Sulla base di quel messaggio, Ho impostato la proprietà nel globale <properties> come segue:

<checkstyle.config.location>${basedir}/config/checkstyle-configuration.xml</checkstyle.config.location> 

Questo ha funzionato, ma ha causato il lancio di un'eccezione. Dopo un po 'Googling, ho aggiunto il seguente al file di configurazione checkstyle:

<module name="Checker"> 
    ... 
    <module name="TreeWalker"> 
    ... 
    <property name="cacheFile" value=""/> 

Per completezza, l'ultimo passo è venuto dal seguente Jira, contrassegnato come risolto in 2.8. La differenza è che sembra funzionare con un valore vuoto, evitando la necessità di istituire una proprietà ${cachefile}:

http://jira.codehaus.org/browse/MCHECKSTYLE-159

+0

Dovevo mettere "file: //" davanti però. file: // $ {} basedir /config/checkstyle-configuration.xml

1

Forse utile per qualcun altro che ha bisogno di trovare ancora una soluzione. Tra l'altro ho avuto lo stesso problema e il file deve essere cercato in /classes/.xml o nelle cartelle da qui.Ma dal momento che guarda direttamente dopo la cartella del progetto ho inserito

<configuration> 
<configLocation>src\main\resources\checkstyle-checker-dev.xml</configLocation> 
</configuration> 

Nota: configLocation ha L tappi

Inoltre è possibile definire una variabile globale in ambiente e utilizzare qui Nota: Questa è solo una soluzione, deve funzionare come indicato nelle righe precedenti.

Problemi correlati