2010-02-17 10 views
7

Estoy usando checkstyle plugin en maven 2. Ahora quiero cambiar mi archivo de configuración, del predeterminado a a) un archivo en línea, o b) un archivo local. Intenté las dos cosas siguientes, que no funcionaron. ¿Alguna sugerencia?Maven 2 checkstyle plugin versión 2.5 - Problema con configLocation

A) de archivos local, que está directamente en mi carpeta del proyecto junto a la pom.xml

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

B) remota de archivos, que se almacena en el servidor

<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> 

Ambos casos resultan en un error como este:

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

¡Cualquier ayuda sería apreciada!

Respuesta

6

que he visto varias cuestiones relacionadas con configLocation en Jira con la versión 2.5 del plugin (como MCHECKSTYLE-129 o MCHECKSTYLE-131), tanto en a) yb) acaba de funcionar bien con la versión 2.4.

tanto, a menos que estés usando Maven 3, sugiero a revertir a 2.4 por ahora:

<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> 

Como nota al margen, por un multi-módulos de construcción, Eche un vistazo al Multimodule Configuration.

+0

Volviendo a la versión 2.4 resolvió el problema a), sin embargo el problema b) resiste. Seguí las instrucciones dadas en MCHECKSTYLE-129, que resolvió el problema b). Así que tengo el plugin checkstyle versión 2.5 con plexus-resources 1.0-alpha-7-SNAPSHOT y todo funciona bien. Gracias Pascal! –

+0

@Nils Weird, probé b) con su URL y funcionó para mí con 2.4. De todos modos, si lo resolvió con 2.5 agregando la dependencia plexus-resources, está bien :) –

5

He estado tratando de usar la versión 3.0.1 del complemento Checkstyle y encontré configLocation no tiene ningún efecto. Intenté el enfoque anterior, pero todavía no tuve suerte.

En resumen, la respuesta anterior probablemente funciona, pero es posible que deba establecer una propiedad checkstyle.config.location.

Usando -X para obtener resultados de depuración, vi:

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

desplazamiento más atrás en el registro, parece que configLocation no está siendo establecido:

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

Sobre la base de ese mensaje, Establecí la propiedad en el <properties> global de la siguiente manera:

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

Esto funcionó, pero provocó que el complemento arrojara una excepción. Después de algunas google, he añadido lo siguiente al archivo de configuración Checkstyle:

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

Para completar, el último paso procedían de la siguiente Jira, marcado como resuelto en 2,8. La diferencia es que parece que funciona con un valor vacío, evitando la necesidad de establecer una propiedad ${cachefile}:

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

+0

Tenía que poner "file: //" delante. file: // $ {basedir} /config/checkstyle-configuration.xml

1

Tal vez útil para otra persona que tiene que encontrar todavía una solución. Por cierto tuve el mismo problema y se supone que el archivo debe buscarse en /classes/.xml o carpetas desde aquí.Pero ya que está mirando directamente después de la carpeta del proyecto I incluyó

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

Nota: configLocation tiene L tapas

También se puede definir una variable global en el medio ambiente y utilizar aquí Nota: Esto es sólo una solución temporal, necesita funcionar como se indica en las líneas anteriores.

Cuestiones relacionadas