简介
@gongt/jenv-data
是一款用于管理 Java 虚拟机版本的 npm 包。它通过读取 $PATH
环境变量,将 Java 版本命令行工具中的信息解析出来,提供了一些便捷的方法,帮助前端开发人员轻松管理 Java 环境。
安装
使用 npm 安装最新版本:
npm install @gongt/jenv-data
使用
我们可以通过 require
引入 @gongt/jenv-data
模块,并利用它提供的方法进行 Java 环境的管理。
下面以一些基本操作来介绍具体的使用方法:
获取所有 Java 版本
const jenvData = require('@gongt/jenv-data'); console.log(jenvData.getAllVersions());
获取当前 Java 版本
const jenvData = require('@gongt/jenv-data'); console.log(jenvData.getCurrentVersion());
获取指定 Java 版本的安装目录
const jenvData = require('@gongt/jenv-data'); console.log(jenvData.getInstallationPath('1.8.0_231'));
切换 Java 版本
const jenvData = require('@gongt/jenv-data'); jenvData.switchVersion('1.8.0_231');
深度解析
@gongt/jenv-data
模块本质上是对 $PATH
环境变量中包含的 Java 版本命令行工具所在目录进行的扫描解析。其提供的方法,大多和 $PATH
扫描和解析有关。
下面我们来详细解析一下该模块是如何实现的。
扫描所有 Java 版本
扫描 $PATH
环境变量中的所有目录,查找其中包含的 Java 版本命令行工具,并返回一个版本 - 对应 路径 的对象集合。
-- -------------------- ---- ------- ----- -- - -------------- ----- ---- - ---------------- ----- -------- - --- ----- ----- - --------------------------------------- --- ---- - - -- --- - ------------- - - ---- ---- - ----- -------- - ------------------- -------- --- - ----- ---- - ---------------------- -- -------------- -- ------------------------------------------ --------- - -- ----- -- -- --- ---- ----- ------------- - ------------------------------------- ----- ------- - ---------------------------------- -- ------------------- - ------------------ ----- --- -------- ------------- - ----------------- - -------------- - - ----- --- - -- ------------------- --------- --- --------- ---------- - - -------- ---------------------------- - ----- ------- - ---------------------- ----- ------ - ----------------------- -- ------- -- ---------- - ------ ---------- - ------------------ --- --- ----- ---- ----- -------------- ------ ------ - -------------- - ---------
- 通过分隔符分割
PATH
环境变量,当成目录数组。 - 遍历目录数组,匹配其中是否包含由 Java 版本生成的
java
命令行工具。 - 如果找到可执行文件,根据规则截取出版本信息,并将版本信息对应文件夹路径存储到
jenvData
变量中。 - 最终,
jenvData
变量即保存了该主机上所找到 Java 版本命令行工具的版本和对应安装路径的信息。
获取当前 Java 版本
通过 $PATH
环境变量找到当前 Java 版本命令行工具的路径,并解析出对应的版本编号。
-- -------------------- ---- ------- -------- ------------------- - --- --------- - ---------------- -- --- --------- - ------------------------ ---- ----- ------ - -------------------------------- --- ---- - - -- --- - -------------- - - ---- ---- - ----- --------- - ----------------------- ----- ------ ------------- --- - ----- ---- - ----------------------- -- --------------- - ----- ------ - ----------------------- ----- ------- ----- ----------- - -------------------- ---------- ----- ---- - ---------------------------- -------- ----- ------------ - -------------------------------------------- -- -------------- - ------ ---------------- - - - ----- ----- - -- -- -- --- ---- --- --- --- - - ------ ----- -
- 将环境变量
PATH
加载成一个数组。 - 遍历该数组,每次取出一个目录。
- 定位该目录下的
tools.jar
文件的目录,并获取文件信息。 - 如果该文件存在,则表示这个目录是 JDK 或 JRE 的安装目录。接着,获取 Java 版本信息,保存到变量
version
中并返回。
切换 Java 版本
切换 Java 版本就是将 Java 命令行工具路径设为 $PATH
环境变量中当前 Java 版本的路径。
-- -------------------- ---- ------- -------- ---------------------- - ----- ------- - ----------------- ----- -------- - ----------------------------- -- ----------- - ------------------ --- -------- -------- ------------- ------ ------ - ----- ------- - ---------------------- ------- --------------------- - --------- ----- ------- - ------------------------------------------------------ ------ ---------------- - -------- ------ ----- -
- 根据参数
version
获得 Java 命令行工具的安装目录,并验证该版本是否正确。 - 将当前 Java 版本的路径作为环境变量
JAVA_HOME
的值,便于后续的程序互交。 - 将环境变量
PATH
中包含当前 Java 版本命令行工具的所有路径提取出来,并利用路径分隔符重新连接字符串,并将其赋值到环境变量PATH
上。
总结
通过对 @gongt/jenv-data
的介绍,我们了解到了它是如何扫描解析 $PATH
,定位当前 Java 版本安装路径,切换 Java 版本等操作。在实际开发中,为了保证项目及运行环境的稳定性和兼容性,正确处理和管理 Java 环境显得尤为重要。@gongt/jenv-data
提供了一些便捷的方法,让我们轻松管理好当前版本及多版本的 Java 开发环境。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/197498