jdkman으로 java 버전 관리하기
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 파일 생성