如何从 checkstyle 插件检查中排除 module-info.java?
How to exclude module-info.java from checkstyle plugin checks?
将 module-info.java
个文件添加到我的项目后,我的 checkstyle 插件开始失败:
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check
(default-cli) on project email: Failed during checkstyle
configuration: NoViableAltException occurred during the analysis of
file
/home/xxx/IdeaProjects/blynk-server/server/notifications/email/src/main/java/module-info.java.
unexpected token: module -> [Help 1]
我试过了
<module name="BeforeExecutionExclusionFileFilter">
<property name="fileNamePattern" value="module\-info\.java$"/>
</module>
然而,它失败了:
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check
(default-cli) on project blynk: Failed during checkstyle
configuration: cannot initialize module
BeforeExecutionExclusionFileFilter - Unable to instantiate
'BeforeExecutionExclusionFileFilter' class, it is also not possible to
instantiate it as
com.puppycrawl.tools.checkstyle.checks.annotation.BeforeExecutionExclusionFileFilter
在 maven-checkstyle-plugin 的 checkstyle 期间跳过 module-info.java
文件的正确方法是什么?
不确定为什么 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 文档中有更多内容。
尽管这可能不能作为答案。但是太长了,不适合发表评论,只是为了记下 maven-checkstyle-plugin
所在的曲目:-
- 2015 年 10 月 15 日
2.17
版本的 last release 几乎是 2 年前的事了。
- maven-plugins 的当前主干指向插件在其
3.0.0-SNAPSHOT
版本中正在进行的工作,这可能意味着我们很快可以期待 org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0
在不久的将来的某个时候,这将理解module-info.java
作为 class.
- 这与指定正在升级以支持 JDK-9 的模块和插件列表的 Java+9+-+Jigsaw 文档不一致。
BeforeExecutionExclusionFileFilter
已添加到 Checkstyle 7.2 中。
但是maven-checkstyle-plugin
版本3.0.0(截至2018-04-01的最新版本)默认使用Checkstyle 6.18。
"Checkstyle" 和 "Checkstyle Maven Plugin" 是不同的东西,有不同的发布周期。
您可能想要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 功能(例如新检查)将被识别。
将 module-info.java
个文件添加到我的项目后,我的 checkstyle 插件开始失败:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (default-cli) on project email: Failed during checkstyle configuration: NoViableAltException occurred during the analysis of file /home/xxx/IdeaProjects/blynk-server/server/notifications/email/src/main/java/module-info.java. unexpected token: module -> [Help 1]
我试过了
<module name="BeforeExecutionExclusionFileFilter">
<property name="fileNamePattern" value="module\-info\.java$"/>
</module>
然而,它失败了:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (default-cli) on project blynk: Failed during checkstyle configuration: cannot initialize module BeforeExecutionExclusionFileFilter - Unable to instantiate 'BeforeExecutionExclusionFileFilter' class, it is also not possible to instantiate it as com.puppycrawl.tools.checkstyle.checks.annotation.BeforeExecutionExclusionFileFilter
在 maven-checkstyle-plugin 的 checkstyle 期间跳过 module-info.java
文件的正确方法是什么?
不确定为什么 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 文档中有更多内容。
尽管这可能不能作为答案。但是太长了,不适合发表评论,只是为了记下 maven-checkstyle-plugin
所在的曲目:-
- 2015 年 10 月 15 日
2.17
版本的 last release 几乎是 2 年前的事了。 - maven-plugins 的当前主干指向插件在其
3.0.0-SNAPSHOT
版本中正在进行的工作,这可能意味着我们很快可以期待org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0
在不久的将来的某个时候,这将理解module-info.java
作为 class. - 这与指定正在升级以支持 JDK-9 的模块和插件列表的 Java+9+-+Jigsaw 文档不一致。
BeforeExecutionExclusionFileFilter
已添加到 Checkstyle 7.2 中。
但是maven-checkstyle-plugin
版本3.0.0(截至2018-04-01的最新版本)默认使用Checkstyle 6.18。
"Checkstyle" 和 "Checkstyle Maven Plugin" 是不同的东西,有不同的发布周期。
您可能想要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 功能(例如新检查)将被识别。