Перейти к основному содержимому

Руководство по SDKMAN!

· 6 мин. чтения

1. Обзор

С новым циклом выпуска Java разработчикам может потребоваться управлять параллельными версиями и различными сборками пакетов разработки программного обеспечения (SDK) в своей среде. Поэтому установка переменной PATH иногда может стать настоящей головной болью.

В этом уроке мы увидим, как SDKMAN! может помочь с легкостью управлять установкой и выбором SDK.

2. Что такое SDKMAN!?

СДКМАН! — это инструмент для управления параллельными версиями нескольких SDK, который SDKMAN! назвать «кандидатов» .

Он предоставляет удобный интерфейс командной строки (CLI) и API для просмотра, установки, переключения и удаления кандидатов. Кроме того, он позаботится о настройке переменных среды для нас.

Это также позволяет разработчикам устанавливать SDK на основе JVM, такие как Java, Groovy, Scala, Kotlin и Ceylon. Также поддерживаются Maven, Gradle, SBT, Spring Boot, Vert.x и многие другие. СДКМАН! — это бесплатная легкая утилита с открытым исходным кодом, написанная на Bash.

3. Установите SDKMAN!

СДКМАН! поддерживается всеми основными операционными системами и может быть легко установлен на всех системах на основе Unix. Кроме того, он поддерживает оболочки Bash и Zsh.

Итак, начнем с установки с помощью терминала:

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

Затем следуйте инструкциям на экране для завершения установки.

Нам могут понадобиться установленные пакеты zip и unzip для завершения процесса установки.

Затем откройте новый терминал или запустите:

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

Наконец, выполните следующую команду, чтобы убедиться, что установка работает. Если все прошло хорошо, версия должна отображаться:

$ sdk version
SDKMAN 5.8.5+522

Дополнительные сведения о настройке см. в руководстве по установке на SDKMAN! Веб-сайт.

Чтобы увидеть все доступные команды, используйте команду справки :

$ sdk help

4. Список всех кандидатов SDK

Итак, начнем с перечисления всех доступных SDK-кандидатов.

$ sdk list

Команда list показывает всех доступных кандидатов, идентифицируемых по уникальному имени, описанию, официальному сайту и команде установки : ****

=====================================================
Available Candidates
=====================================================
q-quit /-search down
j-down ?-search up
k-up h-help
-----------------------------------------------------
Java (11.0.7.hs-adpt) https://zulu.org
...
$ sdk install java
-----------------------------------------------------
Maven (3.6.3) https://maven.apache.org
...
$ sdk install maven
-----------------------------------------------------
Spring Boot (2.3.1.RELEASE) http://spring.io
...
$ sdk install springboot
------------------------------------------------------
...

Поэтому мы можем использовать этот идентификатор для установки версии кандидата по умолчанию, такой как Spring Boot (2.3.1.RELEASE) или Maven (3.6.3). Указанные версии в этом списке представляют собой стабильные или долгосрочные версии каждого пакета SDK.

5. Установка и управление версиями Java

5.1. Список версий

Чтобы получить список доступных версий Java, используйте команду list . Результатом является таблица записей, сгруппированных по производителю и отсортированных по версии:

$ sdk list java
===================================================================
Available Java Versions
===================================================================
Vendor | Use | Version | Dist | Status | Identifier
-------------------------------------------------------------------
AdoptOpenJDK | | 14.0.1 | adpt | | 14.0.1.j9-adpt
...
Amazon | | 11.0.8 | amzn | | 11.0.8-amzn
...
Azul Zulu | | 14.0.2 | zulu | | 14.0.2-zulu
...
BellSoft | | 14.0.2 | librca | | 14.0.2.fx-librca
...
GraalVM | | 20.1.0 | grl | | 20.1.0.r11-grl
...
Java.net | | 16.ea | open | | 16.ea.6-open
...
SAP | | 14.0.2 | sapmchn | | 14.0.2-sapmchn
...

Эта команда понадобится нам каждый раз, когда мы захотим проверить, переключить или управлять хранилищем кандидатов.

5.2. Установите версию Java

Допустим, мы хотим установить новейшую сборку Java 14 от Azul Zulu. Поэтому мы копируем его идентификатор, который является версией из таблицы, и добавляем его в качестве аргумента в команду установки :

