업데이트:


프로젝트별로 사용하고있는 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)의 다양한 버전들을 관리하기 위한 도구이다.

BashZSH 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

위의 명령어를 실행했다.


참고

댓글남기기