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

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

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

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

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

Оба случая приводят к такой ошибке:

[ИНФОРМАЦИЯ] При создании отчета Checkstyle произошла ошибка. Встроенная ошибка: сбой при выполнении стиля проверки. Не удалось найти файл ресурса: checkstyle.xml.

Любая помощь была бы признательна!

7
Nils Schmidt 17 Фев 2010 в 13:23

3 ответа

Лучший ответ

Я видел несколько проблем, связанных с 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>

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

6
Pascal Thivent 17 Фев 2010 в 15:02
Возврат к версии 2.4 действительно решил проблему a), однако проблема b) осталась. Я выполнил инструкции, приведенные в MCHECKSTYLE-129, которые решили проблему b). Итак, у меня есть плагин checkstyle версии 2.5 с plexus-resources 1.0-alpha-7-SNAPSHOT, и все работает нормально. Спасибо, Паскаль!
 – 
Nils Schmidt
17 Фев 2010 в 16:17
Странно, я тестировал б) с вашим URL, и у меня это сработало с 2.4. В любом случае, если вы решили это с помощью 2.5, добавив зависимость plexus-resources, это нормально :)
 – 
Pascal Thivent
17 Фев 2010 в 16:26

Я пытался использовать версию 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
David Carboni 19 Сен 2011 в 19:47
Однако пришлось поставить "file: //" впереди. file: // $ {basedir} /config/checkstyle-configuration.xml
 – 
Jan Goyvaerts
13 Окт 2011 в 13:57

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

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

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

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

2
AMKhan 14 Фев 2012 в 14:39