20-08-30
banq
随着Java新版本不断频繁发布,开发人员可能需要在他们的环境中管理多个不同的并行版本的软件开发工具包(SDK)。但是设置操作系统的环境变量PATH变量有时可能会变得很痛苦。在本教程中,我们将了解SDKMAN!可以帮助您轻松管理SDK的安装和选择。
什么是SDKMAN
SDKMAN是管理多个SDK并行版本的工具,它提供了方便的命令行界面(CLI)和API,用于列出,安装,切换和删除候选对象。此外,它还为我们设置了环境变量。
它还允许开发人员安装基于JVM的SDK,例如Java,Groovy,Scala,Kotlin和Ceylon。还支持Maven,Gradle,SBT,Spring Boot,Vert.x等。SDKMAN是用Bash编写的免费,轻量级开源工具。
安装SDKMAN
SDKMAN支持所有主要Unix操作系统,并且可以轻松地将其安装在所有基于Unix的系统上。而且,它支持Bash和Zsh shell。
curl -s "https://get.sdkman.io" | bash |
然后,按照屏幕上的说明完成安装。
我们可能需要安装zip和unzip软件包才能完成安装过程。
接下来,打开一个新终端或运行:
source "$HOME/.sdkman/bin/sdkman-init.sh" |
最后,运行以下命令以确保安装正常。如果一切顺利,则应显示版本:
$ sdk version SDKMAN 5.8.5+522 |
要进行更多自定义,请参考SDKMAN上的安装指南
列出所有SDK
$ sdk list |
list命令显示所有可用的SDK,由唯一的名称,描述,官方网站,并在安装命令中标识:
===================================================== Available Candidates ===================================================== q-quit /-search down j-down ?-search up k-up h-help ----------------------------------------------------- Java (11.0.7.hs-adpt) https://zulu.org ... $ sdk install java ----------------------------------------------------- Maven (3.6.3) https://maven.apache.org ... $ sdk install maven ----------------------------------------------------- Spring Boot (2.3.1.RELEASE) http://spring.io ... $ sdk install springboot ------------------------------------------------------ ... |
此列表中的指定版本表示每个SDK的稳定版本或LTS版本。
安装和管理Java版本
要列出可用的Java版本,请使用list命令。结果是按供应商分组并按版本排序的条目表:
$ sdk list java =================================================================== Available Java Versions =================================================================== Vendor | Use | Version | Dist | Status | Identifier ------------------------------------------------------------------- AdoptOpenJDK | | 14.0.1 | adpt | | 14.0.1.j9-adpt ... Amazon | | 11.0.8 | amzn | | 11.0.8-amzn ... Azul Zulu | | 14.0.2 | zulu | | 14.0.2-zulu ... BellSoft | | 14.0.2 | librca | | 14.0.2.fx-librca ... GraalVM | | 20.1.0 | grl | | 20.1.0.r11-grl ... Java.net | | 16.ea | open | | 16.ea.6-open ... SAP | | 14.0.2 | sapmchn | | 14.0.2-sapmchn |
假设我们要从Azul Zulu安装最新版本的Java 14。因此,我们复制其标识符(即表的版本),并将其作为参数添加到install命令中:
$ sdk install java 14.0.2-zulu Downloading: java 14.0.2-zulu In progress... ########### 100.0% Repackaging Java 14.0.2-zulu... Done repackaging... Installing: java 14.0.2-zulu Done installing! Setting java 14.0.2-zulu as default. |
SDKMAN!将下载此版本并将其解压缩到我们计算机上的目录中。
而且,它将更新环境变量,以便我们可以在终端中立即使用Java。
我们可以使用list命令来验证任何版本的状态和使用情况。例如现在已安装并使用版本14.0.1:
$ sdk list java ================================================================= Available Java Versions ================================================================= Vendor | Use | Version | Dist | Status | Identifier ----------------------------------------------------------------- ... Azul Zulu | >>> | 14.0.1 | adpt | [b]installed [/b]| 14.0.1.j9-adpt ... |
另外,可以通过相同的命令但通过指定二进制文件的路径作为附加参数从计算机上安装Java或任何自定义版本:
$ sdk install java custom-8 ~/Downloads/my-company-jdk-custom-8 |
在版本之间切换
在两个版本之间暂时切换:
$ sdk use java 14.0.1.j9-adpt |
永久地切换版本:
$ sdk default java 14.0.1.j9-adpt |
要删除已安装的版本,请使用目标版本运行卸载命令:
$ sdk uninstall java 14.0.1.j9-adpt |
检查Java的当前版本,我们运行:
$ sdk current java Using java version 14.0.2-zulu |
或
$ java -version |
或
$ sdk current Using: java: 14.0.2-zulu gradle: 6.2.2 |
在IDE中用SDKMAN
已安装的SDK存储在SDKMAN中!该目录默认为〜/ .sdkman / candidates。
例如,不同版本的Java也将在〜/ .sdkman / candidates / java /目录下提供,并且子目录以这些版本命名:
$ ls -al ~/.sdkman/candidates/java/ total 0 drwxrwxrwx 1 user user 12 Jul 25 20:00 . drwxrwxrwx 1 user user 12 Jul 25 20:00 .. drwxrwxr-x 1 user user 12 Jul 25 20:00 14.0.2-zulu lrwxrwxrwx 1 user user 14 Jul 25 20:00 current -> 14.0.2-zulu |
IntelliJ IDEA:
在IntelliJ IDEA中,打开“项目结构”,然后打开“项目设置”。在项目配置中,我们可以通过从“ Project SDK”部分中选择“ New…”来添加新的Java版本。
我们还可以在“构建工具”部分中定义要使用的Java,Gradle或Maven版本。