Maven Enforcer 插件通过 DependencyConvergence 规则强制依赖版本收敛、requireJavaVersion/requireMavenVersion 约束运行环境、配合 dependencyManagement 和 CI 集成,实现构建早期自动拦截不合规依赖与环境。

直接在 pom.xml 里配置 maven-enforcer-plugin,就能在构建早期自动拦住不合规的依赖版本和 JDK 环境——不是靠人盯,而是让 mvn clean install 自己失败。
用 DependencyConvergence 规则锁死依赖版本
这个规则强制项目中所有路径引入的同一个依赖必须收敛到唯一版本。比如 log4j-core 出现在两个不同传递路径且版本不一致(2.17.1 和 2.20.0),构建立刻中断。
- 在父 POM 的
中声明插件,并启用DependencyConvergence - 配合
mvn dependency:tree -Dverbose可快速定位哪条依赖链带入了冲突版本 - 它不关心你写了什么 version,只看最终解析结果是否统一
用 requireJavaVersion 和 requireMavenVersion 约束运行环境
把 JDK 和 Maven 版本要求写进规则,构建时自动校验。比如要求 JDK 17+,用 JDK 11 执行 mvn compile 就会报错,彻底避免 UnsupportedClassVersionError。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
-
表示 17 及以上(含 17、18、21)[17,) -
同理[3.5.0,) - 支持范围语法:
[x,y)、[x,]、x(精确匹配)
配合 dependencyManagement 实现真正可控的版本统一
是声明,Enforcer 是守门人。光写管理块不够,得靠插件防止子模块偷偷写 version 或引入未授权版本。
- 父 POM 用
锁定 jackson-databind:2.15.3 - 子模块
里只写 groupId 和 artifactId,绝不出现 - 加
banDuplicatePomDependencyVersions规则,拦截手误覆盖行为
让 CI 流水线真正起作用
本地能过 ≠ 安全。必须把 Enforcer 检查嵌入 CI 步骤,失败就阻断 PR 合并或发布流程。
- 在 GitHub Actions 或 Jenkins 中加入
mvn enforcer:enforce - 显式加上
-Denforcer.skip=false,防止被意外跳过 - 可设
临时降级为警告(调试用),但上线前务必恢复默认 FAILWARN
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










