실제 기업에서 IntelliJ
를 사용하는 경우가 아직은 많이 없을 것이라 생각한다.
그래서 Eclipse
기반의 STS4
를 활용하는 방법을 익혀보려고 한다.
STS4
는 STS3
과 다르게 SpringBoot
를 지원하고 있다.
STS3
은 Spring Framework
만을 지원하기 때문에, Boot
를 사용할 수 없다.
기본 설치
나는 macos M1
환경에서 사용을 할 것이다.
따라서, https://spring.io/tools
홈페이지에서 macos arm_64
를 설치해주었다.
기본적인 설치 과정은 아래의 블로그를 참고하였다.
프로젝트 생성
가장 처음 STS4
를 설치하고 구동을 하게 되면 아래와 같은 화면을 볼 수 있다.
뭔가 Eclipse
와는 조금 다른 것 같은 화면을 볼 수 있다.
지금부터 SpringBoot
기본 프로젝트를 생성해보려고 한다.
프로젝트를 생성하기 위해 SpringBoot Starter
프로젝트 생성하기를 눌러보자.
위와 같이 프로젝트를 생성할 수 있는 창이 뜨게 되는데, Java version
에 주목하자.
나는 JDK 17
보다는 현업에 더 많이 쓰이는 JDK 8, 11
을 사용하려고 한다.
그러나 선택지에는 17
까지 밖에 나오지 않는 상태이다.
선택지를 늘리기 위해, 우리는 JDK 11
을 직접 설치해줄 것이다.
Java 환경 설정
보통 macos
를 사용하는 경우엔 Homebrew
를 통해 OpenJDK
를 설치한다.
brew install --cask adoptopenjdk11
과 같이 CLI 명령어를 통해 설치할 수 있다.
이 때, --cask
라는 이상한 옵션이 보이는데 이게 무슨 의미일까?
cask vs formulae
Homebrew
에서 설치할 수 있는 패키지에는 두 종류가 있다.
바로 Cask
와 Formulae
가 그 두 종류이다.
아래는 현재 내 Homebrew
에 설치 되어있는 패키지들이다.
설치된 패키지의 목록만 봐서는 둘의 차이가 뭔지 알기 쉽지가 않다.
그래서 인터넷에 검색을 조금 해보니, 굉장히 단순한 차이였다.
- Cask : GUI 형태로 마우스로 실행시킬 수 있는 형태의 서비스
- Formulae : GUI 형태가 아닌, CLI 환경에서 명령어로 실행시킬 수 있는 서비스
실제 설치된 패키지의 예시를 들어보면, Redis
나 MariaDB
는 GUI가 존재하지 않는다.
하지만 Cask
로 분류된 VSCode
의 경우에는, GUI를 통해 조작하게 된다.
그럼 이제 본론으로 돌아가서 OpenJDK
의 설치를 마저 진행해보도록 하자.
사실 OpenJDK
가 왜 Cask
로 분류되는지는 잘 모르겠다.
하지만 앞서 말한대로 brew install --cask adoptopenjdk11
과 같이 설치를 해야 한다.
나는 과거 설치를 한 적이 있는지 기억은 안나지만 이미 설치가 되어있었다.
위의 명령어인 /usr/libexec/java_home -V
를 입력하면, 설치된 JDK 버전을 확인할 수 있다.
기본적으로 최신 버전의 JDK
를 자동으로 설정하기 때문에 지금은 17
로 설정되어 있다.
그럼 이제부터 기본 설정을 OpenJDK 11
로 바꾸어 보자.
Java 버전 변경
zshrc
파일을 변경함으로써 자바 버전을 변경해보도록 하자.
jEnv
를 통해서 버전을 바꿀수도 있다고 하는데, 나는 기본적인 방법부터 익히려고 한다.
만약 bash
를 사용한다면 bash_profile
을 수정하면 된다.
하지만 나는 zsh
를 사용하기 때문에, zshrc
를 수정해서 자바 버전을 바꾸려고 한다.
나는 위와 같이 이미 내용을 변경해놓은 상태이다.
JAVA_HOME_11
환경 변수를 설정해놓고, export
명령어를 통해 적용시킨다.
이제 저장 후, source ~/.zshrc
명령어를 통해 변경 사항을 적용해주면 된다.
이후 확인해보면, 위와 같이 OpenJDK 11
로 기본 버전이 변경되었음을 확인할 수 있다!
하지만, 프로젝트 생성 과정에서는 계속해서 22, 21, 17
버전만 잡히고 있었다.
혹시 STS
의 자체 경로 문제인지를 확인하기 위해 재설치를 해보기로 했다.
STS 인식 문제
재설치를 했지만 계속해서 Java 17
부터 밖에 인식을 하지 못하는 상황이다.
그래서 조금 검색을 해보니 JRE
설정을 통해 직접 잡아주어야 하는 것 같다.
JRE
란 Java Runtime Environment
를 의미하며, 자바가 실행되는 환경을 의미한다.
따라서 내가 설치했던 OpenJDK 11
을 기본 환경으로 설정하기 위해 위와 같이 적용한다.
하지만 위의 문구를 보면 Compiler
의 지원 문제가 있는 것으로 확인된다.
따라서 위와 같이 Compiler
의 Compliance Level
을 11
까지 내려주자.
하지만 이렇게 해도, 22, 21, 17
만 잡히고 11
버전을 잡지 못하고 있었다.
계속해서 찾아보니 gradle
설정 또한 해주어야 한다는 얘기를 볼 수 있었다.
마지막으로 아래와 같이 gradle
설정까지 마무리 해주도록 하자.
Deprecated SpringBoot 2.X.X
정말 바보같이 기본적인 사항도 인지하지 못하고 프로젝트를 생성하고 있었다.
SpringBoot 2.X.X
는 2023년 11월
이후로 더 이상 지원되지 않는다고 한다.
또한, SpringBoot 3.X.X
는 반드시 JDK 17
이상을 사용해야 생성할 수 있다.
즉, 애초에 JDK 11
을 사용하기 위해서는 Spring Legacy
를 사용해야 하는 것!
결국 모든 설정을 다시 JDK 17
에 맞추어 프로젝트를 생성했다.