SDKMAN 是一款管理 java 体系中的各类 SDK 版本的工具,可以用于大多数基于 Uinx 的系统
入门
安装
macOS/Linux
1 | curl -s "https://get.sdkman.io" \| bash |
Windows 需要 (WSL Approach) 或者 (Git Bash Approach)
1 | curl -s "https://get.sdkman.io" \| bash |
初始化 SDKMAN
1 | source "$HOME/.sdkman/bin/sdkman-init.sh" |
查看 sdkman 是否安装成功
1 | $ sdk version |
获取帮助
您可以通过运行以下命令获得基本帮助:
1 | $ sdk help |
这将提供一个有用的顶级帮助页面。您可以向该命令添加限定符以获得有关特定子命令的帮助
1 | $ sdk help install |
查看
列出所有可用的 SDKs
1 | sdk list |
查看当前使用的 SDK
1 | $ sdk current |
查看特定 SDK 的版本列表(例如,Java)
1 | $ sdk list java |
安装卸载
安装特定版本的 SDK(例如,Java)
1 | $ sdk install java <version> |
使用已安装的 SDK(例如,Java)
1 | $ sdk use java <version> |
使用已安装的 SDK(例如,Java)
1 | $ sdk use java <version> |
卸载 SDK(例如,Java)
1 | $ sdk uninstall java <version> |
列出所有已安装的 SDKs
1 | $ sdk list installed |
删除一个指定版本
1 | $ sdk uninstall scala 3.4.1 |
更新
更新 SDKMAN 自身
1 | $ sdk selfupdate |
更新已安装的 SDKs
1 | $ sdk update |
设置默认的 SDK 版本(例如,Java)
1 | $ sdk default java <version> |
帮助
查看 SDKMAN 所有可用的命令
1 | $ sdk help |
这些命令可以帮助你安装、管理和使用不同版本的 SDK,如 Java、Groovy、Gradle、Maven 等。
安装本地版本
使用快照版本?已经在本地安装了吗?通过指定本地安装的路径来安装本地版本:
1 | $ sdk install groovy 3.0.0-SNAPSHOT /path/to/groovy-3.0.0-SNAPSHOT |
1 | $ sdk install java 17-zulu /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home |
使用版本
查看已安装的 SDKs**:
1 | $ sdk list installed |
切换使用特定版本的 SDK(例如,Java):
1 | $ sdk use java <version> |
设置默认使用的 SDK 版本(例如,Java):
1 | $ sdk default java <version> |
查看当前使用的版本
要查 sdk 当前使用的版本:
1 | sdk current java |
要查看所有 sdk 当前使用的版本:
1 | sdk current |
配置 ENV
切换到特定的 JDK 或 SDK,通过项目基本目录中的 .sdkmanrc
文件来实现。执行下面命令自动生配置文件:
1 | $ sdk env init |
现在已经在当前目录中创建了一个包含以下内容的配置文件:
1 | Enable auto-env through the sdkman_auto_env config |
切换到 .sdkmanrc
文件中的配置,只需发出以下命令:
1 | $ sdk env |
通过下面命令,将 SDK 重置为默认版本
1 | sdk env clear |
安装 .sdkmanrc
配置文件中指定丢失的 SDK
1 | sdk env install |
在 cd 到目录中时自动切换 SDK 版本,可以通过在 sdkman 配置中设置 sdkman_auto_env=true
来实现。请注意,这也会在离开目录时将任何特定于项目的SDK重置为默认版本。
升级版本
升级特定 SDK 到最新版本
1 | sdk upgrade springboot |
要查看所有 SDK 的过时内容:
1 | sdk upgrade |
SDKMAN 版本
1 | sdk version |
自动更新
安装新版本的 SDKMAN
如果可用
1 | $ sdk selfupdate |
通过将 force 参数传递给命令强制重新安装:
1 | $ sdk selfupdate force |
自动每日检查新版本的SDKMAN!也将代表用户执行。
Home
获取 SDK 所在位置的绝对路径
1 | sdk home java 21.0.2-tem |
Flush
应该很少需要刷新 SDKMAN
。flush 命令有助于实现这一点,因此您不需要删除任何目录。
1 | $ sdk flush |
手动删除像 .sdkman/tmp
目录这样的目录会破坏 sdkman!请始终使用 flush 命令!
离线模式
启用强制脱机模式
1 | sdk offline enable |
重新启用联机模式
1 | sdk offline disable |
离线模式下显示当前安装的和活动的版本:
1 | sdk list groovy |
当互联网可用/不可用时,离线模式也将自动禁用/启用。当然,需要互联网连接的命令不会起作用,但会发出警告。
更新
当 SDK 元数据可能变得过时时,会显示一条警告,并说明如何更新。
1 | WARNING: SDKMAN is out-of-date and requires an update. |
只需运行以下命令,就可以刷新 SDK 缓存,并且可以安装新的 SDK 缓存:
1 | sdk update |
定期更新 SDKMAN
需要更新以了解新的(或已删除的)SDK。
配置
可以在 ~/.sdkman/etc/config
文件中找到配置。要编辑配置,可以发出 sdk-config
命令在系统编辑器中编辑此文件。以下配置可用:
1 | # 使 sdkman 成为非交互式的,适用于 CI 环境 |