Плагин Maven 2 checkstyle версии 2.5 – проблема с configLocation

Я использую плагин 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>

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

[INFO] Произошла ошибка при создании отчета Checkstyle. Встроенная ошибка: сбой во время выполнения checkstyle. Не удалось найти ресурс «файл: checkstyle.xml».

Любая помощь будет оценена по достоинству!


person Nils Schmidt    schedule 17.02.2010    source источник


Ответы (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>

or

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

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

person Pascal Thivent    schedule 17.02.2010
comment
Возвращение к версии 2.4 действительно решило проблему а), однако проблема б) осталась. Я следовал инструкциям, данным в MCHECKSTYLE-129, что решило проблему b). Итак, у меня есть плагин checkstyle версии 2.5 с plexus-resources 1.0-alpha-7-SNAPSHOT, и все работает нормально. Спасибо Паскаль! - person Nils Schmidt; 17.02.2010
comment
@Nils Странно, я проверил b) с вашим URL, и у меня это сработало с 2.4. В любом случае, если вы решили это с помощью 2.5, добавив зависимость plexus-resources, это нормально :) - person Pascal Thivent; 17.02.2010

Я пытался использовать плагин Checkstyle версии 3.0.1 и обнаружил, что 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

person David Carboni    schedule 19.09.2011
comment
Пришлось поставить file:// впереди. ‹checkstyle.config.location›file://${basedir}/config/checkstyle-configuration.xml‹/checkstyle.config.location› - person Jan Goyvaerts; 13.10.2011

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

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

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

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

person AMKhan    schedule 14.02.2012