# SDKMAN!|套件管理工具 ![image](https://hackmd.io/_uploads/HJ0h-X89T.png) ## 工具介紹 1. 版本管理: SDKMAN! 可以安裝、切換和卸載不同版本的軟體開發工具,例如 Java、Gradle、Maven、Scala、Kotlin 等。這使得開發者能夠方便地在不同項目中使用不同的版本,而不必手動下載和安裝。 2. 依賴性解決: SDKMAN! 能夠處理軟體開發工具之間的相互依賴性,確保安裝的版本是相容的。它能夠滿足項目對特定版本的需求。 3. 簡單的命令行界面: 使用者可以通過命令行輕鬆地執行 SDKMAN! 的命令,進行版本管理、列出可用的版本、安裝新版本等操作。 4. 輕量且易於安裝: SDKMAN! 本身是一個輕量的工具,易於安裝和配置。它是一個開源項目,可以在 GitHub 上找到其原始碼。 ## SDKMAN! & NVM & Homebrew ![image](https://hackmd.io/_uploads/Hk0DG7Icp.png) ## 使用說明 ### STEP1. 指令安裝SDKMAN! #### 1-1. 打開Terminal執行指令。 ``` $ curl -s "https://get.sdkman.io" | bash ``` ![image](https://hackmd.io/_uploads/Bk1Afm8c6.png) >上圖為執行安裝畫面。 #### 1-2. 執行指令讓SDKMAN!立即生效 * 指令會將SDKMAN!加到環境變數的設定檔內,如 **.zshrc** 或 **.bashrc 取決於當前的Terminal預設。** * 指令前方可使用 source 或 exec 來讓當前的terminal來執行指定檔案。 ``` $ source "$HOME/.sdkman/bin/sdkman-init.sh" ``` **.zshrc** * 此檔案是隱藏的,需到根目錄下使用「 ⇧shift + ⌘command + . 」就可以顯示。 ```bash= ... #THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!! export SDKMAN_DIR="$HOME/.sdkman" [[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh" ``` >**補充說明:** <font style="color: orange">⚠️ </font>因為MacOS的環境變數檔有<font style="color: red">「.zshrc (預設會使用這個)」</font>、「bash_profile」、「.zprofile」三個,通常位於使用者根目錄底下,有時候利用指令設定一些環境變數時會自動同步到上述幾個檔案中(取決於你下的指令),所以在使用這些套件管理工具來設定時,建議整理一下這些檔案內容,避免設定被覆蓋。 <font style="color: orange">⚠️ </font>設定檔內的環境設定參數是有優先順序的,相同的設定越下層的設定會優先、不同設定檔之間也有可能會互相影響。 #### 1.3. 驗證 SDKMAN! 已安裝 ``` $ sdk version ``` ![image](https://hackmd.io/_uploads/rJX4rmU96.png) ### STEP2. 嘗試使用 SDKMAN! 安裝 Java #### 2-1. 查詢可以安裝的java版本 * 會自動偵測目前作業系統環境,最後顯示可以安裝的版本。 ``` $ sdk list java ``` ![image](https://hackmd.io/_uploads/ryoBr7I9T.png) #### 2-2. 安裝指定Java版本 ``` $ sdk install java [version] ``` >若沒有選擇版本會預設安裝最新版的java。 ![image](https://hackmd.io/_uploads/BJS9BmIcT.png) >若點擊tab兩下會顯示目前可以安裝的版本。 ![image](https://hackmd.io/_uploads/BJt1IQI9a.png) #### 2-3. 主動生效設定(非必須) * 雖然sdkman有設定主動生效的參數,如果遇上更改版本後仍然未生效,可以執行該指令來生效設定檔。 * 如果Default的版本和當下要生效的版本不同,會造成回復成Default版本!所以記得先設定Default。 ``` source ~/.zshrc ``` #### 2-4. 預設版本 * 若希望切換版本後可以在所有終端機生效,而不是當前的終端機而已,可以設定預設版本。 * 有些時候再啟動專案時,若沒有設定好開發環境,有可能會吃到Local的設定,也可以使用Default來指定預設版本。 ``` sdk default java [已安裝的java版本] ``` ![image](https://hackmd.io/_uploads/S1TfImL56.png) #### 2-5. 驗證 Java 版本 ``` java -version ``` ![image](https://hackmd.io/_uploads/ryNNIXL5a.png) ## 補充說明 ### 套件路徑確認 * 以此確認所安裝的套件是依賴正確的管理工具。 ``` which [所要查看的套件名稱,ex: Java、Gradle、node] ``` ![image](https://hackmd.io/_uploads/r1JvUX8qp.png)