15

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

[错误] 无法执行目标 org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (default-cli) on project email: Failed during checkstyle configuration: 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-plugin:2.17:check (default-cli) on project blynk: checkstyle 配置期间失败:无法初始化模块 BeforeExecutionExclusionFileFilter - 无法实例化“BeforeExecutionExclusionFileFilter”类,也不可能将其实例化为 com.puppycrawl.tools.checkstyle.checks.annotation.BeforeExecutionExclusionFileFilter

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

4

3 回答 3

16

不知道为什么 Checkstyle 过滤器不起作用(这个报告的错误似乎与您的非常相似,并且已在版本 7.3.0 中修复,因此您可能需要更新 Checkstyle)。

无论如何,Mavenexcludes元素也应该这样做:

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

插件目标文档中的更多内容。

于 2017-09-29T19:22:18.593 回答
8

BeforeExecutionExclusionFileFilter在 Checkstyle 7.2 中添加。

但是maven-checkstyle-plugin3.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 功能(例如新检查)将被识别。

于 2018-04-01T19:03:15.343 回答
4

尽管这不可能作为答案。然而太长了,无法发表评论,只是为了记下它所在的轨道maven-checkstyle-plugin:-

  • 一个版本2.17是2015 年 10 月 15 日的版本,几乎是 2 年前的版本。
  • 当前的 maven-plugins 主干指向插件在其3.0.0-SNAPSHOT版本中正在进行的工作,这可能意味着我们很快可以期待org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0在不久的将来的某个时间,并且可以将其理解module-info.java为一个类。
  • 这与指定升级以支持 JDK-9 的模块和插件列表的Java+9+-+Jigsaw文档不一致。
于 2017-09-29T20:04:20.317 回答