告别手动配置!用SDKMAN!一键管理你的所有开发工具包

作为一名开发者,你是否经常为配置开发环境而烦恼?下载特定版本的JDK、安装Gradle、设置Maven环境变量...不同项目还可能需要不同的版本,手动切换简直是一场噩梦。

今天,我要向大家推荐一款神器------SDKMAN! (Software Development Kit Manager),它能让你像使用aptbrew一样,在命令行中轻松安装、切换和管理几乎所有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版本变得异常简单:

  • 临时切换(仅当前终端生效):

    bash 复制代码
    sdk use java 11.0.21-tem
  • 设为默认(所有新终端生效):

    bash 复制代码
    sdk default java 17.0.8-zulu
  • 查看当前使用版本

    bash 复制代码
    sdk 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的过时版本。

    bash 复制代码
    sdk upgrade
  • 查看所有候选SDK:浏览SDKMAN!支持的所有工具。

    bash 复制代码
    sdk list
  • 卸载版本

    bash 复制代码
    sdk uninstall java 11.0.20-tem
  • 进入离线模式:当没有网络时,SDKMAN!可以切换到离线模式,仅显示已安装的版本。

    bash 复制代码
    sdk 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 探索更多可能!

资源链接

Ubuntu windows子系统试了下非常方便:

相关推荐
__zRainy__2 小时前
Node系列 · ORM:Sequelize 模型
数据库·后端·node.js
摇滚侠2 小时前
《SpringBoot 3:入门与应用实战》第 6 章 Spring Boot 最佳实践 阅读笔记 11
spring boot·笔记·后端
对象存储与RustFS3 小时前
用 rclone 把现有 S3/MinIO 数据同步到 RustFS
后端·rust·开源
魔兽大山哥3 小时前
【NL2SQL 实战 05】sqlglot 这把刀:把 SQL 当结构处理,安全校验才不靠碰运气
后端
有来技术3 小时前
youlai-boot 实战:MinIO 停止维护,Docker 迁移 RustFS 完整记录
java·后端·docker
Lyy3 小时前
DevOps平台 — 第七篇:我的项目与表格组件抽取
后端·devops
唐青枫3 小时前
别只会写 fn:Zig 函数、错误处理、泛型与回调实战
后端
Rain的Java大神之路3 小时前
Docker搭建Redis集群完全指南
java·运维·redis·后端·docker·容器·架构
jj_ccwgw3 小时前
Kafka KRaft 多机集群安装指南
后端