2010-10-20 20 views
4

J'ai un fichier de vérification de checkstyle personnalisé (appelé checks.xml), et j'essaie d'utiliser ce même fichier dans maven et eclipse. Tout fonctionne bien, sauf pour le SuppressionFilter.maven eclipse checkstyle plugin

Dans ce fichier checks.xml, j'ai

<module name="SuppressionFilter"> 
    <property name="file" value="src/main/resources/checkstyle/checkstyle-suppressions.xml"/>  
</module> 

Cela fonctionne quand je lance par Maven. Cependant, quand je lance par éclipse, je dois changer la config être

<module name="SuppressionFilter"> 
    <property name="file" value="${basedir}/src/main/resources/checkstyle/checkstyle-suppressions.xml"/>  
</module> 

Si je cours avec le $ {basedir} propriété avec Maven bien, je reçois l'erreur que la propriété $ {basedir} n'a pas été ensemble.

Est-il possible d'utiliser ce même fichier de configuration dans maven et eclipse? Je me sens comme il devrait y avoir, mais je manque juste quelque chose sur la façon de remplir correctement le filtre de suppression.

grâce, Jeff

+0

Je pense que ma suggestion était juste hors de propos et je l'ai enlevé. –

Répondre

5

Bien sûr, il est un moyen d'utiliser le même fichier de configuration dans les deux maven et éclipser, mais il faut un peu la première configuration. J'ai écrit un blog sur la façon d'y parvenir, même pour un projet Maven multi-module. voir: maven-checkstyle-and-eclipse

-2

Vous pouvez essayer de définir ${basedir} comme une propriété dans votre pom. Voir les pom reference quick overview.

<property> 
      <name>basedir</name> 
      <value>${project.basedir}</value> 
</property> 
+5

basedir est déjà une propriété maven. J'ai ajouté un tag propertyExpansion à la configuration de maven checkstyle qui dit basedir = $ {basedir} et cela semble faire l'affaire. Il semble un peu étrange que je devrais faire ceci cependant. –

+0

@Jeff - Que 1 ligne a mis fin à deux jours de misère pour moi. Merci beaucoup! –

3

Ceci est l'enfer. Eclipse et Maven gèrent des suppressions différentes et ne partagent pas les variables. dérivé de Rolf Engelhard

Ainsi, dans pom.xml:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <version>2.8</version> 
    <configuration> 
    <propertyExpansion>config_loc=${basedir}/src/main/checkstyle</propertyExpansion> 
    <configLocation>${basedir}/src/main/checkstyle/checkstyle.xml</configLocation> 
     <suppressionsLocation>${basedir}/src/main/checkstyle/suppressions.xml</suppressionsLocation> 
    <includeTestSourceDirectory>true</includeTestSourceDirectory> 
    </configuration> 
    <executions> 
    <execution> 
     <phase>verify</phase> 
     <goals> 
     <goal>check</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

maintenant à checkstyle.xml ($ {} config_log est une chose spécifique Eclipse, mais en spécifiant dans le pom nous mettons à votre disposition Maven ainsi):

<module name="SuppressionFilter"> 
    <property name="file" value="${config_loc}/suppressions.xml" /> 
</module> 

et si vous utilisez maven-site-plugin ou tout autre plug-ins qui comptent également sur CheckStyle ne pas oublier de mettre à jour ceux dont la propriété config_loc aussi bien (ou déclarer globale à la pom, si je n'étais pas ble pour que cela fonctionne correctement).

1

<propertyExpansion>basedir=${session.executionRootDirectory}</propertyExpansion> fonctionne pour moi, mais seulement lorsqu'il est ajouté au nœud <plugin>, pas à <execution>!

project.basedir ne fonctionne pas bien dans les projets multi-modules, car il pointera vers le dossier sous-module à la place du dossier racine.