前言
對于使用 Java
語言開發(fā)的朋友可能會遇到這種情況澄港,有時想學(xué)習(xí)和探索 Java
的最新版本提供的一些新特性,比如 Java 11
沉帮,但你無法將其安裝在自己的計(jì)算機(jī)上姻氨,因?yàn)槟愕膱F(tuán)隊(duì)正在使用比這個舊的版本(我們目前用的 Java 8
),你并不想影響目前的項(xiàng)目缕溉】即或者你目前是在維護(hù)和開發(fā)多個項(xiàng)目,而這些不同的項(xiàng)目使用的 JDK
版本不一樣证鸥,比如那些維護(hù)的老項(xiàng)目使用的是 JDK 8
僚楞,而新項(xiàng)目你打算使用比較新的版本 JDK 11
,以上這些情況都需要在計(jì)算機(jī)上安裝多個 JDK
枉层,并且應(yīng)該能夠在多個版本之間方便快速的切換泉褐。今天要介紹的主角 SDKMAN 可以很好的解決上面這種問題,它提供了在同一臺計(jì)算機(jī)上對多個版本的開發(fā)工具包管理鸟蜡。需要注意的是:這個工具只適用于類 Unix
的系統(tǒng)(比如:Mac OSX膜赃、Linux、Cygwin揉忘、Solaris跳座、FreeBSD 等)端铛。
SDKMan 簡介
直接引用 SDKMan 官網(wǎng)上的介紹如下:
SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems. It provides a convenient Command Line Interface (CLI) and API for installing, switching, removing and listing Candidates.
簡單來說就是其提供了管理多個版本開發(fā)工具包的能力,同時也提供了一些命令行接口讓我們方便安裝疲眷、版本切換禾蚕、版本移除和顯示版本列表。關(guān)于 SDKMan
還有幾個要點(diǎn)如下:
-
SDKMan
是由開源社區(qū)開發(fā)的狂丝,免費(fèi)使用换淆,。 -
SDKMan
是用bash
編寫的几颜,它只需要您的系統(tǒng)上安裝了curl
和zip / unzip
命令即可倍试。 -
SDKMan
可以為JVM
安裝大約 29 個軟件開發(fā)包,比如Java
蛋哭、Groovy
易猫、Scala
、Kotlin
具壮、Gradle
、Maven
哈蝇、Spark
棺妓、Spring Boot
等。 -
SDKMan
可以自動處理幫我們配置*_HOME(e.g.:JAVA_HOME)
和PATH
環(huán)境變量炮赦,因此我們不需要擔(dān)心切換版本后這些環(huán)境變量的設(shè)置怜跑。
安裝 SDKMan
SDKMan
可以運(yùn)行在任何類 Unix
系統(tǒng)上,我們只需要在命令行輸入以下命令即可安裝:
curl -s "https://get.sdkman.io" | bash
然后執(zhí)行以下命令吠勘,加載文件 sdkman-init.sh
到當(dāng)前環(huán)境性芬,執(zhí)行完該命令之后我們可以通過 sdk version
來驗(yàn)證是否安裝成功,同時還可以通過 sdk help
命令顯示有關(guān) sdk
命令用法和幫助(PS: 對于使用 Windows 環(huán)境的朋友可以安裝 Cygwin 或 Git Bash 運(yùn)行以上命令
)剧防。
source "$HOME/.sdkman/bin/sdkman-init.sh"
使用 SDKMan 安裝 JDK
前面已經(jīng)介紹過植锉,SDKMan
支持多達(dá)大約 29 個軟件開發(fā)包管理,我們也可以使用 sdk list
命令來查看支持的完整列表峭拘,本文主要介紹 Java
相關(guān)的內(nèi)容俊庇,可以通過命令 sdk list java
來查看支持安裝的 Java
版本。
使用以下命令安裝 Java 11
:
sdk install java 11.0.7.hs-adpt
該命令會花費(fèi)一些時間鸡挠,因?yàn)樗鼤谖覀兊挠?jì)算機(jī)上下載對應(yīng)版本的 JDK
辉饱,執(zhí)行完成之后 SDKman
會自動給我們配置好 JAVA_HOME
和 PATH
等環(huán)境變量,可以通過 Java -version
命令驗(yàn)證拣展。
現(xiàn)在彭沼,如果檢查 Java
版本和 JAVA_HOME
環(huán)境變量,可以看到當(dāng)前 Java
的版本已更新為 11.0.7
备埃。
可以使用以下命令來設(shè)置默認(rèn)使用的 JDK
版本姓惑。
sdk default java 11.0.7.hs-adpt
將 SDKMan 指向已安裝 Java 版本
如果在你安裝 SDKMan
之前本地電腦已經(jīng)安裝了 JDK
版本褐奴,默認(rèn)是無法識別到的,那么你需要進(jìn)行以下配置才能讓 SDKMan
識別已安裝的版本挺益,首先歉糜,第一步你要先找到你的 Java
安裝目錄,我本地 Mac
的安裝目錄是 /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk
望众,然后使用命令 ln -s
來為 Java
安裝目錄建立符號鏈接匪补。
多個 JDK 版本切換示例
SDKMan
提供了命令 sdk use java <version_want_to_use>
在多個版本之間進(jìn)行切換,使用 sdk use java jdk1.8.0_181.jdk
命令來使用之前本地安裝的 Java 8
烂翰。
使用命令 sdk use java 11.0.7.hs-adpt
來設(shè)置版本為 Java 11
夯缺。
需要注意的是:使用命令
sdk use java <version>
只在當(dāng)前會話有效,如果你關(guān)閉終端并再次打開它甘耿,則將使用以前安裝的版本踊兜,不會改變你本地使用的版本,此時可以使用sdk default java <version>
來設(shè)置永久生效佳恬。
如何卸載指定的 JDK 版本
如果你想要卸載任何已安裝的 JDK
版本捏境,比如: 11.0.7.hs-adpt
,可以使用以下命令卸載:
sdk uninstall java 11.0.7.hs-adpt
此時毁葱,如果你想再次安裝之前通過 SDKMan
卸載的版本垫言,此時不會再次重新下載,會提示 Found a previously downloaded java 11.0.7.hs-adpt archive. Not downloading it again...
倾剿,因?yàn)橹皠h除操作并沒有真正的從你計(jì)算機(jī)上刪除源壓縮包文件筷频。
IntelliJ IDEA 使用 SDMan 安裝 JDK
SDKMan
所有安裝的 JDK
都放在目錄 .sdkman/candidates/java/
,你可以在你當(dāng)前用戶的 home
文件夾下面看到該文件夾(注意是隱藏文件夾)前痘。
在 IntelliJ IDEA
中打開任何一個 Java
項(xiàng)目后凛捏,您可以按 Command + :
快捷鍵打開項(xiàng)目結(jié)構(gòu)窗口,在 Project SDK
模塊選擇新建一個 JDK
后輸入你需要的 JDK
版本在 SDKMan
中的路徑即可芹缔。
因?yàn)?.sdkman
是隱藏文件夾不太方便查找坯癣,可以使用以下命令創(chuàng)建一個非隱藏文件夾指向它。
ln -s ~/.sdkman ~/sdkman