SDKMan Tips

Photo by Clark Tibbs on Unsplash

SDKMan Tips

SDKMAN! logo

What SDKman

https://sdkman.io/

在使用之前, 先介紹一下 SDKman 要解決什麼問題.

在 JVM 一直有豐富的開發生態圈, Java, Groovy, Maven, Gradle, Spark, Flink, …, 隨著時間有可能需要在自己的開發環境上跑多種版本的 Java, Gradle, Maven, etc. 而 SDKman 就是解決這些版本衝突的管理工具.

切換版本示範

# install java 21
sdk install java 21.0.5-sem
# use java 21
sdk use java 21.0.5-sem

# install maven
sdk install maven 3.9.9
# use maven
sdk use maven 3.9.9

使用起來非常類似 NVM (Node Version Manager) 管理工具.

但他有一個很大的缺點就是目前只支援 UNIX 作業系統.

安裝

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

## setup to current shell
source "$HOME/.sdkman/bin/sdkman-init.sh"

## testing sdk command is work
sdk version

常用的設定

我的開發工具目前還是以 IntelliJ 為主, 為了要讓 CLI 與 IntelliJ 的環境一致, 通常需要到專案裡面設定 Java SDK.

但因為 /.sdkman 是隱藏式的目錄, 所以我會透過 soft link 的方式, 建立一個指向目前 sdkman 切換的 java 版本.

soft link 可以簡單理解為類似 windows 作業系統下的捷徑, 就是一個指向 sdkman 當下切換 JDK 版本的捷徑.

# 將 sdkman 當前的 java 目錄, 設置一個 JAVA_HOME link 
ln -s ~/.sdkman/candidates/java/current JAVA_HOME

# 將 sdkman 當前的 maven 目錄, 設置一個 MAVEN_HOME link
ln -s ~/.sdkman/candidates/maven/current MAVEN_HOME

這樣就不用暴露整個 ~/.sdkman , 而 intelliJ 也能跟隨你切換好的 SDK 去做設置.