本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
【腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
Maven 4 叫了很久了,但是一直没来。和现在的 DeepSeek V4 一样,媒体一直在说下周发布,到现在过了好几个下周了,还是没得到发布。
现在 Maven 4 是没等来,但 Apache Maven 团队正式发布了3.9.13版本。作为 3.9.x 系列的最新维护版本,这次更新虽然没有重磅新功能,但包含了重要的 Bug 修复和依赖升级,对于追求稳定性的生产环境来说,这是一次值得关注的迭代。
接下来,我们就一起来看看这个版本的发布,带来了什么?以及这个稳定增强版值得升级吗?
版本概览
文章配图参考https://mp.weixin.qq.com/s/I0I9mA9QTyLt1pMDMRccOA。
根据 Apache 官方发布说明 ,Maven 3.9.13 主要包含以下更新。
关键 Bug 修复
| 问题编号 | 修复内容 | 影响范围 |
|---|---|---|
#11711 | SecDispatcher 由旧版 Plexus DI 管理问题 | 密码安全解密模块 |
#11577 | MavenPluginJavaPrerequisiteChecker 正确处理 8/1.8 Java 版本 | 插件 Java 版本检查 |
小版本变化都不大。下面是针对这两个 bug 的重点解读。
- SecDispatcher 修复:解决了安全分发器(Security Dispatcher)在使用旧版 Plexus 依赖注入框架时的管理问题,提升了密码和敏感信息处理的安全性。
- Java 版本识别优化:修复了在检查插件 Java 前置条件时,对 Java 8(即
1.8和8两种写法)识别不一致的问题,避免了因版本号格式导致的插件兼容误判。
维护性更新
#11721:更新了default-bindings.xml中的默认 Maven 插件版本#11547:测试框架从 JUnit 4 迁移到 JUnit 5,移除了对TestCase的依赖
小调整,算是不痛不痒。
核心依赖升级
核心依赖升级几乎每次都有的常规操作。具体见下面这个表格。
| 组件 | 升级前版本 | 升级后版本 | 说明 |
|---|---|---|---|
Maven Resolver | 1.9.25/1.9.26 | 1.9.27 | 依赖解析引擎 |
sisu-maven-plugin | 0.9.0.M4 | 1.0.0 | Sisu 依赖注入 |
maven-parent | 45 | 47 | 父 POM |
ASM | 9.9 | 9.9.1 | 字节码操作库 |
plexus-testing | 2.0.2 | 2.1.0 | 测试框架 |
解决了什么核心问题?
这次的版本更新,主要解决了下面 3 个核心问题。我们一一展开来说。
问题 1,Java 8 版本检测的坑
看下面的场景复现。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
在 3.9.12 及更早版本中,如果你使用 1.8 作为 Java 版本,而某些插件内部使用 8 进行判断,可能会导致前置条件检查失败,抛出不兼容警告甚至构建中断。
3.9.13 修复后,Maven 现在能正确识别 1.8 和 8 是同一版本,消除了这类兼容性问题。
这个坑不知道有多少读者遇到过,结合社区里的一些文章来看,踩坑的文章阅读量还都是比较高的。
问题 2,安全解密模块的稳定性
SecDispatcher 是 Maven 用于处理服务器密码加密/解密的核心组件。此次修复解决了其在 Plexus DI 容器中的生命周期管理问题,避免了潜在的内存泄漏或解密失败风险,对使用settings-security.xml加密仓库密码的团队尤为重要。
问题 3,依赖解析性能与稳定性
Maven Resolver 升级到1.9.27,这是 Maven 的依赖解析引擎。该版本包含了多项性能优化和 Bug 修复,特别是在处理复杂传递依赖和快照版本时更加稳定。
谁应该升级?
官方强烈推荐的升级场景有下面 4 条。
- 使用 Java 8 的老项目。如果项目仍停留在 Java 8,且频繁遇到插件版本警告,3.9.13 能解决版本识别问题。
- 配置了仓库密码加密的企业环境。使用
mvn --encrypt-password加密 Nexus/Artifactory 密码的团队,安全模块修复降低了潜在风险。 - CI/CD 流水线使用 Maven 3.9.x。GitHub Actions、Jenkins、GitLab CI 等环境中,保持构建工具最新有助于减少技术债务。
- 遇到依赖解析异常的项目。如果构建过程中偶尔出现依赖下载失败、快照版本不更新等问题,Resolver 1.9.27 可能带来改善。
除了这些,如果你在使用 3.x 的版本过程中遇到了其它 bug,也建议升级到这个最新版本。
版本对比总结
下面这个版本是官方发布文档里整理的与上一个版本相比的版本对比,供大家参考!
| 特性 | 3.9.12 | 3.9.13 | 评价 |
|---|---|---|---|
| Java 8 兼容性 | 版本识别有歧义 | 完美支持 | 重要修复 |
| 安全模块稳定性 | 良好 | 更稳定 | 推荐升级 |
| 依赖解析引擎 | 1.9.25 | 1.9.27 | 性能优化 |
| 测试框架 | JUnit 4 | JUnit 5 | 现代化 |
| 新功能 | 无 | 无 | 维护版本 |
写在最后
Maven 3.9.13 是一个典型的稳定增强版。它没有颠覆性的新特性,但通过修复 Java 版本检测、安全模块管理和依赖解析等关键问题,进一步夯实了 3.9.x 系列的可靠性。
对于正在使用 3.9.x 的团队,建议尽快安排升级;对于仍在使用 3.6.x 或 3.8.x 的项目,这也是一个不错的契机,评估迁移到 3.9.x 系列的可行性。
毕竟,构建工具的稳定性,是整个研发效能的基石。

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » Maven 4.0 没来,3.9.13 抢先修了一波关键 Bug