$ sdk install java 14.0.2-zulu
Downloading: java 14.0.2-zulu
In progress...
########### 100.0%
Repackaging Java 14.0.2-zulu...
Done repackaging...
Installing: java 14.0.2-zulu
Done installing!
Setting java 14.0.2-zulu as default.

СДКМАН! загрузит и разархивирует эту версию в каталог на нашем компьютере.

Более того, он обновит переменные среды, чтобы мы могли сразу использовать Java в терминале.

Мы можем проверить статус и использование любой версии с помощью команды list . Следовательно, версия 14.0.1 теперь установлена и используется:

$ sdk list java
=================================================================
Available Java Versions
=================================================================
Vendor | Use | Version | Dist | Status | Identifier
-----------------------------------------------------------------
...
Azul Zulu | >>> | 14.0.1 | adpt | installed | 14.0.1.j9-adpt
...

Кроме того, можно установить Java или любую пользовательскую версию с компьютера той же командой, но указав путь к двоичным файлам в качестве дополнительного аргумента:

$ sdk install java custom-8 ~/Downloads/my-company-jdk-custom-8

5.3. Переключение между версиями

Мы можем управлять переключением между версиями в двух формах, временно:

$ sdk use java 14.0.1.j9-adpt

или постоянно:

$ sdk default java 14.0.1.j9-adpt

5.4. Удалить версию

Чтобы удалить установленную версию, запустите команду удаления с целевой версией:

$ sdk uninstall java 14.0.1.j9-adpt

5.5. Отображение используемых версий

Чтобы проверить текущую версию Java, мы запускаем текущую команду:

$ sdk current java
Using java version 14.0.2-zulu

Точно так же последняя команда имеет тот же эффект, что и:

$ java -version

Чтобы показать версию SDK на нашей машине, мы можем запустить текущую команду без аргументов:

$ sdk current
Using:
java: 14.0.2-zulu
gradle: 6.2.2

6. Использование SDKMAN! с интегрированной средой разработки

Установленные SDK хранятся в SDKMAN! каталог, который по умолчанию ~/.sdkman/candidates .

Например, различные версии Java также будут доступны в каталоге ~/.sdkman/candidates/java/ , а подкаталоги названы в честь версий:

$ ls -al ~/.sdkman/candidates/java/
total 0
drwxrwxrwx 1 user user 12 Jul 25 20:00 .
drwxrwxrwx 1 user user 12 Jul 25 20:00 ..
drwxrwxr-x 1 user user 12 Jul 25 20:00 14.0.2-zulu
lrwxrwxrwx 1 user user 14 Jul 25 20:00 current -> 14.0.2-zulu

Поэтому текущая выбранная версия Java также будет доступна как текущая в этом каталоге.

Точно так же Gradle или любой другой SDK будет установлен в каталоге кандидатов .

Таким образом, мы можем использовать любую конкретную версию Java, например, в нашей любимой IDE. Все, что нам нужно сделать, это скопировать путь к конкретной версии и указать его в конфигурации нашей IDE.

6.1. IntelliJ ИДЕЯ

В IntelliJ IDEA откройте «Структура проекта», затем откройте «Настройки проекта». В конфигурации проекта мы можем добавить новую версию Java, выбрав «Новый…» в разделе «Project SDK»:

./346b26133c2cc7d8eb81ea4d4710f959.jpg

Мы также можем определить версию Java, Gradle или Maven для использования в разделе «Инструменты сборки»:

./61f17a49b6d9b5a1c57e90aa0c592b61.jpg

./9e3d2fb6ac4898868630438aca4fc332.jpg

Совет. Версия Java должна быть такой же, как в «Project SDK» для Gradle или Maven.

6.2. Затмение

В Eclipse откройте «Свойства проекта», выберите «Путь сборки Java», а затем перейдите на вкладку «Библиотеки». Здесь мы можем управлять новым SDK Java через «Добавить библиотеку…» и следуя инструкциям:

./f4d76c61f3881b4ce32b9959694387af.jpg

Мы также можем контролировать установленные SDK для всех проектов. Откройте «Настройки» в меню «Окно», а затем перейдите к «Установленные JRE». Здесь мы можем управлять SDK Java через «Добавить…» и следуя инструкциям:

./2208fb455c9cf223113ec76ce94a5bce.jpg

7. Заключение

В этом руководстве мы показали, как SDKMAN! может помочь нам в управлении различными версиями Java SDK среди других инструментов Java Environment, таких как Maven.