一、SDKMAN
假如你同时参与了一个使用JDK 8
的项目和一个采用JDK 17
特性的项目。每次在两个项目之间切换时,你都面临着版本冲突的问题。如果有那么一个工具类似于 Python
中的 anaconda
工具,可以帮助你管理不同版本的 SDK
,是不是非常有用,那 SDKMAN
就可以帮你实现。
SDKMAN
是一款面向Java
开发者的命令行工具,旨在简化Unix
系统上SDKs
的管理。它支持跨平台使用,提供便捷的版本控制和切换功能,通过维护候选SDK
列表,让用户能够轻松安装、更新和卸载各类软件开发工具包。SDK
支持如 Java,Groovy,Scala,Kotlin、Ceylon
,也支持Maven,Gradle,SBT,Spring Boot,Vert.x
等。
二、Windows 安装
目前 Windows
有两种安装方式,WSL
和 Git Bash
的方式,Git
大家电脑中应该都有安装,因此下面基于 Git Bash
进行安装 SDKMAN
。
首先安装 SDKMAN
会使用到 unzip、zip、curl、sed
命令,默认 Git
包含了 unzip、curl、sed
但缺少 zip
:
因此这里需要为 Git
集成 zip
命令,首先下载 zip
包:
https://sourceforge.net/projects/gnuwin32/files/zip/3.0/
下载后,将解压后 bin
目录下的 zip.exe
拷贝到 Git
安装目录下 mingw64/bin
目录下:
同时 zip
还依赖 bzip2
,因此还要下载 bzip2
包:
https://sourceforge.net/projects/gnuwin32/files/bzip2/1.0.5/
下载后,将解压后 bin
目录下的 bzip2.dll
拷贝到 Git
安装目录下 mingw64/bin
目录下:
然后再次尝试 zip
命令,可以看到已经可以了:
下面开始下载安装 SDKMAN
,在 Git Bash
中执行如下操作:
curl -s "https://get.sdkman.io" | bash
安装完成后,将 SDKMAN
添加到环境变量中:
source "$HOME/.sdkman/bin/sdkman-init.sh"
验证环境:
sdk version
三、SDKMAN 使用
3.1 查看所有可用的SDK
sdk list
可以看到可以安装非常多的应用,而不限于 JDK
。
3.2 查看所有指定类型可用的SDK
sdk list java
3.3 安装指定类型版本的SDK
sdk install java 21.0.2-open
3.4 切换并使用指定类型版本的SDK
sdk use java 21.0.2-open
验证 java
版本:
java --version
3.5 设置默认版本
sdk default java 21.0.2-open
3.6 查看当前使用的 SDK
sdk current
3.7 查看当前使用的指定类型的 SDK
sdk current java
3.8 查看 SDK 安装目录
sdk home java 21.0.2-open
3.8 卸载指定类型版本的SDK
sdk uninstall java 21.0.2-open
3.9 升级 SDKMAN
sdk selfupdate