springbootStudy02 - 그래들 기반 springboot project만들기! build.gradle 이해하기
- 이 강좌는 매주 화요일 사외 스터디를 통해 작성!
- 스프링 부트와 AWS로 혼자 구현하는 웹서비스 책을 선정!(이동욱 저)
- 내가 생각하는 커리큘럼이랑 같아서 선정!
2021.10.13 - [OpenSource/Spring Boot] - springbootStudy01 - Jetbrains toolbox 설치
project 생성! 프로젝트는 spring 기본 셋팅을 지원해주는것을 사용하지 않고 쌩짜로 만들어봅니다.
왜냐면 build.gradle를 이해하기 위함이져!
기본 디폴트로 아래와 같이 build.gradle이 셋팅이 됩니다.
plugins {
id 'java'
}
group 'kr.pe.acet'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}
test {
useJUnitPlatform()
}
이제 build.gradle에 구성을 하나씩 해보도록 하겠습니다.
우선 스프링부트의 버전을 알아야하니 아래의 링크를 통해 최신버전을 알아보도록 하겠습니다.
https://spring.io/projects/spring-boot
현재 2021년10월 기준 2.5.5가 최신이네요
아래를 보시면 스프링진영에서 스프링부트 뿐만 아니라 많은 프로젝트들을 다루고 있네요
자! 다시 돌아와서 build.gradle의 파일에 아래의 내용을 추가 합니다.
buildscript {
ext {
springBootVersion = '2.5.5'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
plugins {
id 'java'
}
group 'kr.pe.acet'
version '1.0-SNAPSHOT'
... 블라블라 ...
ext라는 키워드는 build.gradle에서 사용하는 전역변수를 설정하겠다라는 의미이며 springBootVersion을 전역변수로 생성하고
그 값은 2.5.5 입니다.
그 사용은 아래에 디펜던시로 잡혀있는 spring-boot-gradle-plugin의 2.5.5를 의존(디펜던시)하겠다는 의미.
repositories는 어떤 원격 저장소에서 받을지를 정합니다.
그 중에 jcenter()는 2022년 1월 이후에 더이상 사용하지 않는다고 하네요 그래서 deprecated된 상태 입니다.
mavenCentral를 사용하면 됩니다.
위 4개의 플러그인은 자바와 스프링부트를 사용하기 위해 필수 플러그인이니 항상 추가해주면 됩니다.
특히 io.spring.dependency-management 플러그인은 스프링부트의 의존성들을 관리해주는 플러그인이라 반드시 필요 합니다.
dependencies는 프로젝트 개발에 필요한 의존성들을 선언하는 곳 입니다. 아래의 2개를 등록 합니다.
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
결과적으로 아래와 같은 build.gradle이 됩니다.
buildscript {
ext {
springBootVersion = '2.5.5'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group 'kr.pe.acet'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
그런데 막상 오류가 발생 한다..ㅠ
compile이라는 메소드를 찾을수 없다는 것! 즉, 형식이 변경되었다는 것이다.
처음에 아래와 같이 기본설정을 볼수 있었다.
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
그러므로 아래와 같이 변경하여 추가하여 보자!
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
추가 후 성공하는 것을 알수 있습니다.
최종 build.gradle은 아래와 같습니다.
buildscript {
ext {
springBootVersion = '2.5.5'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group 'kr.pe.acet'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
마지막으로 spring initializr를 통해서 만들어보고 비교해보겠습니다.
아래와 같이 비교적 간결하게 만들어지는군요
이제는 수월하게 읽어내려갈수 있을것 같네요! ㅎㅎ
plugins {
id 'org.springframework.boot' version '2.5.5'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'kr.pe.acet'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
확인은 인텔리J 우측에 gradle을 통해 알수 있습니다.
끝.