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

0 阅读4分钟

作为一名开发者,你是否经常为配置开发环境而烦恼?下载特定版本的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!出奇地简单。打开你的终端,执行以下命令:

curl -s "https://get.sdkman.io" | bash

按照屏幕提示完成安装后,执行:

source "$HOME/.sdkman/bin/sdkman-init.sh"

最后验证一下是否安装成功:

sdk version

如果看到类似输出,就说明你已经成功安装了!

SDKMAN!
script: 5.18.2
native: 0.4.6

Windows用户请注意:SDKMAN!需要bash环境。推荐先安装Windows子系统Linux(WSL),或者使用Git Bash配合MinGW。它不再支持Cygwin。

核心用法:让工具管理变得简单

1. 安装与管理Java版本

这是SDKMAN!最常用的功能之一。想安装Java 21的最新稳定版?只需一行命令:

sdk install java

系统会自动下载推荐的稳定版本(如21.0.4-tem),并询问你是否将其设为默认。如果想安装特定版本,直接指定即可:

sdk install java 17.0.8-zulu

2. 查看可用版本

想知道有哪些JDK发行版可用?使用list命令:

sdk list java

这会列出所有可用的Java版本,包括Amazon Corretto、Eclipse Temurin、Oracle、GraalVM、华为毕昇、阿里Dragonwell、腾讯Kona等众多发行版。已安装的版本前会有*标记,当前使用的版本前会有>标记。

3. 轻松切换版本

在不同的项目间切换Java版本变得异常简单:

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

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

    sdk default java 17.0.8-zulu
    
  • 查看当前使用版本

    sdk current java
    

4. 项目级环境隔离:.sdkmanrc

这是我最喜欢的功能之一。你可以为每个项目指定所需的JDK或SDK版本。在项目根目录下执行:

sdk env init

这会生成一个.sdkmanrc文件,内容类似:

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

安装方式完全一致,例如:

sdk install gradle
sdk install springboot
sdk install kotlin

6. 其他实用命令

  • 升级过时版本:检查并升级所有已安装SDK的过时版本。

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

    sdk list
    
  • 卸载版本

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

    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子系统试了下非常方便:

image.png