You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将源码根目录下的文件排除在Maven Checkstyle插件检查外?

解决Maven Checkstyle插件排除根目录LICENSE/NOTICE文件的问题

嘿,我来帮你搞定这个困扰!你遇到的问题大概率是因为Maven Checkstyle插件对非Java文件的处理逻辑和普通类文件不一样——虽然你参考了排除类的配置,但针对根目录的LICENSE.txt、NOTICE.txt这类非源码文件,常规的<excludes>可能因为路径匹配或插件的文件扫描规则没生效,尤其是在Apache Commons FileUpload这种有统一代码规范的项目里。

给你两个针对性的解决方案,你可以试试:

方案一:精准调整<excludes>路径匹配

首先确认你的LICENSE/NOTICE文件位置:如果它们在项目根目录,试试把配置改成这样,同时明确限定需要检查的文件类型,避免插件扫描到所有文本文件:

<configuration>
  <!-- 先指定要检查的文件类型,缩小扫描范围 -->
  <includes>**/*.java,**/*.properties,**/*.xml</includes>
  <!-- 排除根目录的目标文件 -->
  <excludes>LICENSE.txt,NOTICE.txt</excludes>
</configuration>

如果文件是放在src/main/resources下,就把排除路径改成src/main/resources/LICENSE.txt,src/main/resources/NOTICE.txt。

方案二:在Checkstyle规则文件中直接过滤文件

如果方案一还是没效果,那可能是项目的Checkstyle规则里针对所有文本文件都开启了许可证头检查,这时候直接在Checkstyle的规则配置文件(比如checkstyle.xml)里添加前置过滤:

<module name="Checker">
  <!-- 执行检查前就过滤掉指定文件 -->
  <module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="LICENSE.txt|NOTICE.txt"/>
  </module>
  <!-- 下面是原有的其他规则模块 -->
</module>

这个配置会让Checkstyle在开始检查前就跳过这两个文件,从根源上避免触发许可证头警告。

另外提一句:Apache Commons系列项目大多继承了 Commons Parent POM,里面有统一的Checkstyle配置,你可以看看项目里的父POM或者已有的checkstyle.xml,说不定能找到更贴合项目规范的排除方式~

内容的提问来源于stack exchange,提问作者Kalle Richter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:28:05