在多项目、多 JDK 版本并存的开发环境中,频繁手动切换 Java 版本既繁琐又容易出错。
SDKMAN 提供的 Auto Env 机制,可以根据目录自动切换依赖版本,有效解决这一问题。
1️⃣ 开启 SDKMAN 自动环境切换
编辑 SDKMAN 配置文件:
~/.sdkman/etc/config
将以下配置项设置为 true:
sdkman_auto_env=true
该配置启用后,SDKMAN 会在进入目录时,自动检测当前目录(或父目录)中是否存在 .sdkmanrc 文件。
2️⃣ 使用
.sdkmanrc
声明项目依赖版本
在项目根目录下创建 .sdkmanrc 文件,例如:
java=11.0.28-zulu
该文件用于声明当前项目所需的 Java(或其他 SDK)版本。
3️⃣ 自动生效示例
假设 /a/b/c 目录中包含上述 .sdkmanrc 文件:
cd /a/b/c
进入该目录后,SDKMAN 会自动切换当前 shell 中的 Java 版本为:
11.0.28-zulu
无需手动执行 sdk use java ...,退出该目录后,环境会恢复为之前的版本。
4️⃣ 适用场景
- 多项目使用不同 JDK 版本(如 Java 8 / 11 / 17)
- 微服务或多仓库开发环境
- 团队协作中统一项目运行环境
- 本地开发与 CI 环境对齐
5️⃣ 小结
通过 sdkman_auto_env + .sdkmanrc 的组合:
- ✅ 实现 目录级 SDK 版本隔离
- ✅ 避免误用错误 JDK 版本
- ✅ 提升开发效率和环境一致性
这是 SDKMAN 在实际工程中非常值得开启的一个特性。