本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
【腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
0.9.0 是终点,1.0 是奢望,Spring CLI 还是的“烂尾”了。
今天,我打开 Spring 官网的 Projects 页面,滚动了一下,我在 Projects in the Attic 处看到了一个熟悉又陌生的名字Spring CLI。它曾是 Spring 官方寄予厚望的“开发者生产力神器”,却在 2025 年 5 月被正式归档,仓库设为只读,文档停止更新,甚至连 1.0 正式版都未曾发布。这背后到底发生了什么?
这个从被寄予厚望却最终“烂尾”的开发者工具 Spring CLI,在 Cli 大行其道的今天,它为什么烂尾了?背后有哪些决策与考量?为什么这个由 Spring 官方背书、VMware 支持的项目,会连 1.0 版本都等不到就被放弃?在 IDE 越来越智能、AI Cli 越来越火爆的今天,Spring Cli 这类命令行开发工具是否还有独立存在的价值?Spring CLI 工具与 Spring Boot CLI 是否存在冲突?它们的定位边界究竟在哪里?
下面,我们就一起带着这些问题,回顾一下 Spring CLI “短暂的一生”。
Spring CLI 是什么?
文章配图参见 https://mp.weixin.qq.com/s/NGu36kosYSI-VduIubflGg。
Spring CLI 是 Spring 官方推出的一个独立命令行工具,它核心目标是,提升开发者在新项目创建和现有项目功能扩展时的生产力。
根据官方文档的描述,它诞生的初衷,或者说它提供的三大核心能力如下。
boot new
一键克隆并重构项目。
spring boot new https://github.com/example/template my-project --package-name com.mycompany
通过 boot new 这个命令可以克隆一个外部项目模板,并自动将包名重构为你指定的名称,同时支持自定义 groupId、artifactId 和 version。
boot add
智能合并外部代码。
spring boot add jpa
boot add 这个命令会将外部项目的代码智能合并到当前项目中,包括:
- 依赖项的智能合并
- 插件配置的合并
- 注解和配置文件的合并
- 代码包结构的重构
提供团队级自动化
通过用户自定义 commands 提供团队级自动化。
开发者可以在项目中定义声明式的命令脚本,实现类似“客户端 GitHub Actions”的体验。比如一键生成 Controller、添加依赖、配置文件等。
官方文档中特别强调了一种 Plain Old Java Projects 的方法论,让团队可以定义标准化的项目模板,新成员通过 README 就能快速上手。
Spring 生态两个 CLI
Spring CLI vs Spring Boot CLI,本质是它们不是同一个东西。
很多开发者容易混淆这两个项目,但实际上它们有着本质区别,如下表格所示。
| 维度 | Spring CLI | Spring Boot CLI |
|---|---|---|
| 定位 | 独立项目,专注项目模板化和代码生成 | Spring Boot 内置工具,快速运行 Groovy 脚本 |
| 核心命令 | boot new、boot add、自定义 commands | spring init、spring run、spring jar |
| 语言 | Java/Kotlin 项目为主 | 基于 Groovy 脚本 |
| 目标 | 企业级项目标准化、团队模板复用 | 快速原型开发、轻量级应用运行 |
| 状态 | 已归档 (2025.5) | 持续维护中 |
Spring Boot CLI 是 Spring Boot 的“亲儿子”,从 Spring Boot 1.0 就存在,基于 Groovy 实现,主打“用最少代码快速运行 Spring 应用”。它至今仍在活跃维护,最新版本已支持 Spring Boot 3.x。但也有点廉颇老矣。
而 Spring CLI 则是一个独立的实验性项目,试图解决的是另一个维度的问题,如何在团队层面实现项目模板的标准化复用。
时间线回顾
让我们梳理一下 Spring CLI 的关键时间节点,尤其是从立项到归档这段时间。如下表格所示。
| 时间 | 事件 |
|---|---|
| 2022-2023 | 项目启动并活跃开发,0.7.x 系列密集发布 |
| 2024 年 1 月 | 发布 0.8.0 / 0.8.1 版本 |
| 2024 年 5 月 23 日 | 发布 0.9.0,这也是最后一个稳定版本 |
| 2024 年 6 月 6 日 | 发布 0.10.0-SNAPSHOT,此后再无更新 |
| 2024 年6 月 – 2025 年 5 月 | 长达近一年的“静默期”,issue 无人处理 |
| 2025 年 5 月 14 日 | 仓库被官方归档,转入 Projects in the Attic |
值得注意的是,这个项目从未发布过 1.0 正式版,始终停留在 0.x 的实验阶段。GitHub 仓库的 README 上至今写着:
THIS REPOSITORY IS NO LONGER ACTIVELY MAINTAINED
Note: this is a work in progress.
一个“work in progress”的项目,最终却永远停留在了进行中。
为什么被放弃了?
Spring 官方并没有发布专门的“悼文”来解释归档原因,但结合社区讨论和项目现状,我们可以分析出以下几个核心因素:
定位模糊
尤其是与 Spring Boot CLI 的边界不清。
Spring CLI 和 Spring Boot CLI 名字过于相似,但功能却有交叉。很多开发者看到 spring boot add 这样的命令时,第一反应是“这和 Spring Boot 有什么关系?”这种命名上的混淆,导致项目始终没能建立清晰的用户心智。
社区采用率不足
一个开源项目的生死,很大程度上取决于社区 adoption。Spring CLI 虽然理念先进,但实际使用门槛并不低。
- 需要团队先定义和维护项目模板
- 需要学习一套新的命令体系
- 需要说服团队改变现有的开发流程
在大多数团队已经习惯使用 IDE(IntelliJ IDEA、VS Code)或 Spring Initializr 创建项目的今天,一个额外的 CLI 工具显得“可有可无”。
现代 IDE 的降维打击
2024-2025 年,IDE 的智能化程度已经远超几年前。
- Spring Initializr 集成在 IDE 中,一键创建项目
- GitHub Copilot 等 AI 工具可以直接生成代码
- IDE 的脚手架插件越来越丰富
Spring CLI 试图解决的“快速生成代码”问题,已经被更成熟的工具生态覆盖。
维护成本与资源分配
Spring 官方团队资源有限,面对众多活跃项目(Spring Boot、Spring Framework、Spring Cloud、Spring AI 等),一个采用率不高、定位模糊的项目自然会被优先“优化掉”。
未完成的功能债务
从 GitHub issue 中可以看到,项目在归档前积累了大量未解决的问题。
- 文档版本不匹配
- CLA(贡献者协议)链接 404
boot add --from url的访问令牌问题
这些技术债务在团队决定放弃维护后,再也没有被清理。
没有 1.0,也没有后续版本
用户提到“无 1.0 或后续版本的开发计划”,这其实是项目被归档的直接体现。
- 仓库已被转移到
spring-attic组织下 - 所有 issue 和 PR 被冻结(只读状态)
- 文档网站虽然还能访问,但不再更新
- 甚至连 1.0 版本都未曾发布,更遑论 5.0
这也非常符合 Spring 官方的“Projects in the Attic”策略,将不再活跃维护的项目移入“阁楼”,保留代码供历史参考,但不再投入资源。
给我们的启示
Spring CLI 的“陨落”给我们带来了几点思考。
其一是,工具的价值在于解决“痛点”,而非“痒点”。
Spring CLI 解决的是一个“锦上添花”的问题(让项目创建更方便),而非“雪中送炭”的痛点。在已有工具足够好用的情况下,新工具很难突围。
其二,命名和定位是产品的第一生命线。
如果当初项目能有一个更清晰的名字(比如 Spring Project Scaffolder)和更明确的定位,或许结局会不同。
第三,官方背书 ≠ 必然成功。
即使是 Spring 官方推出的项目,如果无法获得社区认可,最终也难逃被归档的命运。这提醒我们,技术选型时,不仅要看“谁做的”,更要看“谁在用”。
最后是及时止损是开源治理的成熟表现。
Spring 官方没有让这个项目“半死不活”地拖着,而是果断归档,将资源集中到更有价值的项目上。这种“断舍离”恰恰体现了成熟的开源治理理念。
结语
Spring CLI 的归档,不是 Spring 生态的“失败”,而是一次理性的“试错”。它尝试过用命令行工具解决团队级项目标准化的问题,虽然最终未能成功,但这种探索本身就值得尊重。
对于我们大多数普通开发者而言,Spring Boot CLI 仍然健在且活跃维护,如果需要基于 Groovy 快速原型开发,它依然是一个不错的选择。而如果需要项目模板化管理,或许可以考虑各种 ide 工具或脚手架。
- Cookiecutter(Python 生态的项目模板工具)
- Yeoman(Node.js 生态的脚手架工具)
- IDE 的 Live Templates 功能
- 团队内部的 Maven Archetype
技术世界没有永恒的“银弹”,只有不断迭代的工具和被解决的问题。Spring CLI 虽然烂尾了,但它留下的思考,依然值得我们回味。

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