[스프링부트 스타터] https://start.spring.io/
스프링이 운영하는 스프링부트 기반으로 한 스프링 프로젝트를 만들어주는 사이트
a. Maven vs Gradle
필요한 라이브러리를 당겨와서 build하는 라이프 사이클까지 관리해주는 툴.
전엔 Gradle이 있었는데 Groovy와 Kotlin으로 세분화 된 듯하다.
최근에는 Gradle을 많이 쓰는 추세로 현업에서 Maven을 쓰는 경우는 잘 없다고 한다.
b. Spring Boot
SNAPSHOT은 아직 만들고 있는 버전, M2 정식 릴리즈 되지 않은 버전으로 그 외의 다른 버전으로 선택해준다.
Group: 보통 기업 도메인 명을 사용
Artifact: build 되어 나온 결과물
Name: 프로젝트 명이라고 보면 된다.
Description과 Packaging name은 그대로 두고
Packaging은 Jar를, Java는 원하는 버전을 선택해준다.
Jar을 선택하면 tomcat이 자동으로 세팅되어 단독으로 실행이 가능하다.
c. Dependencies
Dependencies는 스프링 부트 기반으로 프로젝트를 시작할 건데 어떤 라이브러리를 당겨올 것이냐를 묻는 것이다.
여기서 ADD DEPENDENCIES... 를 선택하여 Spring Web과 Thymeleaf를 검색하여 추가해준다.
Tymeleaf는 HTML을 만들어주는 템플릿 엔지니어로 회사마다 다른 템플릿을 사용한다. 여기서는 Tymeleaf를 선택했다.
여기까지 설정을 마쳤으면 하단의 GENERATE 버튼을 눌러 파일을 다운받고 압축을 풀어 인텔리제이에서 열어준다.
인텔리제이를 실행해 다운 받은 파일이 저장된 경로를 찾아 build.gradle 파일을 열어준다.
위와 같은 창이 뜨면 Open as Project를 눌러준다.
Trust Project를 눌러주면 된다.
처음 파일을 열게 되면 외부에서 수십 메가의 라이브러리를 다운 받기 때문에 네트워크가 필요하고 시간이 꽤 오래 걸린다.
순조롭게 진행되는가 했더니..
jdk 버전이 맞지 않는다는 오류가 발생했다.
스프링 부트 3.0 이상을 사용할 경우, 반드시 jdk 17 이상을 사용해야 하는데 나는 21을 사용하고 있어 문제가 없다고 생각했다.
SDK도 openjdk21이 잡혀있었고..
그런데 계속 java 17 이상을 사용해야 한다는 오류가 뜨길래 당황스러웠다.
구글링 해서 나오는 해결방법을 써봤지만
cf. https://jojoldu.tistory.com/698
Could not resolve all artifacts for configuration ':classpath'.
오류 발생가 발생했고..
혹시나 해서 콘솔에서 java -version
javac -version
으로 확인한 결과, java와 javac 모두 1.8버전으로 나왔다.
역시 컴퓨터는 잘못이 없구나ㅠ
https://www.oracle.com/kr/java/technologies/downloads/#jdk17-windows 에서 다시 자바 상위 버전을 다운 받고
File
> Project Structure
> Project Settings
> Project
> SDK
를 openjdk-23 로 잡아주고,
File
> Settings
> Build, Execution, Deployment
> Gradle
> Gradle JVM
을 openjdk-23으로 다시 잡아줬다.
그 뒤 refresh를 해보니 정상적으로 실행되는 걸 확인할 수 있었다.
Gradle을 통해 버전을 설정하고 라이브러리를 가져왔다.
main메서드를 실행하고 주소창에 localhost:8080
를 입력하여 서버와 잘 연결되었는지 확인까지 마쳤다.
추가로 File
> Settings
> Build, Execution, Deployment
> Gradle
> Gradle Projects
에서
Build and run using과 Run tests using을 IntelliJ IDEA로 변경해주었다.
Gradle로 설정되어 있는 경우, Gradle을 통해서 run을 하면 속도가 느려지기 때문에
IntelliJ IDEA를 설정함으로써 인텔리제이에서 자바를 바로 잡아서 띄워주기 때문에 훨씬 빨리 결과를 얻을 수 있다.
콘솔로도 빌드를 할 수 있는데,
Windows
+ R
> cmd
입력하여 명령 프롬프트를 열어준다.
내가 빌드하려는 프로젝트 디렉토리를 알려주고 gradlew를 실행하려고 했더니
C:\Users\user>java -version
java version "23" 2024-09-17
Java(TM) SE Runtime Environment (build 23+37-2369)
Java HotSpot(TM) 64-Bit Server VM (build 23+37-2369, mixed mode, sharing)C:\Users\user>cd/inflearn/hello-spring
C:\inflearn\hello-spring>gradlew
FAILURE: Build failed with an exception.
What went wrong:
A problem occurred configuring root project 'hello-spring'.
Could not resolve all artifacts for configuration ':classpath'.
Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.3.4.
Required by:
root project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.3.4
Dependency requires at least JVM runtime version 17. This build uses a Java 8 JVM.Try:
Run this build using a Java 17 or newer JVM.
Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.
Get more help at https://help.gradle.org.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/8.10.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
BUILD FAILED in 6s
이런 오류가 발생하면서 빌드에 실패했다는 문구가 떴다.
잘 읽어보니 자바 버전이 맞지 않아 생긴 문제 같았다. 그런데 내가 쓰고 있는 버전은 23 버전인데..?
cmd로 확인해보니 jdk -23이 맞았다.
검색해보니 시스템 설정에서 Java 버전이 제대로 인식하지 않아 발생하는 문제일 수도 있다고 했다.
설정 > 시스템 > 고급 시스템 설정 > 환경변수
에서 JAVA_HOME
의 값으로 자바23 버전이 설치된 경로를 입력해주었다.
PATH 변수는 %JAVA_HOME%\bin
이 제대로 잡혀있어 그대로 유지해주었다.
다시 명령 프롬프트를 열어 cd/(프로젝트 파일 경로)
를 통해 경로를 설정해주고,
변경된 환경변수를 제대로 적용하기 위해 gradlew --refresh-dependencies
를 실행해주었다. 그랬더니 정상적으로 빌드가 된 것을 확인할 수 있었다.
gradlew
실행,
순차적으로 build해주고 dir
을 통해 폴더 목록을 확인해 실행해보면
정상적으로 가동 성공!