SDK 多版本管理控制利器 SDKMAN 介绍及使用

ops/2024/9/22 13:06:36/

一、SDKMAN

假如你同时参与了一个使用JDK 8的项目和一个采用JDK 17特性的项目。每次在两个项目之间切换时,你都面临着版本冲突的问题。如果有那么一个工具类似于 Python 中的 anaconda 工具,可以帮助你管理不同版本的 SDK ,是不是非常有用,那 SDKMAN 就可以帮你实现。

SDKMAN 是一款面向Java开发者的命令行工具,旨在简化Unix系统上SDKs的管理。它支持跨平台使用,提供便捷的版本控制和切换功能,通过维护候选SDK列表,让用户能够轻松安装、更新和卸载各类软件开发工具包。SDK 支持如 Java,Groovy,Scala,Kotlin、Ceylon,也支持Maven,Gradle,SBT,Spring Boot,Vert.x 等。

二、Windows 安装

目前 Windows 有两种安装方式,WSLGit Bash 的方式,Git 大家电脑中应该都有安装,因此下面基于 Git Bash 进行安装 SDKMAN

首先安装 SDKMAN 会使用到 unzip、zip、curl、sed 命令,默认 Git 包含了 unzip、curl、sed 但缺少 zip

在这里插入图片描述

因此这里需要为 Git 集成 zip 命令,首先下载 zip 包:

https://sourceforge.net/projects/gnuwin32/files/zip/3.0/

在这里插入图片描述

下载后,将解压后 bin 目录下的 zip.exe 拷贝到 Git 安装目录下 mingw64/bin 目录下:

在这里插入图片描述

同时 zip 还依赖 bzip2 ,因此还要下载 bzip2 包:

https://sourceforge.net/projects/gnuwin32/files/bzip2/1.0.5/

在这里插入图片描述

下载后,将解压后 bin 目录下的 bzip2.dll 拷贝到 Git 安装目录下 mingw64/bin 目录下:

在这里插入图片描述

然后再次尝试 zip 命令,可以看到已经可以了:

在这里插入图片描述

下面开始下载安装 SDKMAN ,在 Git Bash 中执行如下操作:

curl -s "https://get.sdkman.io" | bash

在这里插入图片描述
安装完成后,将 SDKMAN 添加到环境变量中:

source "$HOME/.sdkman/bin/sdkman-init.sh"

在这里插入图片描述

验证环境:

sdk version

在这里插入图片描述

三、SDKMAN 使用

3.1 查看所有可用的SDK

sdk list

在这里插入图片描述
可以看到可以安装非常多的应用,而不限于 JDK

3.2 查看所有指定类型可用的SDK

sdk list java

在这里插入图片描述

3.3 安装指定类型版本的SDK

sdk install java 21.0.2-open

在这里插入图片描述

3.4 切换并使用指定类型版本的SDK

sdk use java 21.0.2-open

在这里插入图片描述

验证 java 版本:

java --version

在这里插入图片描述

3.5 设置默认版本

sdk default java 21.0.2-open

在这里插入图片描述

3.6 查看当前使用的 SDK

sdk current

在这里插入图片描述

3.7 查看当前使用的指定类型的 SDK

sdk current java

在这里插入图片描述

3.8 查看 SDK 安装目录

sdk home java 21.0.2-open

在这里插入图片描述

3.8 卸载指定类型版本的SDK

sdk uninstall java 21.0.2-open

3.9 升级 SDKMAN

sdk selfupdate

http://www.ppmy.cn/ops/89696.html

相关文章

计算机基本理论与程序运行原理概述

目录 计算机的基本表示方法 计算机的组成 程序运行的原理 指令执行的流水线 编译原理 个人理解 面试题总结 计算机的基本表示方法 计算机系统使用高、低电平来表示逻辑1和0。数据在计算机中的存储、传输和处理均以二进制形式进行。数据通过总线作为电信号进行传输&…

视觉SLAM第三讲

本讲将介绍视觉 SLAM 的基本问题之一:三维空间的刚体运动描述方式:旋转矩阵、变换矩阵、四元数和欧拉角。 点、向量和坐标系 点:空间当中的基本元素,没有长度,没有体积。 向量:可以将向量看作从一个点指向…

minio文件上传

minio文件上传 1、controller PostMapping("/upload2minio")public Response<List<Map<String,String>>> upload2minio(RequestPart("req") FileUploadReq req, RequestPart("fileList") List<MultipartFile> fileList…

力扣-46.全排列

刷力扣热题–第二十六天:46.全排列 新手第二十六天 奋战敲代码&#xff0c;持之以恒&#xff0c;见证成长 1.题目简介 2.题目解答 这道题目想了会,思路比较好想,但一直没调试成功,所以就参考了力扣官网的代码,积累一下回溯算法的实现和基本实现思路,即先试探后回溯,结果在下面…

Spring循环依赖解决方法及原理

在Spring框架中&#xff0c;循环依赖&#xff08;circular dependency&#xff09;是指两个或多个Bean相互依赖&#xff0c;形成一个环。Spring采用了多种方法来解决循环依赖问题&#xff0c;主要方法包括三级缓存和提前暴露Bean引用。以下是Spring解决循环依赖的原理和方法&am…

【微服务】Spring Cloud 服务网关之Zuul

文章目录 强烈推荐引言用途使用情况使用场景基本使用示例总结强烈推荐专栏集锦写在最后 强烈推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站:人工智能 引言 服务网关&#xff08;AP…

MYSQL 事务 与 索引

文章目录 MySQL事务MySQL的自动提交模式使用事务1 隔离级别1 脏读2 幻读3 不可重复读 3 MySQL索引1 创建索引2 删除索引 参考 MySQL事务 事务是一组SQL语句的执行&#xff0c;被视为一个单独的工作单元 事务必须满足以下4个条件&#xff1a;ACID 原子性&#xff08;Atomicit…

山东大学考研机试题——整数序列

题目描述 传送门——AcWing 3717. 整数序列 - AcWing 很多整数可以由一段连续的正整数序列&#xff08;至少两个数&#xff09;相加而成&#xff0c;比如 2534567121325345671213。 输入一个整数 N&#xff0c;输出 N 的全部正整数序列&#xff0c;如果没有则输出 NONE。 输…