SDKMAN!是在大多数Unix系统上管理多个软件开发套件的并行版本的工具。它提供了一个方便的命令行接口(CLI)和用于安装、切换、删除和列出候选对象的API。以前被称为GVM的Groovy环境管理器,它是由非常有用的RVM和rbenv工具所启发的,这些工具在Ruby社区中广泛使用。

安装

在类unix平台上安装SDKMAN!,就像以前一样容易。SDKMAN!在Mac OSX、Linux、Cygwin、Solaris和FreeBSD上可以顺利安装。我们还支持Bash和ZSH shell。

只需打开一个新的终端并输入:

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

按照屏幕上的说明完成安装。

接下来,打开一个新的终端或输入:

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

最后,运行以下代码片段,以确保安装成功:

sdk version

Beta通道

对于更喜欢冒险的人来说,我们有一个测试频道。所有新的CLI特性都将首先针对这一组用户进行试用。Beta版本在大多数情况下可以被认为是稳定的,但偶尔也会中断。要加入测试程序,只需更新~/.sdkman/etc/config文件如下:

sdkman_beta_channel=true

接下来,打开一个新的终端并执行一个强制更新:

sdk selfupdate force

要离开测试通道,只需将上面的配置设置为false,并遵循相同的步骤。

卸载

在不太可能的情况下,您希望卸载SDKMAN!我们还没有自动化的方法来做这件事。如果你真的想把它从你的系统中删除,那就很容易做到。下面的内容将指导您进行备份,然后从系统中删除整个安装。

tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/ .sdkman
rm -rf ~/.sdkman

最后一步是编辑和删除您的.bashrc, .bash_profile 和/或 .profile文件中的初始化代码片段。 如果你使用ZSH,从.zshrc中删除它。 要删除的代码片段如下:

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
[[ -s "/home/dudette/.sdkman/bin/sdkman-init.sh" ]] && source "/home/dudette/.sdkman/bin/sdkman-init.sh"

一旦删除,您就成功地从你的机器卸载了SDKMAN!。

安装到自定义位置

安装SDKMAN!到一个除$HOME/.sdkman以外的自定义位置是可能的。 这可以通过在安装之前将您的定制位置导出为SDKMAN_DIR来实现。 只需打开一个新的终端并输入:

export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash

为此,您的用户对该文件夹拥有完全访问权限是至关重要的。同样重要的是,如果该文件夹不存在,SDKMAN!将尝试创建它。

使用

安装SDK

最新稳定版本

通过运行下面的命令,安装您的SDK的最新稳定版本(比如Java JDK)。

sdk install java

特定版本

需要一个SDK的特定版本吗?简单地限定你需要的版本:

sdk install java 11.0.9.fx-zulu

安装本地版本

需要一个快照吗?已经有本地安装了吗?设置一个本地版本:

sdk install groovy 3.0.0-SNAPSHOT /path/to/groovy-3.0.0-SNAPSHOT

常用命令

sdk uninstall java 11.0.9.fx-zulu			#删除
sdk list java								#列出java可安装版本
sdk use scala 2.12.1						#使用某一个版本
sdk selfupdate								#自升级
sdk flush temp								#临时文件夹

配置优化

尽管配置是有限的,但是可配置项的列表会随着需要而增长。 可以在~/.sdkman/etc/config文件中找到配置。 目前,以下是可配置的:

# make sdkman non-interactive, preferred for CI environments
sdkman_auto_answer=true|false

# perform automatic selfupdates
sdkman_auto_selfupdate=true|false

# disables SSL certificate verification
# https://github.com/sdkman/sdkman-cli/issues/327
# HERE BE DRAGONS....
sdkman_insecure_ssl=true|false

# disable GVM alias, for users of the Go Version Manager
sdkman_disable_gvm_alias=true|false

# configure curl timeouts
sdkman_curl_connect_timeout=5
sdkman_curl_max_time=4

# subscribe to the beta channel
sdkman_beta_channel=true