2010-10-20 2 views
4

У меня есть файл чеков checkstyle (например checks.xml), и я пытаюсь использовать тот же файл как в maven, так и в eclipse. Все работает хорошо, за исключением SuppressionFilter.maven eclipse checkstyle plugin

В этом checks.xml файле, я

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

Это работает, когда я бегу через Maven. Однако, когда я бегу через затмение, мне нужно изменить конфиг быть

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

Если я бегу с $ {BASEDIR} недвижимости с Maven, хотя, я получаю ошибку, что свойство $ {имя_базовой_папки} не был задавать.

Есть ли способ использовать этот же конфигурационный файл как в maven, так и в eclipse? Я чувствую, что должно быть, но я просто что-то пропустил, как правильно заполнить фильтр подавления.

спасибо, Джефф

+0

Я думаю, что мое предложение было просто неуместным, и я удалил его. –

ответ

5

Конечно, есть способ использовать один и тот же файл конфигурации как в maven, так и в eclipse, но для этого требуется небольшая настройка. Я написал сообщение в блоге о том, как добиться этого даже для мультимодульного проекта maven. см.: maven-checkstyle-and-eclipse

-2

Вы можете попробовать определения ${basedir} как свойство в вашем ПОМ.
См. pom reference quick overview.

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

basedir уже является собственностью maven. Я добавил тег propertyExpansion в конфигурацию checkstyle maven, которая говорит basedir = $ {basedir}, и это похоже на трюк. Кажется немного странным, что мне нужно будет это сделать. –

+0

@Jeff - Эта 1 линия закончилась для меня двумя днями несчастья. Благодаря тонну! –

3

Это ад. Затмения Eclipse и Maven отличаются друг от друга и не разделяют переменные. производный от Rolf Engelhard

Так в 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> 

Сейчас в checkstyle.xml ($ {config_log} есть Eclipse, определенная вещь, но, указав его в ПОМ мы делаем его доступным для Maven а):

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

И если вы используете maven-site-plugin или любые другие плагины, которые также основаны на Checkstyle не забудьте обновить те, чтобы иметь свойство config_loc, а также (или объявить его глобальным к П, хотя я не смог заставить это работать должным образом).

1

<propertyExpansion>basedir=${session.executionRootDirectory}</propertyExpansion> работает для меня, но только при добавлении к узлу <plugin>, а не <execution>!

project.basedir не работает в многомодульных проектах, поскольку он указывает на папку подмодуля вместо корневой папки.