Плагин проверки стиля Maven 2 версии 2.5 - Проблема с configLocation - PullRequest
7 голосов
/ 17 февраля 2010

Я использую плагин checkstyle в maven 2. Теперь я хочу переключить мой конфигурационный файл со стандартного на a) онлайн-файл или b) локальный файл. Я попробовал следующие две вещи, которые не сработали. Есть предложения?

A) Локальный файл, который находится прямо в папке моего проекта рядом с pom.xml

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

B) Удаленный файл, который хранится на сервере

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

В обоих случаях возникает ошибка, подобная этой:

[INFO] Произошла ошибка в Создание отчета в стиле контрольного стиля. внедренный ошибка: ошибка во время проверки стиля выполнение Не удалось найти ресурс 'Файл: checkstyle.xml'

.

Буду признателен за любую помощь!

Ответы [ 3 ]

6 голосов
/ 19 сентября 2011

Я пытался использовать версию 3.0.1 плагина Checkstyle и обнаружил, что configLocation не имеет никакого эффекта. Пробовал подход выше, но все равно не повезло.

Подводя итог, возможно, что приведенный выше ответ работает, но вам может потребоваться установить свойство checkstyle.config.location.

Используя -X для получения отладочной информации, я увидел:

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

Прокручивая дальше в журнале, похоже, что configLocation не устанавливается:

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

На основании этого сообщения я установил свойство в глобальном <properties> следующим образом:

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

Это сработало, но заставило плагин выдать исключение. После некоторого поиска в Google, я добавил следующее в файл конфигурации checkstyle:

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

Для полноты, последний шаг пришел от следующей Jira, помеченной как решенная в 2.8. Разница в том, что, похоже, он работает с пустым значением, избегая необходимости устанавливать свойство ${cachefile}:

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

6 голосов
/ 17 февраля 2010

Я видел несколько проблем, связанных с configLocation в Jira с версией 2.5 плагина (например, MCHECKSTYLE-129 или MCHECKSTYLE-131 ), а) и б) просто отлично работают с версией 2.4.

Итак, если вы не используете Maven 3, я предлагаю откат до 2.4 на данный момент:

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

или

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

В качестве примечания для многомодульной сборки рассмотрим Многомодульная конфигурация .

2 голосов
/ 14 февраля 2012

Может быть, полезно для кого-то еще, кто должен все еще найти обходной путь. Кстати, у меня была такая же проблема, и файл должен быть найден в /classes/.xml или папках отсюда. Но так как он смотрит сразу после папки проекта, я включил

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

Примечание: configLocation имеет L заглавных букв

Также вы можете определить глобальную переменную в среде и использовать здесь Примечание: это только обходной путь, он должен работать, как указано в приведенных выше строках.

...