maven-checkstyle-plugin自定义规则无法执行及配置报错求助
解决maven-checkstyle-plugin的LineLength模块属性错误问题
这个问题我之前踩过坑,根源就是插件版本和Google检查规则的版本不兼容!
问题分析
你用的是maven-checkstyle-plugin:3.1.0,这个版本内置的Checkstyle核心版本比较旧(对应Checkstyle 8.2),而你复制的google_checks.xml是基于更新的Checkstyle版本编写的——其中LineLength模块的fileExtensions属性是在Checkstyle 8.12之后才新增的,老版本根本不认识这个属性,所以才会抛出这个错误。
两种解决方案
方案1:升级maven-checkstyle-plugin版本(推荐)
直接把插件版本升级到支持该属性的版本,比如3.3.0(对应Checkstyle 8.45.1,完全兼容Google的检查规则)。修改后的插件配置如下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <!-- 升级到兼容的版本 --> <version>3.3.0</version> <configuration> <configLocation>checkstyle.xml</configLocation> <encoding>UTF-8</encoding> <consoleOutput>true</consoleOutput> <failsOnError>true</failsOnError> <linkXRef>false</linkXRef> </configuration> <executions> <execution> <id>validate</id> <phase>validate</phase> <goals> <goal>check</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
升级后不需要修改checkstyle.xml,直接执行mvn checkstyle:check就能正常运行。
方案2:修改checkstyle.xml适配老插件
如果不想升级插件,就手动修改你复制的checkstyle.xml,找到LineLength模块的配置,删掉fileExtensions属性。比如:
原来的配置:
<module name="LineLength"> <property name="max" value="100"/> <property name="fileExtensions" value="java,xml"/> </module>
修改后:
<module name="LineLength"> <property name="max" value="100"/> </module>
这样老版本的Checkstyle就能识别这个配置了。
验证
修改完成后,执行命令:
mvn checkstyle:check
应该就能顺利完成代码检查了。
内容的提问来源于stack exchange,提问作者Ruifeng Ma




