讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在 Maven 项目中禁止新代码使用特定类

冬伟酱_2464

冬伟酱_2464

发布时间:2026-02-04 12:22:07

|

574人浏览过

|

来源于php中文网

原创

如何在 Maven 项目中禁止新代码使用特定类

通过 checkstyle 的 `illegaltype` 规则可精准拦截新代码对指定类(如 `abc.something.mycomponent`)的引用,配合抑制配置(suppression)灵活豁免遗留代码,实现渐进式治理。

在 Java Maven 项目中,若需阻止新开发代码引入特定类(例如已标记为“遗留”的 abc.something.MyComponent),同时又不能立即清理全部历史调用,推荐采用 静态代码分析 + 构建时强制校验 的方案。相比 maven-enforcer-plugin(其擅长依赖约束而非源码级类型使用控制),Checkstyle 的 IllegalType 检查器更精准、轻量且开箱即用。

✅ 配置步骤

  1. 引入 Maven Checkstyle 插件(pom.xml):

    <build>
    <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-checkstyle-plugin</artifactId>
       <version>3.4.0</version>
       <configuration>
         <configLocation>checkstyle.xml</configLocation>
         <suppressionsLocation>suppressions.xml</suppressionsLocation>
         <failOnViolation>true</failOnViolation> <!-- 构建失败触发阻断 -->
         <includeTestSourceDirectory>true</includeTestSourceDirectory>
       </configuration>
       <executions>
         <execution>
           <id>check-style</id>
           <phase>compile</phase>
           <goals>
             <goal>check</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
    </plugins>
    </build>
  2. 定义核心规则(checkstyle.xml):

    windows-shell-syntax
    windows-shell-syntax

    在 Windows 上执行终端命令,或对比 Windows 与 Linux 的 Shell 语法时使用。建议先检测当前 Shell 是 PowerShell 还是 cmd.exe,再给出相应命令……

    下载
    <?xml version="1.0"?>
    <!DOCTYPE module PUBLIC
     "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
     "https://checkstyle.org/dtds/configuration_1_3.dtd">
    <module name="Checker">
    <module name="TreeWalker">
     <module name="IllegalType">
       <property name="illegalClassNames" value="abc.something.MyComponent"/>
       <property name="severity" value="error"/>
     </module>
    </module>
    </module>

    该配置将在编译阶段扫描所有 .java 文件,一旦发现 new MyComponent()、MyComponent.class、import abc.something.MyComponent 等直接引用即报错。

  3. 安全豁免遗留代码(suppressions.xml):

    <?xml version="1.0"?>
    <!DOCTYPE suppressions PUBLIC
     "-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
     "https://checkstyle.org/dtds/suppressions_1_2.dtd">
    <suppressions>
    <!-- 允许 legacy/ 目录下所有文件使用 MyComponent -->
    <suppress checks="IllegalType" files=".*[/\]legacy[/\].*.java"/>
    <!-- 或按具体类名精确豁免 -->
    <suppress checks="IllegalType" files="LegacyService.java" lines="42-45"/>
    </suppressions>
    ⚠️ 注意:suppressions.xml 路径需与插件配置中 suppressionsLocation 一致;文件路径支持正则,推荐用 [/\] 兼容 Windows/Linux。

? 补充说明

  • 作用范围明确:IllegalType 拦截的是 类型声明位置 的引用(变量声明、参数、返回值、泛型边界等),不覆盖反射调用(如 Class.forName("abc.something.MyComponent")),后者需结合 ForbiddenApis 插件增强。
  • 零侵入开发体验:IDEA/Eclipse 可通过 Checkstyle 插件实时高亮违规代码,开发者在编码阶段即可感知。
  • 渐进式演进:初始设 failOnViolation=false 仅生成报告,确认无误后再启用构建阻断,降低落地阻力。

综上,Checkstyle IllegalType 是平衡管控力度与迁移成本的最佳实践——它不修改运行时行为,却能在代码提交前守住架构边界。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

相关专题

更多
eclipse教程
eclipse教程

php中文网为大家带来eclipse教程合集,eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。php中文网还为大家带来eclipse的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

650

2023.06.14

eclipse怎么设置中文
eclipse怎么设置中文

eclipse设置中文的方法:除了设置界面为中文外,你还可以为Eclipse添加中文插件,以便更好地支持中文编程。例如,你可以安装EBNF插件来支持中文变量名,或安装Chinese Helper来提供中文帮助文档。本专题为大家提供eclipse设置中文相关的各种文章、以及下载和课程。

5466

2023.07.24

c语言编程软件有哪些
c语言编程软件有哪些

c语言编程软件有GCC、Clang、Microsoft Visual Studio、Eclipse、NetBeans、Dev-C++、Code::Blocks、KDevelop、Sublime Text和Atom。更多关于c语言编程软件的问题详情请看本专题的文章。php中文网欢迎大家前来学习。

8399

2023.11.02

Eclipse版本号有哪些区别
Eclipse版本号有哪些区别

区别:1、Eclipse 3.x系列:Eclipse的早期版本,包括3.0、3.1、3.2等;2、Eclipse 4.x系列:Eclipse的最新版本,包括4.0、4.1、4.2等;3、Eclipse IDE for Java Developers等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2804

2024.02.23

eclipse和idea有什么区别
eclipse和idea有什么区别

eclipse和idea的区别:1、平台支持;2、内存占用;3、插件系统;4、智能代码提示;5、界面设计;6、调试功能;7、学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

642

2024.02.23

eclipse设置中文全教程
eclipse设置中文全教程

本专题整合了eclipse设置中文相关教程,阅读专题下面的文章了解更多详细操作。

3526

2025.10.10

eclipse字体放大教程
eclipse字体放大教程

本专题整合了eclipse字体放大教程,阅读专题下面的文章了解更多详细内容。

3525

2025.10.10

eclipse左边栏不见了解决方法
eclipse左边栏不见了解决方法

本专题整合了eclipse左边栏相关教程,阅读专题下面的文章了解更多详细内容。

488

2025.10.15

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

60

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn