Java基础、中级、高级、架构面试资料

Maven 4 要烂尾了?为啥还没有 GA?

JAVA herman 18浏览
公告:“业余草”微信公众号 AI 中转站提供免费体验,点击链接 https://unity2.ai/register?ref=3XTnndN2 进行访问,支持 Claude、ChatGPT、Gemini 等最新模型!关注业余草微信公众号,添加作者微信:xttblog2!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
【腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

今年以来,我在网上看到了大量的说 Maven 4 来了,或者说是要来了。

但是,喊了这么久,Maven 4 的正式版依旧没有发布。而且,距离 Maven 4 的 RC-5 发布已过去整整 8 个月,正式版依然“在路上”。从 2022 年 10 月的第一个 Alpha 算起,这个版本已经迭代了将近 4 年。再不正式 GA,时间不会是要追上 Java 的 Valhalla 项目的落地时间了吧。难度再大,也不可能比 Valhalla 项目的改动大吧。

所以,接下来,我们一起来看看 Maven 4 的正式版到底卡点在哪里?

发布历程

下面这个大致的发布时间线,涉及从 Alpha 到 RC-5。

  • Alpha 阶段(2022.10 – 2024.03):10 个 Alpha 版本,奠定新架构基础
  • Beta 阶段(2024.05 – 2024.10):3 个 Beta 版本,功能逐步稳定
  • RC 阶段(2024.11 – 2025.11):5 个 RC 版本,RC-5 后已停滞 8 个月

Maven 4 不会是要“烂尾”吧。

文章配图参见我的公众号:https://mp.weixin.qq.com/s/jfa3pbCT2yYNBzwQ9oVUdA

为什么 GA 迟迟不来?

Maven 4 一直迟迟不 GA,不是在等 Java,也不是再等 Valhalla 落地,而是面临着下面 4 点拦路虎。

插件生态迁移

这应该是 Maven 4 最大的一条拦路虎。

Maven 4 引入了全新的 v4 API,插件需要从旧的 Plexus/Sisu 依赖注入迁移到 Maven DI API。核心注解全面替换,@Mojo、@Parameter、@Component 都需要更新。模型对象变为不可变,MavenProject 被 Project 取代。这不是简单的版本升级,而是插件架构的重写。

Consumer POM 的反复调整

Maven 4 最核心的设计,Build POM 与 Consumer POM 的分离,在 RC 阶段经历了多次回退和重构。RC-5 中甚至默认关闭了 Consumer POM flattening,改为 opt-in 特性。这意味着这个被寄予厚望的特性在发布前夕仍在寻找最佳实践,社区对其稳定性存疑。

RC-5 已知 Bug 尚未修复

官方在 RC-5 发布说明中明确列出了多个已知问题,包括:Bean 配置系统的全局缓存 bug、v4 API 的并发问题、BOM 打包类型处理缺陷。这些问题都标记为“将在下个版本修复”,但 8 个月过去了,下一个版本仍未发布。

上游依赖与 IDE 集成滞后

Apache SIS 项目的董事会报告透露,NetBeans 对 Maven 4 的支持仍在开发中,Maven Compiler Plugin 等核心插件的重写也尚未完成。IDE 集成和核心插件的滞后,使得即使 Maven 4 GA 发布,开发者的实际使用体验也会大打折扣。

问题是,几方会不会这样僵住,Maven 4 不 GA,厂商支持也不积极,更何况现在都是资本说了算,没有利益,难以快速推进。

社区声音

不止我期待与吐槽,还有不少老外在社区里批评与焦虑并存。

  • Maven 4 的 Consumer POM 设计非常优雅,终于能把构建配置和依赖声明分开了。Spring Boot 的 BOM 管理会因此变得更干净。
  • RC-5 说是最后一个 RC,结果 8 个月没动静。Maven 3 从 2010 年用到现在,真的需要这么激进地换版本吗?
  • 我们维护的插件迁移到 Maven 4 API 工作量巨大,Plexus 注解全要重写,模型对象还变不可变了。社区插件作者的压力谁来考虑?
  • mvnup 升级工具确实帮了大忙,但只能处理 POM 层面的问题。插件层面的兼容性才是硬骨头,很多第三方插件根本还没开始适配。

总的来说,Maven 4 可能走了一个极端,演变的太激进了,以至于社区里不好同步跟上。

当前进度与计划

查看官方的进度与计划可知,推进的并不快。

项目状态备注
Maven Core 4.0.0RC-5最后一个 RC,已知 bug 待修复
Maven Compiler Plugin重写中支持新的 元素
Maven Surefire Plugin待升级尚未适配 Maven 4
Maven JAR Plugin待升级计划后续适配
NetBeans IDE 集成进行中Apache SIS 项目推动中
mvnup 升级工具可用支持 POM 自动迁移
OpenRewrite 迁移配方可用自动化迁移方案

RC-5 已经 8 个月了,下一次是 RC-6 还是正式 GA,不得而知。按照现在的情况来说,Java 27 发布了,Maven 4 正式版说不定还没有声音呢。

市场上,其实并没有多少老外尝鲜 Maven 4 的新版本,可能采用率还不如 JDK 26 呢。

Maven 4 新特性

Maven 4 可能是因为步子迈的太大了,扯着蛋了。

但,毫不夸张的说,它的新特性很有看点。

  • Consumer POM 分离。Build POM 保留构建配置,Consumer POM 仅包含依赖信息。发布到 Maven Central 时更干净,下游项目不再被构建噪音干扰。
  • BOM 打包类型。原生支持 BOM(Bill of Materials)打包,Spring Boot 和 Quarkus 等框架的依赖管理将更加规范,不再需要依赖 flatten-maven-plugin。
  • Maven Shell 交互模式。内置交互式 Shell,支持命令补全和增量构建,显著提升开发者体验,对标 Gradle 的交互式构建。
  • 并发构建优化。Reactor 改进和缓存优化(Mimir),大幅提升多模块项目的构建速度,企业级项目的构建时间有望显著缩短。

最后

Maven 4 看起来像一个老人了,行动非常缓慢。

我只能这样安慰到,它的延迟并非坏事。或许是为了反映出 Apache 软件基金会对待重大版本发布的审慎态度,宁可多花时间打磨,也不愿匆忙 GA 后让用户承担兼容性代价。

尤其是对于 Java 开发者而言,Maven 3 依然稳固可靠,Maven 4 的等待值得。当 GA 真正到来时,它带来的将是一个更清晰、更现代、更高效的 Java 构建生态。或许这一天,需要很久很久,也或许就是“明天”。

业余草公众号

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

本文原文出处:业余草: » Maven 4 要烂尾了?为啥还没有 GA?