Константин Рядов Инженер JVM, ушедший в инженерию ИИ. То, что я сделал.

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.

SDKMAN!

Собственно как это выглядит, после запуска:

  1. инсталлятора
$ curl -s "https://get.sdkman.io" | bash
  1. команды установки 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

Впервые опубликовано в ЖЖ.

Все записи