업데이트:


프로젝트별로 사용하고있는 Java 버전을 다르게 설정하기 위해 jenv를 사용하고 있었다.

이번에는 SDKMAN!을 설치하고 사용하는 법에 대해 정리해 보겠다.

그런데 설치하고 사용하면서 아래와 같은 단점들이 발견되었다.

SDKMAN!의 단점

  • jenv와 달리, 기본(Global) Java 버전과 특정 디렉토리(Local)의 Java 버전을 다르게 설정할 수 없다.
    • 기본(Global) Java 버전 설정만 가능하다.
    • 예를 들어, "기본(Local) 자바 버전은 11로 두고, 특정 디렉토리의 Java 버전을 8로 두고 싶다." 와 같은 설정이 안된다.
  • jenv는 버전 변경 시, 명령어에 1.8, 11 과 같이 간단하게 적으면 되는데, SDKMAN!은 8.0.322-zulu과 같이 복잡하게 적어야 한다.

본인의 취향에 맞게 사용하면 된다.


SDKMAN!

SDMMAN!은 유닉스 기반 시스템(macOS, Linux, WSL, Cygwin, Solaris, FreeBSD)에서 여러가지 SDK(Software Development Kits)의 다양한 버전들을 관리하기 위한 도구이다.

Bash 와 ZSH shell을 모두 지원한다.


설치

$ curl -s "https://get.sdkman.io" | bash        # sdkman 설치
$ source "$HOME/.sdkman/bin/sdkman-init.sh"     # sdkman 초기화 스크립트 파일 실행

위의 명령어들을 입력해, SDKMAN!을 설치한다.

image

위의 명령어를 입력해, SDKMAN!이 잘 설치되었는지 확인한다.


Java 설치

$ sdk list java

위의 명령어를 입력해, 현재 컴퓨터에 설치할 수 있는 Java 버전들의 목록을 조회한다.

스크린샷 2022-03-28 오후 5 29 48

그러면 위와 같은 목록이 나온다.

여기에서 자신이 원하는 항목을 선택해 Identifier 컬럼값을 포함한 명령어를 입력해 설치하면 된다.

나는 Java 8, 11 버전이 필요하므로 이를 설치해 보겠다.


$ sdk install java 8.0.322-zulu
$ sdk install java 11.0.14-zulu

스크린샷 2022-03-28 오후 5 50 50

다운받은 버전 이외에 기존에 설치된 다른 버전의 자바가 없다면, 다운받은 자바 버전이 위와 같이 기본으로 설정된다.


스크린샷 2022-03-28 오후 5 52 06

그리고 새로운 버전을 다운받으면, 위와 같이 기본 버전으로 설정할거냐고 물어본다. 본인의 선택에 따라 입력하면 된다.

$ sdk list java

위의 명령어를 다시 입력하면,

image

위와 같이 설치되어있는 항목들과, 현재 default로 사용중인 버전을 확인할 수 있다.

image

위와 같이 자바 버전을 확인하면, 정상적으로 잘 설치되었음을 볼 수 있다.


기본(Global) Java 버전 설정

기본적으로 적용할 Java 버전을 설정해보자.

나는 기본으로 Java 8 버전을 사용할 것이기 때문에, 아래와 같이 명령어를 실행했다.

$ sdk default java 8.0.322-zulu

image

위와 같은 결과가 출력되고,

image

image

위와 같이 잘 변경되었음을 확인할 수 있다.


삭제

$ rm -rf ~/.sdkman

위의 명령어를 입력해 SDKMAN!을 삭제한다.

그리고, 자신이 사용하는 쉘의 설정파일(ex ~/.bashrc , ~/.bash_profile, ~/.profile, ~/.zshrc )에 가서

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
[[ -s "/home/dudette/.sdkman/bin/sdkman-init.sh" ]] && source "/home/dudette/.sdkman/bin/sdkman-init.sh"

위의 내용을 삭제한다.

$ source ${쉘 설정파일 경로}

위의 명령어를 입력해, 쉘 설정파일을 적용한다.

나같은 경우 ZSH를 사용하므로

$ source ~/.zshrc

위의 명령어를 실행했다.


참고

댓글남기기