使用jEnv管理多個JDK安裝 - reflectoring
jEnv是一個方便的工具,可以在不同專案之間管理多個JDK版本。
作為開發人員,我們經常同時在不同的程式碼庫上工作。尤其是在具有微服務的環境中,我們可能一天要多次切換程式碼庫。
在每兩年釋出一次新Java版本的日子裡,這通常不是問題,因為大多數程式碼庫都需要相同的Java版本。
當Java發行節奏每6個月更改一次時,這種情況就會改變。今天,如果我們正在使用多個程式碼庫,則每個程式碼庫都有可能使用不同的Java版本。
jEnv是一個工具,可以幫助我們管理多個JDK安裝並配置每個程式碼庫以使用特定的JDK版本,而無需更改JAVA_HOME環境變數。
安裝jEnv
jEnv支援Linux和MacOS作業系統。如果您使用的是Windows,則需要安裝Linux的Windows子系統(或bash模擬器,如GitBash)才能使用它。
按照jEnv主頁上的安裝說明安裝jEnv。
安裝JDK
如果您正在閱讀本文,則很可能要為正在使用的程式碼庫設定新的JDK。讓我們從AdoptOpenJDK網站下載JDK 。
選擇所需的版本並下載。將.tar.gz檔案解壓縮到任意位置。
關於jEnv的好處是,我們不需要透過brew,yum或apt之類的軟體包管理器來安裝JDK。我們只需要下載一個JDK並將其放入某個資料夾中即可。
您仍然可以使用brew,yum或apt來安裝JDK,您只需要查詢包管理器之後放置JDK的資料夾即可。
將JDK新增到jEnv
要將新的JDK與jEnv一起使用,我們需要告訴jEnv在哪裡找到它。首先,使用jenv versions命令檢查jEnv已經支援哪些JDK 。
就我而言,我已經安裝了JDK 11、13和14。每個版本都有三種不同的名稱。
假設我們已經下載了JDK 15並將其提取到該資料夾中~/software/java/jdk-15+36。
現在,我們將新的JDK新增到jEnv中:
jenv add /home/tom/software/java/jdk-15+36/ |
如果再次執行jenv versions,將發現:在JDK 15已名下加15和openjdk64-15。
本地與全域性JDK
jEnv支援全域性JDK和多個本地JDK的概念。
全域性JDK是在java計算機上任何地方鍵入命令列時都將使用的JDK 。
本地JDK是僅為特定資料夾配置的JDK。如果我們java在此資料夾中輸入命令列,它將不使用全域性JDK,而是使用本地JDK。
我們可以使用它為不同的專案配置不同的JDK(只要它們位於不同的資料夾中)。
- 設定全域性JDK
首先,我們檢查全域性JDK的版本:
jenv global |
在我的情況下,輸出為:
system |
這意味著系統安裝的JDK將用作全域性JDK。該名稱system不是很有幫助,因為它沒有說明它是哪個版本。讓我們將全域性JDK更改為具有版本號的更有意義的JDK:
jenv global 11 |
此命令已將全域性使用的JDK版本更改為11。就我而言,該版本與以前相同,但是如果鍵入jenv global,我現在將看到哪個JDK版本是我的全域性版本。
- 設定本地JDK
還記得我們下載的JDK 15嗎?下載它的原因可能是我們正在開發一個需要執行JDK 15的新專案。
假設該專案位於資料夾中~/shiny-project。讓我們cd進入這個資料夾。
如果現在輸入java -version,將得到以下結果:
openjdk version "11.0.8" 2020-07-14 |
這是因為JDK 11是我的全域性JDK。
讓我們將此專案更改為JDK 15:
jenv local 15 |
現在再次鍵入java -version,輸出將是:
openjdk version "15" 2020-09-15 |
這是如何運作的?
使用該jenv local命令後,您將.java-version在當前資料夾中找到一個名為的檔案。該檔案包含本地JDK的版本號。
在安裝過程中,jEnv會覆蓋該java命令。每次我們java現在呼叫時,jEnv都會查詢一個.java-version檔案,如果找到一個檔案,則將啟動該檔案中定義的JDK版本。如果找不到.java-version檔案,則會啟動全域性配置的JDK。
使用Maven和Gradle
因此,如果我們java透過命令列呼叫,它將立即選擇一個本地配置的JDK。大!
但是,諸如Maven或Gradle之類的工具仍然使用JDK的系統版本!
讓我們來看看我們能做些什麼。
- 配置jEnv以與Maven一起使用
使Maven與jEnv定義的本地JDK一起使用很容易。我們只需要安裝maven外掛:
jenv enable-plugin maven |
如果現在在~/shiny-project資料夾中執行mvn -version,將獲得以下輸出:
Maven home: .../apache-maven-3.6.3 Java version: 15, vendor: AdoptOpenJDK, runtime: /home/tom/software/java/jdk-15+36 Default locale: en_AU, platform encoding: UTF-8 OS name: "linux", version: "5.4.0-52-generic", arch: "amd64", family: "unix" |
- 配置jEnv以使用Gradle
就我而言,Gradle自動選擇了jEnv本地配置的JDK!
如果您無法立即使用它,則可以類似於上述Maven外掛那樣安裝gradle外掛:
jenv enable-plugin gradle |
如果現在在~/shiny-project資料夾中執行gradle -version,將獲得安裝結果。
相關文章
- 15. mac安裝多版本jdkMacJDK
- 用sdkman管理多個jdk切換JDK
- 使用CentOS 7.5解除安裝自帶jdk安裝自己的JDK1.8CentOSJDK
- R語言安裝多個版本和多版本Rstudio管理R語言
- 安裝JDKJDK
- JDK安裝JDK
- 一臺電腦如何安裝多個版本的JDK及其說明JDK
- JDK Windows 安裝配置以及多版本切換JDKWindows
- JDK安裝和解除安裝JDK
- 同一個電腦安裝兩個jdk版本JDK
- Linux安裝JDKLinuxJDK
- CentOS安裝jdkCentOSJDK
- Mac 安裝 JDKMacJDK
- CentOS 安裝 JDKCentOSJDK
- 安裝文件-JDKJDK
- JDK的安裝與解除安裝JDK
- linux 解除安裝jdk和安裝LinuxJDK
- 00-macOS和Linux安裝和管理多個Python版本MacLinuxPython
- JDK安裝教程win10 jdk壓縮包安裝教程JDKWin10
- 【 Linux 軟體安裝 】- 1 JDK安裝LinuxJDK
- linux 下安裝 jdkLinuxJDK
- JDK17安裝JDK
- JDK的安裝配置JDK
- centos 安裝 jdk 8CentOSJDK
- Linux安裝JDK流程LinuxJDK
- Ubuntu下JDK安裝UbuntuJDK
- jdk安裝與配置JDK
- Windows上安裝JDKWindowsJDK
- Centos 7 安裝JDKCentOSJDK
- CentOS如何安裝JDKCentOSJDK
- SpringBoot的@Conditional使用 - reflectoringSpring Boot
- annacoda 安裝多個python版本Python
- Mac安裝多個Python版本MacPython
- Linux 安裝 JDK17LinuxJDK
- Linux安裝JDK1.8LinuxJDK
- centos安裝jdk8CentOSJDK
- MAC中安裝JDK、MavenMacJDKMaven
- Linux7安裝JDKLinuxJDK