如何从checkstyle插件检查中排除模块信息.java?

将文件添加到我的项目后,我的checkstyle插件开始失败,因为:module-info.java

[错误]未能在项目电子邮件上执行目标 org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (default-cli): 在 checkstyle 配置期间失败: 在分析文件 /home/xxx/IdeaProjects/blynk-server/notification/email/src/main/java/module-info.java 期间发生 NoViableAltException。意外的令牌:模块 -> [帮助 1]

我试过了

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

但是,它失败了:

[错误]未能在项目 blynk 上执行 goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (default-cli): 在 checkstyle 配置期间失败: 无法初始化模块 BeforeExecutionExclusionFileFilter - 无法实例化 'BeforeExecutionExclusionFileFilter' 类,也不可能将其实例化为 com.puppycrawl.tools.checkstyle.checks.annotation.BeforeExecutionExclusionFileFilter

在 maven-checkstyle-plugin 的 checkstyle 期间跳过文件的正确方法是什么?module-info.java


答案 1

不知道为什么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>

有关插件目标文档的更多信息。


答案 2

在ExecutionExclusionFileFilter之前,已在Checkstyle 7.2中添加。

但版本3.0.0(截至2018-04-01的最新版本)默认使用Checkstyle 6.18。maven-checkstyle-plugin

“Checkstyle”和“Checkstyle Maven Plugin”是不同的东西,有不同的发布周期。

您可能需要升级检查样式版本,如下所示:

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

之后,以及其他较新的Checkstyle功能(例如新检查)将被识别。BeforeExecutionExclusionFileFilter


推荐