SDKMAN!
是在大多数Unix系统上管理多个软件开发套件的并行版本的工具。它提供了一个方便的命令行接口(CLI)和用于安装、切换、删除和列出候选对象的API。以前被称为GVM的Groovy环境管理器,它是由非常有用的RVM和rbenv工具所启发的,这些工具在Ruby社区中广泛使用。
安装
在类unix平台上安装SDKMAN!,就像以前一样容易。SDKMAN!在Mac OSX、Linux、Cygwin、Solaris和FreeBSD上可以顺利安装。我们还支持Bash和ZSH shell。
只需打开一个新的终端并输入:
1 | $ curl -s "https://get.sdkman.io" | bash |
按照屏幕上的说明完成安装。
接下来,打开一个新的终端或输入:
1 | $ source "$HOME/.sdkman/bin/sdkman-init.sh" |
最后,运行以下代码片段,以确保安装成功:
1 | $ sdk version |
如果一切顺利,则应该显示该版本:
1 | sdkman 5.0.0+51 |
Beta通道
对于更喜欢冒险的人来说,我们有一个测试频道。所有新的CLI特性都将首先针对这一组用户进行试用。Beta版本在大多数情况下可以被认为是稳定的,但偶尔也会中断。要加入测试程序,只需更新~/.sdkman/etc/config
文件如下:
1 | sdkman_beta_channel=true |
接下来,打开一个新的终端并执行一个强制更新:
1 | $ sdk selfupdate force |
要离开测试通道,只需将上面的配置设置为false
,并遵循相同的步骤。
卸载
在不太可能的情况下,您希望卸载SDKMAN!我们还没有自动化的方法来做这件事。如果你真的想把它从你的系统中删除,那就很容易做到。下面的内容将指导您进行备份,然后从系统中删除整个安装。
1 | tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/ .sdkman |
最后一步是编辑和删除您的.bashrc
, .bash_profile
和/或 .profile
文件中的初始化代码片段。
如果你使用ZSH,从.zshrc
中删除它。
要删除的代码片段如下:
1 | #THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!! |
一旦删除,您就成功地从你的机器卸载了SDKMAN!。
安装到自定义位置
安装SDKMAN!到一个除$HOME/.sdkman
以外的自定义位置是可能的。
这可以通过在安装之前将您的定制位置导出为SDKMAN_DIR
来实现。
只需打开一个新的终端并输入:
1 | $ export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash |
为此,您的用户对该文件夹拥有完全访问权限是至关重要的。同样重要的是,如果该文件夹不存在,SDKMAN!将尝试创建它。
使用
安装SDK
最新稳定版本
通过运行下面的命令,安装您的SDK的最新稳定版本(比如Java JDK)。
1 | $ sdk install java |
您将看到如下输出:
1 | Downloading: java 8u111 |
如果您希望将此版本设置为默认值,则会提示您。
1 | Do you want java 8u111 to be set as default? (Y/n): |
回答yes(或回车)将确保所有后续的shell都将在默认情况下使用这个版本的SDK。
1 | Setting java 8u111 as default. |
特定版本
需要一个SDK的特定版本吗?简单地限定你需要的版本:
1 | $ sdk install scala 2.12.1 |
所有后续步骤都与上面相同。
安装本地版本
需要一个快照吗?已经有本地安装了吗?设置一个本地版本:
1 | $ sdk install groovy 3.0.0-SNAPSHOT /path/to/groovy-3.0.0-SNAPSHOT |
删除版本
删除一个安装版本。
1 | $ sdk uninstall scala 2.11.6 |
候选列表
获得一份可用的候选列表:
1 | $ sdk list |
这将提供一个可搜索的字母列表,其中有名称、当前稳定的默认版本、网站URL、描述以及每个候选人的简单安装命令。输出被用管道连接到更少的标准键盘快捷键,可以使用q
退出。
1 |
|
版本列表
要获得候选版本的列表:
1 | sdk list groovy |
这将产生一个列表视图,显示SDK的可用、本地、安装和当前版本。
1 |
|
使用版本
在当前终端选择使用一个给定版本:
1 | $ sdk use scala 2.12.1 |
重要的是要认识到,这将只改变当前shell的候选版本。要使此更改持久,请使用default
命令。
默认的版本
选择一个给定版本的默认值:
1 | $ sdk default scala 2.11.6 |
这将确保所有后续的shell都将以2.11.6的版本开始使用。
当前版本(s)
要了解目前正在使用的候选:
1 | $ sdk current java |
要了解目前所有候选的使用情况:
1 | $ sdk current |
过时的版本(s)
看看你的系统上的候选人目前的情况是怎样的:
1 | $ sdk outdated springboot |
看看所有候选都过时了:
1 | $ sdk outdated |
SDKMAN!版本
显示当前的SDKMAN!版本
1 | $ sdk version |
广播消息
在命令行上获取最新的SDK发布通知:
1 |
|
值得一提的是,每当在SDKMAN!上发布一个SDK版本时,在使用CLI时将会出现一个通知。每一次新的广播都被推到推特上。
离线模式
最初被称为“飞机模式”,它允许SDKMAN!在离线工作时发挥作用。它有一个参数,可以通过它来启用或禁用离线模式。
1 |
|
当在离线模式下运行时,大多数命令仍然可以工作,即使它们的操作是缩小的。一个例子是list命令,它只显示当前安装的和活动的版本(s):
1 | $ sdk list |
当因特网变得可用/不可用时,离线模式也将自动禁用/启用。当然,需要网络连接的命令不会起作用,但会发出警告。
自升级
安装一个新版本的SDKMAN!如果可用。
1 | $ sdk selfupdate |
如果没有新版本可用,将显示适当的消息。重新安装可能是通过将force参数传递给命令:
1 | $ sdk selfupdate force |
自动检查新版本的SDKMAN!也将代表用户执行。
冲洗
有时可能需要冲洗 SDKMAN!的本地状态。flush命令可以帮助执行以下操作,并允许执行以下操作:
Candidates
1 | $ sdk flush candidates |
清除候选列表。打开一个新的终端将获取并存储最新的列表。当一个新的候选在SDKMAN上可用时,通常需要这样做
Broadcast
1 | $ sdk flush broadcast |
清除广播缓存,下载下一个命令调用的最新可用新闻。
Archives
1 | $ sdk flush archives |
清除包含所有下载的SDK二进制文件的缓存。这可以占用很多空间,所以值得不时地清理一下!
临时文件夹
1 | $ sdk flush temp |
在安装新版本的候选版本和SDKMAN的时候,清除准备工作文件夹。
帮助
您可以通过运行以下命令获得基本的帮助:
1 | $ sdk help |
这应该会产生一些类似的东西:
1 | Usage: sdk [version] |
配置
尽管配置是有限的,但是可配置项的列表会随着需要而增长。
可以在~/.sdkman/etc/config
文件中找到配置。
目前,以下是可配置的:
1 | # make sdkman non-interactive, preferred for CI environments |