SDKMAN是一个基于Unix系统的管理多重软件开发工具箱并行版本的工具。它为安装,转换,移除和展示可安装列表提供了简单的命令行接口(CLI)和API。前身是GVM(the Groovy enVironment Manager)其灵感来自于主要在在Ruby社区使用的RVM和vbenv工具。
By Developers, for Developers
让生活更简单。不需要很多下载页面,解压,添加_HOME到PATH环境变量。
Java all the way down
为JVM,比如java,Groovy,Scala,Kotlin和Ceylon,安装软件工具箱。Activator, Ant, Gradle, Grails, Maven, SBT, Spring Boot, Vert.x 和其他许多工具都支持。
Lightweight
使用bash,你的系统只需要安装curl和zip/unzip就行。甚至ZSH也可以。
Multi-platform
在任何基于UNIX系统的平台上都可以运行:Mac OSX,Linux,Cygwin,Solaris和FreeBSD。Windows用户可以使用Powershell 客户端。
APIs
新用户通过开源的Broker REST API可以很容易使用。供应商可以通过一个安全的供应商API发布和声明自己的版本。
Get started now!
接下来,把下面的命令粘贴到终端并且运行:
$ curl -s "https://get.sdkman.io" | bash
$ curl -s "https://get.sdkman.io" | bash
,根据屏幕上的提示完成安装。$ source "$HOME/.sdkman/bin/sdkman-init.sh"
。sdk version
,如果安装成功,会显示 sdkman 5.0.0+51
。运行
tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/ .sdkman
$ rm -rf ~/.sdkman
默认是安装在了$HOME/.sdkman
下,我们可以自定义安装位置
$ export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash
。
通过下面的命令可以安装sdk选项的最新稳定版本:
$ sdk install java
你会看到下面的输出:
Downloading: java 8u111
In progress...
######################################################################## 100.0%
Installing: java 8u111
Done installing!
下面你会得到提示,是否将这个版本设置为默认版本:
Do you want java 8u111 to be set as default? (Y/n):
输入yes
(或者点击回车键)会在随后打开的shells中将这个版本作为默认版本使用。
指定你想安装的版本$ sdk install scala 2.12.1
,之后同上。
$ sdk install groovy 3.0.0-SNAPSHOT /path/to/groovy-3.0.0-SNAPSHOT
$ sdk uninstall scala 2.11.6
$ sdk list
这个命令会展示一个按字母排序的可安装选项列表,列表的每一项显示名称,当前稳定默认版本,地址,描述和简单的安装命令。输出支持管道,因此可以使用键盘快捷键q
退出。
================================================================================
Available Candidates
================================================================================
q-quit /-search down
j-down ?-search up
k-up h-help
--------------------------------------------------------------------------------
Groovy (2.4.5) http://www.groovy-lang.org/
Groovy is a powerful, optionally typed and dynamic language, with static-typing
and static compilation capabilities, for the Java platform aimed at multiplying
developers’ productivity thanks to a concise, familiar and easy to learn syntax.
It integrates smoothly with any Java program, and immediately delivers to your
application powerful features, including scripting capabilities, Domain-Specific
Language authoring, runtime and compile-time meta-programming and functional
programming.
$ sdk install groovy
--------------------------------------------------------------------------------
Scala (2.11.7) http://www.scala-lang.org/
...
$ sdk list groovy
这个命令会展示当前版本的SDK可选的,本地的,已安装的。
================================================================================
Available Groovy Versions
================================================================================
> * 2.4.4 2.3.1 2.0.8 1.8.3
2.4.3 2.3.0 2.0.7 1.8.2
2.4.2 2.2.2 2.0.6 1.8.1
2.4.1 2.2.1 2.0.5 1.8.0
2.4.0 2.2.0 2.0.4 1.7.9
2.3.9 2.1.9 2.0.3 1.7.8
2.3.8 2.1.8 2.0.2 1.7.7
2.3.7 2.1.7 2.0.1 1.7.6
2.3.6 2.1.6 2.0.0 1.7.5
2.3.5 2.1.5 1.8.9 1.7.4
2.3.4 2.1.4 1.8.8 1.7.3
2.3.3 2.1.3 1.8.7 1.7.2
2.3.2 2.1.2 1.8.6 1.7.11
2.3.11 2.1.1 1.8.5 1.7.10
2.3.10 2.1.0 1.8.4 1.7.1
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
在当前终端中使用给定版本:
$ sdk use scala 2.12.1
要意识到这个命令只会切换当前shell的可选版本。要让这种改变持久化,使用默认的命令。
将给定版本设置为默认版本:
$ sdk default scala 2.11.6
。
查看当前版本:
$ sdk current java
Using java version 8u111
$ sdk current
Using:
groovy: 2.4.7
java: 8u111
scala: 2.12.1
系统上某个工具版本是否过期:
$ sdk outdated springboot
Outdated:
springboot (1.2.4.RELEASE, 1.2.3.RELEASE < 1.2.5.RELEASE)
$ sdk outdated
Outdated:
gradle (2.3, 1.11, 2.4, 2.5 < 2.6)
grails (2.5.1 < 3.0.4)
springboot (1.2.4.RELEASE, 1.2.3.RELEASE < 1.2.5.RELEASE)
使用下面的命令,如果有新版本可以更新:
$ sdk selfupdate
强制重新安装:
$ sdk selfupdate force
$ sdk flush candidates
这个命令会清空安装选项列表。打开新终端后,会拉取并在本地存储最新的列表。
$ sdk help
输出:
Usage: sdk [version]
sdk offline
commands:
install or i [version]
uninstall or rm
list or ls
use or u [version]
default or d [version]
current or c [candidate]
outdated or o [candidate]
version or v
broadcast or b
help or h
offline
selfupdate [force]
flush
candidate : ...
version : where optional, defaults to latest stable if not provided
eg: sdk install groovy
配置文件~/.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
Activator (1.3.10)
Typesafe是一款用来帮助构建反应系统的GUI/CLI工具。它使用sbt(简单构建构建)来构建,运行,测试项目。提供了一个代码编辑接口,还有可以clone和use的模板和种子。
$ sdk install activator
Ant (1.10.0)(不解释)
https://ant.apache.org/
$ sdk install ant
AsciidoctorJ (1.5.5)
http://asciidoctor.org/
AsciidoctorJ 是一个在JVM上运行Asciidoctor 的官方库。通过Asciidoctor,可以将java或者其他JVM语言转换为AsciiDoc 内容或者解析的AsciiDoc 文档的分析结构。
$ sdk install asciidoctorj
Ceylon (1.3.2)
http://ceylon-lang.org/
Ceylon是一种为java和js虚拟机而产生的现代化的,模块化的,静态类型的编程语言。该语言以弹性和可读性,一个唯一的和不普遍的优雅的静态类型系统,强大的模块结构和出色的工具为特征。
$ sdk install ceylon