Как исключить module-info.java из проверок плагина checkstyle?

После добавления module-info.java Файлы в моем проекте мой плагин checkstyle начинают сбой с:

[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins:maven-checkstyle-plugin:2.17: проверка (default-cli) в электронном письме проекта: не удалось во время настройки контрольного стиля: возникла исключительная ситуация NoViableAltException во время анализа файла /home/xxx/IdeaProjects/blynk-сервер / сервер / уведомление / электронный / SRC / главный / Java / module-info.java. неожиданный токен: module -> [Help 1]

Я старался

<module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="module\-info\.java$"/>
</module>

Однако, это не удалось с:

[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins:maven-checkstyle-plugin:2.17: проверка (default-cli) в проекте blynk: Не удалось во время конфигурации checkstyle: не удалось инициализировать модуль BeforeExecutionExclusionFileFilter - Невозможно создать экземпляр класса BeforeExecutionExclusionFileFilter, также невозможно создать его экземпляр как com.puppycrawl.tools.checkstyle.checks.annotation.BeforeExecutionExclusionFileFilter

Как правильно пропустить module-info.java файлы во время проверки стиля для Maven-Checkstyle-плагин?

3 ответа

Решение

Не уверен, почему фильтр Checkstyle не работает (эта ошибка кажется очень похожей на вашу, и она была исправлена ​​в версии 7.3.0, поэтому, возможно, вам нужно обновить Checkstyle).

Во всяком случае, Maven excludes Элемент также должен сделать это:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <configuration>
        <excludes>**/module-info.java</excludes>
    </configuration>
</plugin>

Больше в документации по целям плагина.

BeforeExecutionExclusionFileFilter был добавлен в Checkstyle 7.2.

Но maven-checkstyle-plugin версия 3.0.0 (последняя версия на 2018-04-01) использует Checkstyle 6.18 по умолчанию.

"Checkstyle" и "Checkstyle Maven Plugin" - разные вещи и имеют разные циклы выпуска.

Вы можете обновить версию Checkstyle следующим образом:

<plugin>
  <artifactId>maven-checkstyle-plugin</artifactId>
  <version>3.0.0</version> <!-- Checkstyle Plugin version -->

  <!-- ... Configuration, Executions ... -->

  <dependencies>
    <dependency>
      <groupId>com.puppycrawl.tools</groupId>
      <artifactId>checkstyle</artifactId>
      <version>8.8</version> <!-- Checkstyle version -->
    </dependency>
  </dependencies>
</plugin>

После этого, BeforeExecutionExclusionFileFilter а также другие более новые функции Checkstyle (например, новые проверки) будут распознаваться.

Хотя это не может быть квалифицировано как ответ. Тем не менее, будучи слишком длинным, чтобы уместиться в комментариях, просто чтобы записать трек, что maven-checkstyle-plugin в:-

  • Последний выпуск был версии 2.17 15 октября 2015 года, который был почти 2 года назад.
  • Текущий ствол maven-плагинов указывает на текущую работу в плагине в его 3.0.0-SNAPSHOT версия, которая может означать, что вскоре мы можем ожидать org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0 когда-нибудь в ближайшем будущем и который бы понял module-info.java как класс.
  • Это не согласуется с документом Java + 9 + - + Jigsaw, в котором указан список модулей и плагинов, которые обновляются для поддержки JDK-9.
Другие вопросы по тегам