作为一名开发者,你是否经常为配置开发环境而烦恼?下载特定版本的JDK、安装Gradle、设置Maven环境变量...不同项目还可能需要不同的版本,手动切换简直是一场噩梦。
今天,我要向大家推荐一款神器------SDKMAN! (Software Development Kit Manager),它能让你像使用apt或brew一样,在命令行中轻松安装、切换和管理几乎所有JVM生态的开发工具包。
什么是SDKMAN!?
简单来说,SDKMAN!是一个为JVM平台开发的工具包管理器。它支持在macOS、Linux和Windows(通过WSL)上流畅运行,兼容Bash和ZSH shell。无论是Java、Groovy、Scala,还是Gradle、Maven、Spring Boot,甚至Kotlin、GraalVM,你都能通过它一键安装和切换。
极简安装
安装SDKMAN!出奇地简单。打开你的终端,执行以下命令:
bash
curl -s "https://get.sdkman.io" | bash
按照屏幕提示完成安装后,执行:
bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
最后验证一下是否安装成功:
bash
sdk version
如果看到类似输出,就说明你已经成功安装了!
makefile
SDKMAN!
script: 5.18.2
native: 0.4.6
Windows用户请注意:SDKMAN!需要bash环境。推荐先安装Windows子系统Linux(WSL),或者使用Git Bash配合MinGW。它不再支持Cygwin。
核心用法:让工具管理变得简单
1. 安装与管理Java版本
这是SDKMAN!最常用的功能之一。想安装Java 21的最新稳定版?只需一行命令:
bash
sdk install java
系统会自动下载推荐的稳定版本(如21.0.4-tem),并询问你是否将其设为默认。如果想安装特定版本,直接指定即可:
bash
sdk install java 17.0.8-zulu
2. 查看可用版本
想知道有哪些JDK发行版可用?使用list命令:
bash
sdk list java
这会列出所有可用的Java版本,包括Amazon Corretto、Eclipse Temurin、Oracle、GraalVM、华为毕昇、阿里Dragonwell、腾讯Kona 等众多发行版。已安装的版本前会有*标记,当前使用的版本前会有>标记。
3. 轻松切换版本
在不同的项目间切换Java版本变得异常简单:
-
临时切换(仅当前终端生效):
bashsdk use java 11.0.21-tem -
设为默认(所有新终端生效):
bashsdk default java 17.0.8-zulu -
查看当前使用版本:
bashsdk current java
4. 项目级环境隔离:.sdkmanrc
这是我最喜欢的功能之一。你可以为每个项目指定所需的JDK或SDK版本。在项目根目录下执行:
bash
sdk env init
这会生成一个.sdkmanrc文件,内容类似:
ini
java=21.0.4-tem
gradle=8.10.2
当你cd进入该项目目录时(需开启自动env功能),SDKMAN!会自动切换到指定的版本。你也可以手动执行**sdk env**来应用配置。当离开项目时,执行**sdk env clear**即可恢复全局设置。
5. 管理其他SDK
除了Java,SDKMAN!支持海量工具,包括但不限于:
- 构建工具: Gradle, Maven, Ant, sbt
- 框架: Spring Boot, Micronaut, Quarkus, Grails
- 语言: Groovy, Scala, Kotlin
- 应用服务器: Tomcat, Jetty
- 工具: VisualVM, JMeter, JBang
安装方式完全一致,例如:
bash
sdk install gradle
sdk install springboot
sdk install kotlin
6. 其他实用命令
-
升级过时版本:检查并升级所有已安装SDK的过时版本。
bashsdk upgrade -
查看所有候选SDK:浏览SDKMAN!支持的所有工具。
bashsdk list -
卸载版本:
bashsdk uninstall java 11.0.20-tem -
进入离线模式:当没有网络时,SDKMAN!可以切换到离线模式,仅显示已安装的版本。
bashsdk offline enable
强大的背后:供应商API
SDKMAN!不仅是工具,更是一个平台。它提供了一个安全的REST API,允许SDK供应商(如Azul、BellSoft、华为)自行发布和管理他们的发行版。这意味着你可以第一时间获取到官方发布的最新版本,而无需等待SDKMAN!手动更新列表。
技术亮点:供应商可以通过API发布新版本、设置默认版本,甚至广播发布消息。例如,Azul Systems会直接发布Zulu JDK的新版本,并附带校验和以确保下载完整性。
配置与定制
SDKMAN!的行为可以通过~/.sdkman/etc/config文件定制。常用配置项包括:
sdkman_auto_answer=true:在CI环境中自动回答"是",避免交互。sdkman_auto_env=true:自动启用项目级环境切换(cd进目录自动切换SDK版本)。sdkman_insecure_ssl=true:在SSL证书验证有问题时使用(不推荐)。sdkman_selfupdate_feature=true:允许自动检查SDKMAN!自身更新。
使用**sdk config**命令可以在编辑器中快速打开配置文件。
总结
SDKMAN!通过一个简洁、统一的命令行接口,彻底解决了JVM生态工具链的版本管理和环境切换难题。无论你是需要管理多个Java版本的开发者,还是希望简化CI/CD环境的运维人员,它都能极大地提升工作效率。
告别繁琐的手动下载和PATH配置,拥抱SDKMAN!带来的便捷吧!
快速上手 :先执行
sdk install java安装你的第一个JDK,然后sdk list探索更多可能!
资源链接
- 官方网站 :sdkman.io
- 安装指南 :sdkman.java.net.cn/install/
- 详细用法 :sdkman.java.net.cn/usage/
- 支持的JDK发行版 :sdkman.java.net.cn/jdks/
- 所有支持的SDK列表 :sdkman.java.net.cn/sdks/
Ubuntu windows子系统试了下非常方便:
