如何从checkstyle插件检查中排除module-info.java?

Dmi*_*kiy 14 java maven-plugin maven java-9 maven-checkstyle-plugin

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

[错误]无法执行目标org.apache.maven.plugins:maven-checkstyle-plugin:2.17:检查(default-cli)项目电子邮件:在checkstyle配置期间失败:在分析文件/ home/xxx /期间发生NoViableAltException IdeaProjects/blynk服务器/服务器/通知/电子邮件/ src目录/主/ JAVA/module-info.java.意外令牌:模块 - > [帮助1]

我试过了

<module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="module\-info\.java$"/>
</module>
Run Code Online (Sandbox Code Playgroud)

然而,它失败了:

[错误]无法执行目标org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check(default-cli)on project blynk:checkstyle配置失败:无法初始化模块BeforeExecutionExclusionFileFilter - 无法实例化'BeforeExecutionExclusionFileFilter'类,也无法将其实例化为com.puppycrawl.tools.checkstyle.checks.annotation.BeforeExecutionExclusionFileFilter

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

man*_*uti 14

不确定为什么Checkstyle过滤器不起作用(这个报告的bug看起来与你的非常相似,它在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>
Run Code Online (Sandbox Code Playgroud)

更多插件目标文档.


Ale*_*rov 7

BeforeExecutionExclusionFileFilter 是在Checkstyle 7.2中添加的。

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

“ Checkstyle”和“ Checkstyle Maven插件”是不同的东西,并且具有不同的发布周期。

您可能要升级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>
Run Code Online (Sandbox Code Playgroud)

之后,BeforeExecutionExclusionFileFilter将识别其他较新的Checkstyle功能(例如,新的支票)。