jEnv It's a convenient tool , You can manage multiple... Between different projects JDK edition .
As a developer , We often work on different codebases at the same time . Especially in environments with microservices , We may have to switch the code base several times a day .
New... Is released every two years Java In the days of the version , It's usually not a problem , Because most codebases need the same Java edition .
When Java Release rhythm every 6 When it's changed once a month , This will change . today , If we're using multiple codebases , It is possible for each code base to use a different Java edition .
jEnv It's a tool , Can help us manage multiple JDK Install and configure each code base to use specific JDK edition , Without change JAVA_HOME environment variable .
according to jEnv Home page Installation instructions on the installation of jEnv.
If you are reading this article , It is possible to set up a new JDK. Let's start with AdoptOpenJDK Website download JDK .
Select the version you want and download . take .tar.gz Unzip the file to any location .
About jEnv Are the benefits of , We don't need to pass brew,yum or apt Package manager to install JDK. We just need to download one JDK And put it in a folder .
You can still use brew,yum or apt To install JDK, You just need to find the package manager and place JDK Folder can be .
take JDK Add to jEnv
To put the new JDK And jEnv Use it together , We need to tell jEnv Where to find it . First , Use jenv versions Command check jEnv What has been supported JDK .
As far as I'm concerned , I have installed JDK 11、13 and 14. Each version has three different names .
Suppose we've downloaded JDK 15 And extract it to the folder in ~/software/java/jdk-15+36.
Now? , We will have a new JDK Add to jEnv in ：
jenv add /home/tom/software/java/jdk-15+36/
If run again jenv versions, Will find ： stay JDK 15 Has been added to the name 15 and openjdk64-15.
Local and global JDK
jEnv Support the overall situation JDK And multiple local JDK The concept of .
overall situation JDK Is in java Any place on the computer will use when typing the command line JDK .
Local JDK Is configured for specific folders only JDK. If we java Enter the command line in this folder , It will not use the global JDK, It's local JDK.
We can use it to configure different... For different projects JDK（ As long as they're in different folders ）.
First , We look at the whole picture JDK Version of ：
In my case , Output is ：
This means that the system is installed with JDK Will be used as a global JDK. The name system Not very helpful , Because it doesn't say which version it is . Let's take the whole picture JDK Change to a more meaningful one with a version number JDK：
jenv global 11
This command has been used globally JDK Version changed to 11. As far as I'm concerned , This version is the same as before , But if you type jenv global, Which I'm going to see now JDK Version is my global version .
Remember what we downloaded JDK 15 Do you ？ The reason for downloading it may be that we are developing a need to run JDK 15 New projects .
Suppose the project is in a folder ~/shiny-project. Let us cd I'm gonna go into this folder .
If you type in now java -version, The following results will be obtained ：
openjdk version "11.0.8" 2020-07-14
This is because JDK 11 It's all about me JDK.
Let's change this project to JDK 15：
jenv local 15
Now type again java -version, The output will be ：
openjdk version "15" 2020-09-15
How it works ？
Use this jenv local After the command , You will .java-version Find a file named in the current folder . This file contains local JDK Version number of .
During installation ,jEnv Will cover the java command . Every time we java Now call time ,jEnv Will look for one .java-version file , If you find a file , Then the... Defined in the file will be launched JDK edition . If you can't find it .java-version file , The global configuration will be started JDK.
Use Maven and Gradle
therefore , If we java Call... From the command line , It will immediately select a locally configured JDK. Big ！
however , Such as Maven or Gradle Tools like that still use JDK System version of ！
Let's see what we can do .
send Maven And jEnv Defined local JDK It's easy to use together . We just need to install maven plug-in unit ：
jenv enable-plugin maven
If you're in ~/shiny-project Run... In folder mvn -version, You will get the following output ：
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"
As far as I'm concerned ,Gradle Automatically selected jEnv Locally configured JDK！
If you can't use it immediately , It can be similar to the above Maven Install the plug-in like that gradle plug-in unit ：
jenv enable-plugin gradle
If you're in ~/shiny-project Run... In folder gradle -version, Installation results will be obtained .