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

时间:2017-09-29 19:15:23

标签: java maven maven-plugin java-9 maven-checkstyle-plugin

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

  

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

我试过

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

然而,它失败了:

  

[错误]无法执行目标   org.apache.maven.plugins:Maven的CheckStyle的-插件:2.17:检查   项目blynk上的(default-cli):在checkstyle期间失败   配置:无法初始化模块   BeforeExecutionExclusionFileFilter - 无法实例化   &#39; BeforeExecutionExclusionFileFilter&#39;上课,也是不可能的   将其实例化为   com.puppycrawl.tools.checkstyle.checks.annotation.BeforeExecutionExclusionFileFilter

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

3 个答案:

答案 0 :(得分:14)

不确定为什么Checkstyle过滤器不起作用(这个reported 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>

plugin goal文档中的更多内容。

答案 1 :(得分:5)

在Checkstyle 7.2中添加了

BeforeExecutionExclusionFileFilter

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

&#34; Checkstyle的&#34;和&#34; Checkstyle Maven插件&#34;是不同的东西,有不同的发布周期。

您可能需要upgrade the Checkstyle version,如下所示:

<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功能(例如新检查)。

答案 2 :(得分:4)

虽然这不是一个可以作为答案的资格。然而,为了记录maven-checkstyle-plugin所在的曲目,请注意太长而无法评论: -

  • 版本2.17的{​​{3}}于2015年10月15日,差不多2年了。
  • maven-plugins的当前主干在其last release版本中指向插件中正在进行的工作,这可能意味着我们很快就会在不久的将来某个时间期待org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0,这将会理解{{ 1}}作为一个班级。
  • 这与3.0.0-SNAPSHOT doc不一致,后者指定了正在升级以支持JDK-9的模块和插件列表。