reference/docs/sdkman.md

390 lines
6.7 KiB
Markdown
Raw Normal View History

2024-04-03 12:37:06 +08:00
SDKMAN 备忘清单
====
2024-04-03 13:49:47 +08:00
[SDKMAN](http://sdkman.io) 是一款管理 java 体系中的各类 SDK 版本的工具,可以用于大多数基于 Uinx 的系统
2024-04-03 12:37:06 +08:00
入门
---
### 安装
2024-04-03 13:49:47 +08:00
macOS/Linux
```bash
curl -s "https://get.sdkman.io" \| bash
```
Windows 需要 (WSL Approach) 或者 (Git Bash Approach)
```bash
curl -s "https://get.sdkman.io" \| bash
```
初始化 SDKMAN
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
```
查看 sdkman 是否安装成功
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk version
```
2024-04-03 12:37:06 +08:00
### 获取帮助
您可以通过运行以下命令获得基本帮助:
2024-04-03 13:49:47 +08:00
```bash
$ sdk help
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
这将提供一个有用的顶级帮助页面。您可以向该命令添加限定符以获得有关特定子命令的帮助
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk help install
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
### 查看
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
列出所有可用的 SDKs
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
sdk list
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
查看当前使用的 SDK
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk current
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
查看特定 SDK 的版本列表例如Java
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk list java
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
### 安装卸载
<!--rehype:wrap-class=row-span-2-->
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
安装特定版本的 SDK例如Java
```bash
$ sdk install java <version>
2024-04-03 12:37:06 +08:00
```
2024-04-03 13:49:47 +08:00
使用已安装的 SDK例如Java
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk use java <version>
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
使用已安装的 SDK例如Java
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk use java <version>
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
卸载 SDK例如Java
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk uninstall java <version>
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
列出所有已安装的 SDKs
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk list installed
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
删除一个指定版本
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk uninstall scala 3.4.1
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
### 更新
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
更新 SDKMAN 自身
```bash
$ sdk selfupdate
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
更新已安装的 SDKs
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk update
2024-04-03 12:37:06 +08:00
```
2024-04-03 13:49:47 +08:00
设置默认的 SDK 版本例如Java
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk default java <version>
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
### 帮助
查看 SDKMAN 所有可用的命令
```bash
$ sdk help
```
这些命令可以帮助你安装、管理和使用不同版本的 SDK如 Java、Groovy、Gradle、Maven 等。
### 安装本地版本
使用快照版本?已经在本地安装了吗?通过指定本地安装的路径来安装本地版本:
```bash
$ sdk install groovy 3.0.0-SNAPSHOT /path/to/groovy-3.0.0-SNAPSHOT
2024-04-03 12:37:06 +08:00
```
2024-04-03 13:49:47 +08:00
<!--rehype:className=wrap-text-->
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk install java 17-zulu /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
```
<!--rehype:className=wrap-text-->
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
### 使用版本
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
查看已安装的 SDKs**
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk list installed
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
切换使用特定版本的 SDK例如Java
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk use java <version>
$ sdk use scala 3.4.1
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
设置默认使用的 SDK 版本例如Java
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk default java <version>
$ sdk default scala 3.4.1
```
2024-04-03 12:37:06 +08:00
### 查看当前使用的版本
要查 sdk 当前使用的版本:
```shell
$ sdk current java
Using java version 21.0.2-tem
```
要查看所有 sdk 当前使用的版本:
```shell
$ sdk current
Using:
groovy: 4.0.20
java: 21.0.2-tem
scala: 3.4.1
```
### 配置 ENV
2024-04-03 13:49:47 +08:00
<!--rehype:wrap-class=row-span-3-->
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
切换到特定的 JDK 或 SDK通过项目基本目录中的 `.sdkmanrc` 文件来实现。执行下面命令自动生配置文件:
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk env init
```
2024-04-03 12:37:06 +08:00
现在已经在当前目录中创建了一个包含以下内容的配置文件:
2024-04-03 13:49:47 +08:00
```shell
2024-04-03 12:37:06 +08:00
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=21.0.2-tem
```
2024-04-03 13:49:47 +08:00
<!--rehype:className=wrap-text-->
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
切换到 `.sdkmanrc`文件中的配置,只需发出以下命令:
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```bash
$ sdk env
# 您应该看到如下输出:
# Using java version 21.0.2-tem in this shell.
```
<!--rehype:className=wrap-text-->
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
通过下面命令,将 SDK 重置为默认版本
2024-04-03 12:37:06 +08:00
```shell
$ sdk env clear
```
2024-04-03 13:49:47 +08:00
安装 `.sdkmanrc` 配置文件中指定丢失的 SDK
2024-04-03 12:37:06 +08:00
```shell
$ sdk env install
```
2024-04-03 13:49:47 +08:00
在 cd 到目录中时自动切换 SDK 版本,可以通过在 sdkman 配置中设置 `sdkman_auto_env=true` 来实现。请注意这也会在离开目录时将任何特定于项目的SDK重置为默认版本。
2024-04-03 12:37:06 +08:00
### 升级版本
2024-04-03 13:49:47 +08:00
升级特定 SDK 到最新版本
2024-04-03 12:37:06 +08:00
```shell
$ sdk upgrade springboot
```
要查看所有 SDK 的过时内容:
```shell
$ sdk upgrade
```
### SDKMAN 版本
```shell
$ sdk version
SDKMAN!
script: 5.7.0
native: 0.1.3
```
2024-04-03 13:49:47 +08:00
### 自动更新
安装新版本的 `SDKMAN` 如果可用
```bash
$ sdk selfupdate
```
通过将 force 参数传递给命令强制重新安装:
```bash
$ sdk selfupdate force
```
自动每日检查新版本的SDKMAN也将代表用户执行。
### Home
获取 SDK 所在位置的绝对路径
```shell
$ sdk home java 21.0.2-tem
# /home/myuser/.sdkman/candidates/java/21.0.2-tem
```
<!--rehype:className=wrap-text-->
### Flush
应该很少需要刷新 `SDKMAN` 。flush 命令有助于实现这一点,因此您不需要删除任何目录。
```bash
$ sdk flush
```
手动删除像 `.sdkman/tmp` 目录这样的目录会破坏 sdkman请始终使用 flush 命令!
2024-04-03 12:37:06 +08:00
### 离线模式
2024-04-03 13:49:47 +08:00
启用强制脱机模式
2024-04-03 12:37:06 +08:00
```shell
$ sdk offline enable
2024-04-03 13:49:47 +08:00
```
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
重新启用联机模式
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```shell
$ sdk offline disable
2024-04-03 12:37:06 +08:00
```
2024-04-03 13:49:47 +08:00
离线模式下显示当前安装的和活动的版本:
2024-04-03 12:37:06 +08:00
```shell
$ sdk list groovy
2024-04-07 13:50:58 +08:00
# ---------------------------
#
# 离线模式仅显示已安装的groovy版本
# --------------------------
# >
# > 2.4.4
#
# - 2.4.3
#
# --------------------------
#
# - - installed
# >
# > - currently in use
# >
# ---------------------------
2024-04-03 12:37:06 +08:00
```
当互联网可用/不可用时,离线模式也将自动禁用/启用。当然,需要互联网连接的命令不会起作用,但会发出警告。
### 更新
2024-04-03 13:49:47 +08:00
当 SDK 元数据可能变得过时时,会显示一条警告,并说明如何更新。
2024-04-03 12:37:06 +08:00
```shell
WARNING: SDKMAN is out-of-date and requires an update.
```
2024-04-07 13:50:58 +08:00
<!--rehype:className=wrap-text-->
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
只需运行以下命令,就可以刷新 SDK 缓存,并且可以安装新的 SDK 缓存:
2024-04-03 12:37:06 +08:00
```shell
2024-04-03 13:49:47 +08:00
$ sdk update
# Adding new candidates(s): kotlin
2024-04-03 12:37:06 +08:00
```
2024-04-03 13:49:47 +08:00
<!--rehype:className=wrap-text-->
定期更新 `SDKMAN` 需要更新以了解新的或已删除的SDK。
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
### 配置
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
可以在 `~/.sdkman/etc/config` 文件中找到配置。要编辑配置,可以发出 `sdk-config` 命令在系统编辑器中编辑此文件。以下配置可用:
2024-04-03 12:37:06 +08:00
2024-04-03 13:49:47 +08:00
```ini
# 使 sdkman 成为非交互式的,适用于 CI 环境
2024-04-03 12:37:06 +08:00
sdkman_auto_answer=true|false
2024-04-03 13:49:47 +08:00
# 检查更新版本并提示更新
2024-04-03 12:37:06 +08:00
sdkman_selfupdate_feature=true|false
2024-04-03 13:49:47 +08:00
# 禁用 SSL 证书验证
2024-04-03 12:37:06 +08:00
# https://github.com/sdkman/sdkman-cli/issues/327
# HERE BE DRAGONS....
sdkman_insecure_ssl=true|false
2024-04-03 13:49:47 +08:00
# 配置 curl 超时
2024-04-03 12:37:06 +08:00
sdkman_curl_connect_timeout=5
sdkman_curl_continue=true
sdkman_curl_max_time=10
2024-04-03 13:49:47 +08:00
# 订阅测试版频道
2024-04-03 12:37:06 +08:00
sdkman_beta_channel=true|false
2024-04-03 13:49:47 +08:00
# 启用详细调试
2024-04-03 12:37:06 +08:00
sdkman_debug_mode=true|false
2024-04-03 13:49:47 +08:00
# 启用色彩模式
2024-04-03 12:37:06 +08:00
sdkman_colour_enable=true|false
2024-04-03 13:49:47 +08:00
# 启用自动环境
2024-04-03 12:37:06 +08:00
sdkman_auto_env=true|false
2024-04-03 13:49:47 +08:00
# 启用 bash 或 zsh 自动完成功能
2024-04-03 12:37:06 +08:00
sdkman_auto_complete=true|false
```
2024-04-03 13:49:47 +08:00
<!--rehype:className=wrap-text-->