Maven 2 checkstyle Plugin versione 2.5 - Problema con configLocation
-
21-09-2019 - |
Domanda
Sto usando plug-in checkstyle Maven 2. Ora voglio cambiare il mio file di configurazione, da quella predefinita ad a) un file on-line, oppure b) un file locale. Ho provato le seguenti due cose, che lavorano entrambi di poco. Qualche suggerimento?
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 viene memorizzato sul 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 si traducono in un errore come questo:
[INFO] è verificato un errore in la generazione di report Checkstyle. Incorporato di errore: Impossibile durante checkstyle esecuzione Impossibile trovare risorse 'File: checkstyle.xml'.
Qualsiasi aiuto sarebbe apprezzato!
Soluzione
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, hanno uno sguardo al multimodulo Configurazione .
Altri suggerimenti
Ho cercato di utilizzare la versione 3.0.1 del plugin Checkstyle e trovato configLocation
non ha alcun effetto. Ho provato l'approccio di cui sopra, ma ancora senza fortuna.
In sintesi, la risposta di cui sopra probabilmente non lavoro, ma potrebbe essere necessario impostare una checkstyle.config.location
proprietà.
Utilizzando -X
per ottenere output di debug, ho visto:
[DEBUG] (f) configLocation = config/sun_checks.xml
Lo scorrimento più indietro nel registro, sembra configLocation
non è stato impostato:
<configLocation default-value="config/sun_checks.xml">${checkstyle.config.location}</configLocation>
In base a quel messaggio, ho impostato la proprietà nella <properties>
globale come segue:
<checkstyle.config.location>${basedir}/config/checkstyle-configuration.xml</checkstyle.config.location>
Questo ha funzionato, ma ha causato il plugin per 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 impostare una proprietà ${cachefile}
:
Forse utile per qualcun altro che ha bisogno di trovare ancora una soluzione. Tra l'altro ho avuto lo stesso problema e il file è supponiamo di essere cercato in /classes/.xml o cartelle da qui. Ma dal momento che guarda direttamente dopo la cartella di progetto ho incluso
<configuration>
<configLocation>src\main\resources\checkstyle-checker-dev.xml</configLocation>
</configuration>
Nota: configLocation ha caps L
Inoltre è possibile definire una variabile globale in ambiente e l'uso qui Nota:. Questa è solo una soluzione, ha bisogno di lavorare come indicato nelle linee sopra