使用 SDKMAN 自动切换 Java 版本:.sdkmanrc

34 阅读1分钟

在多项目、多 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 在实际工程中非常值得开启的一个特性。