[Spring boot] Intellij Spring boot 프로젝트 생성 및 gradle 설정
이동욱님의 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 를 읽으며 새롭게 공부한 내용에 대해 정리합니다.
2020.12.16. 기준 도구들의 버전
Spring Boot 2.4.1Gradle 6.7.1Junit5
https://jojoldu.tistory.com/539
위처럼 적용하려 하였으나 당장 chap2 에서 lombok 적용부터 버전차이로 문제가 발생해서, 버전 차이를 익히는 연습도 할 겸 최신 버전으로 교체하여 진행하기로 했습니다.
- Spring Boot 2.6.4
- Gradle 7.2
build.gradle 설정
plugins {
id 'org.springframework.boot' version '2.6.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group 'com.eddie'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
// lombok
implementation 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// test
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
1. plugin 블럭에 대해서
https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#getting-started
프로젝트를 할 때 항상 쓰여있지만 저 plugin 블럭이 어떤 일을 하는지 모르고, 항상 있기에 그냥 가져다 썼었다. 이번 기회에 알자 싶어 공식 문서를 참고하였다.
Spring boot plugin 은 Gradle 환경에서 제공되며, 실행가능한 jar나 war 를 패키징할 수 있게 하거나, Spring boot 를 실행하거나, spring-boot-dependencies 에 의해 제공되는 의존성 관리를 이용할 수 있도록 해준다.
2022.04.04. 기준 Spring boot Gradle plugin 은 6.8, 6.9, 7.x 버전을 필요로 한다고 한다. 현시점에서 Gradle 프로젝트를 생성하면 Gradle 버전은 자동으로 7.2 로 잡히게 된다.
Spring boot application 의 의존성을 관리하기 위해, io.spring.dependency-management 플러그인을 이용할 수 있으며 해당 플러그인의 역할은
첫 번째 이미지와 같이 라이브러리 의존성에 대해 버전을 명시하지 않더라도, 두 번째 이미지와 같이 현재 내가 사용중인 스프링부트의 버전에 따라 적절한 의존성을 자동으로 가져오게 된다.
Spring boot 와 dependency-management 의 버전의 경우 최신버전 중, 비교적 많이 쓰이고 있는 버전을 사용하였다.
2. repositories 에 대해서
각종 의존성(라이브러리)들을 어떤 원격 저장소에서 받을지를 명시하는 곳이다. 구글에 'mavencentral jcenter' 이라고 검색하면 둘을 비교하는 정말 많은 글들이 있고, 공통적으로 라이브러리 업로드 난이도 때문에 jcenter 를 많이 사용했다고 한다.
https://blog.gradle.org/jcenter-shutdown
https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/
하지만 더 이상 지원을 중단하고 read-only 상태로 유지 중이기 때문에, 지금은 고민할 것 없이 mavenCentral() 을 사용하면 된다.
3. junit5 의존성에 대해서
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.4-Release-Notes
Sping boot 2.4 이후부터는 'spring-boot-starter-test' 에서 JUnit5의 Vintage Engine 이 아예 삭제되었기 때문에 Vintage Engine 을 exclude 할 필요 없이, 아래처럼 한 줄만 써주면 된다.
testImplementation 'org.springframework.boot:spring-boot-starter-test'
또한, JUnit4 와 비교하여 이름이 달라진 어노테이션이 많기 때문에 작성에 주의하여야 한다.
https://junit.org/junit5/docs/current/user-guide/#migrating-from-junit4
gradle 설정을 완료하였다면, Intellij 의 알람이 나오는데, 말그대로 변경 사항이 있으니 Reload 하라는 의미이므로 눌러서 최신화 해주면 된다.