使用jEnv管理多个JDK安装 - reflectoring

20-11-01 banq

jEnv是一个方便的工具,可以在不同项目之间管理多个JDK版本。

作为开发人员,我们经常同时在不同的代码库上工作。尤其是在具有微服务的环境中,我们可能一天要多次切换代码库。

在每两年发布一次新Java版本的日子里,这通常不是问题,因为大多数代码库都需要相同的Java版本。

当Java发行节奏每6个月更改一次时,这种情况就会改变。今天,如果我们正在使用多个代码库,则每个代码库都有可能使用不同的Java版本。

jEnv是一个工具,可以帮助我们管理多个JDK安装并配置每个代码库以使用特定的JDK版本,而无需更改JAVA_HOME环境变量。

 

安装jEnv

jEnv支持Linux和MacOS操作系统。如果您使用的是Windows,则需要安装LinuxWindows子系统(或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,将获得安装结果。

 

                   

1
猜你喜欢