SDKMAN! - тул менеджмента SDK для разработчика на Java/Groovy/Kotlin/Scala и связанных фреймворков
Каждому разработчику, билд-инженеру и просто DevOps-у так или иначе приходится устанавливать и обновлять JDK/Ceylon/Groovy/Kotlin/Scala и Grails/Griffon/Spring Framework, а также связанные с ними системы сборки Ant/Maven/Gradle/Kobalt/sbt и проч.
http://sdkman.io/ - Unix-тул менеджмента разных версий SDK. Работает и под Cygwin на Windows.

Собственно как это выглядит, после запуска:
- инсталлятора
$ curl -s "https://get.sdkman.io" | bash
- команды установки environment:
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
Установка SDK
Последняя стабильная версия
Установка latest stable версии SDK (например, Java JDK) :
$ sdk install java
Покажет нам:
Downloading: java 8u121
In progress...
######################################################################## 100.0%
Installing: java 8u121
Done installing!
После этого можно указать, что это будет версия default.
Do you want java 8u121 to be set as default? (Y/n):
Соотв. при выборе yes (или нажатия enter) все открывающиеся shell-ы будут использовать версию SDK озвученную выше.
Setting java 8u121 as default.
Заданная версия
Нужна **specific-**версия SDK? Просто укажем ее параметром:
$ sdk install scala 2.12.1
Локальная версия
Нужна версия snapshot? У вас уже есть локальная инсталляция? Установите локальную версию:
$ sdk install groovy 3.0.0-SNAPSHOT /path/to/groovy-3.0.0-SNAPSHOT
Удаление версии
Удаляем установленную версию:
$ sdk uninstall scala 2.11.6
Списки доступных SDK и прочих компонентов
Для получения списка того что доступно для установки:
$ sdk list
Выведет отсортированным в алфавитном порядке список возможных кандидатов на установку с описанием, последнюю стабильную версию, адрес сайта и команду для установки.
================================================================================
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
Покажет список доступных, локальных и текущей версий компонентов:
================================================================================
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
Использование версии по умолчанию
Для использования версии по умолчанию:
$ 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)
Текущая версия SDKMAN!
Отобразить версию SDKMAN!:
$ sdk version
Сообщения об обновлении компонент
Получить список сообщений об обновлении компонент:
$ sdk broadcast
==== BROADCAST =================================================================
* 06/12/16: Scala 2.12.1 released on SDKMAN! #scala
* 23/11/16: Gradle 3.2.1 released on SDKMAN! #gradle
* 22/11/16: Ceylon 1.3.1 released on SDKMAN! #ceylonlang
================================================================================
Также сообщение будет получено, если выйдет новая версия компонента и будет выполнена любая команда. Каждое новое сообщение попадает и в Twitter.
Offline-режим
SDKMAN! может работать в offline-режиме:
$ sdk offline enable
Forced offline mode enabled.
$ sdk offline disable
Online mode re-enabled!
В offline-режиме большинство команд работают. Например команда list, отображает только установленные и текущую активную версии:
$ sdk list
------------------------------------------------------------
Offline Mode: only showing installed groovy versions
------------------------------------------------------------
> 2.4.4
* 2.4.3
------------------------------------------------------------
* - installed
> - currently in use
------------------------------------------------------------
Также offline-режим автоматически включается/выключается если доступно/недоступно соединение с SDKMAN! серверами.
Обновление SDKMAN!
Можно обновить сам SDKMAN!:
$ sdk selfupdate
Если хочется принудительно переустановить:
$ sdk selfupdate force
Flush
Время от времени необходимо сбрасывать состояние кэшей SDKMAN!. Команда flush делает это:
Компоненты
$ sdk flush candidates
Очищает список компонентов. Открывает новый терминал, получает и сохраняет в кэше актуальный список компонентов. Обычно данная команда полезна, когда в списке компонентов SDKMAN! появляется новый компонент.
Новости
$ sdk flush broadcast
Очищает новостной кэш и загружает последние новости на выполнении следующей команды.
Архивы
$ sdk flush archives
Очищает все кэшированные SDK компоненты. Это может быть полезно для сохранения свободного места на диске.
Временные файлы
$ sdk flush temp
Чистит временные файлы, необходимые для работы самого SDKMAN!.
Конфигурация
Конфигурация расположена в ~/.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
Впервые опубликовано в ЖЖ.