SDKMAN

sdkman은 SDK를 버전을 병렬로 관리하기 위한 도구입니다. 대부분의 유닉스 기반 시스템에서 사용할 수 있습니다. sdkman을 이용하여 여러 Java 버전을 관리할 수 있는 방법에 대해 알아보겠습니다.

Install

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

설치가 완료되면 터미널에 아래 명령을 실행합니다.

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

마지막으로, 설치된 SDKMAN!의 버전을 확인하여 성공적으로 설치가 완료됐는지 확인합니다.

$ sdk version
SDKMAN 5.16.0

Uninstall

sdkman이 설치된 경로는 ~/.sdkman 입니다. 간단하게 rm 명령으로 삭제가 가능합니다.

$ rm -rf ~/.sdkman

마지막으로 .bashrc, .bash_profile, .zshrc 등에 설정한 내용을 삭제합니다.

JDK 설치하기

# 8.0.192-zulu 버전 설치
$ sdk install java 11.0.16-tem

최신 버전의 Java를 설치하는 경우 설치 명령에 버전을 입력하지 않으면 됩니다.

$ sdk install java

설치된 버전 조회는 아래와 같이 할 수 있습니다.

$ sdk list java
================================================================================
Available Java Versions for macOS ARM 64bit
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 Corretto      |     | 18.0.2       | amzn    |            | 18.0.2-amzn
               |     | 18.0.1       | amzn    |            | 18.0.1-amzn
               |     | 17.0.4       | amzn    |            | 17.0.4-amzn
               |     | 17.0.3.6.1   | amzn    |            | 17.0.3.6.1-amzn
               |     | 11.0.16      | amzn    |            | 11.0.16-amzn
               |     | 11.0.15.9.1  | amzn    |            | 11.0.15.9.1-amzn
               |     | 8.332.08.1   | amzn    |            | 8.332.08.1-amzn
               |     | 8.0.342      | amzn    |            | 8.0.342-amzn
 Temurin       |     | 18.0.2       | tem     |            | 18.0.2-tem
               |     | 18.0.1       | tem     |            | 18.0.1-tem
               |     | 17.0.4       | tem     |            | 17.0.4-tem
               |     | 17.0.3       | tem     |            | 17.0.3-tem
               | >>> | 11.0.16      | tem     | installed  | 11.0.16-tem
               |     | 11.0.15      | tem     |            | 11.0.15-tem
...


설치된 Java 위치는 ~/.sdkman/candidates/java/ 입니다.

설치된 Java 버전 변경

현재 사용하고 있는 버전을 11.0.1-zulu 버전으로 변경해보겠습니다.

$ sdk use java 11.0.1-zulu

# 현재 사용 버전 확인
$ sdk current

Using:

java: 11.0.1-zulu

Java 버전이 11.0.16-tem 에서 11.0.1-zulu 로 변경된 것을 확인할 수 있습니다. 하지만, 중요한 점은 현재 사용하고 있는 쉘(shell)의 Java 버전만 변경됐다는 것입니다. 모든 쉘(shell)에 동일한 버전으로 변경되길 원한다면 default 명령을 사용해야 합니다.

Default 버전 지정

설치된 Java 버전 중 11.0.16-tem을 default 버전으로 변경합니다.

$ sdk default java 11.0.16-tem


이제 모든 쉘(shell)에서 11.0.16-tem 버전을 사용할 수 있습니다.

버전 업그레이드

$ sdk upgrade java

Java 버전의 현재 최신 정보를 확인하고, 새로운 버전이 있을 경우 업그레이드 할 수 있습니다.

Project Directory 단위로 버전 관리

auto env 설정

$ sdk config
...
sdkman_auto_env=true # true로 수정
...


수정 완료 후 .sdkmanrc 파일이 있는 프로젝트에서 터미널을 켰을 때 아래와 같이 자동으로 sdk 버전이 선택됩니다.

만약 .sdkmanrc 파일에 설정되어 있는 sdk가 설치되어 있지 않을 때 아래의 명령으로 해결할 수 있습니다.

$ sdk env install


.sdkmanrc 만들기

신규 프로젝트 생성시 아래의 명령으로 현재 선택되어 있는 sdk version의 env를 생성할 수 있습니다.

# 먼저 sdk use java 로 버전을 선택한 상태에서
$ sdk env init # .sdkmanrc 파일 생성