Gradle 프로젝트를 Spring boot 프로젝트로 변경하기
Gradle 프로젝트를 Spring Boot 프로젝트로 변경해보려고 한다.
build.gradle 파일을 열어보면 아래와같이 자바 개발에 가장 기초적인 설정만 되어있다.

여기에 Spring Boot에 필요한 설정들을 하나씩 추가해보자.
❗️단, 스프링 이니셜라이저를 통해서 진행하지 않는다. build.gradle의 코드가 무슨 역할을 하는지 코드를 작성하면서 이해하기 위해서이다.
build.gradle 맨 위에 위치할 코드.
buildscript {
ext { //build.gradle에서 사용하는 전역변수를 설정하겠다는 의미.
//springBootVersion 전역변수를 생성하고 버전을 2.1.7.RELEASE로 설정해주었다.
springBootVersion = '2.1.7.RELEASE'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
//spring-boot-gradle-plugin 라는 스프링부트 그레이들 플러그인의 2.1.7.RELEASE를 의존성으로 받겠다.
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
선언한 플러그인 의존성들을 적용할 것인지 결정하는 코드이다.
아래 4개의 플러그인은 자바와 스프링 부트를 사용하기 위해서는 필수 플러그인들이다. (항상 추가)
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
//스프링부트의 의존성을 관리해주는 플러그인 (꼭 추가해야만 한다.)
apply plugin: 'io.spring.dependency-management'
repositories는 각종 의전성 라이브러리들을 어떤 원격 저장소에서 받을지 정한다.
mavenCenteral은 이전부터 많이 사용하는 저장소이지만, 본인이 만든 라이브러리를 업로드하기 위해서는 많은 과정과 설정이 필요하다.
jcenter는 이런 문제점을 개선하여 라이브러리 업로드를 간단하게 할 수 있다. jcenter 라이브러리를 업로드 하면 mavenCenteral에도 업로드될 수 있도록 자동화 할 수 있다.
❗️2022.02.01에 jcenter 라이브러리는 지원이 종료되었다고 한다.
repositories {//각종 의존성 라이브러리들을 어떤 원격저장소에서 받을지 정한다.
mavenCentral() //기본적으로 많이 사용
jcenter() //라이브러리 업로드 난이도 때문에 jcenter도 많이 사용한다. 현재는 지원 종료
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
dependencies는 프로젝트 개발에 필요한 의전성들을 선언하는 곳이다.
org.springframework.boot:spring-boot-web과 org.springframework.boot:spring-boot-starter-test를 받도록 선언해주었다.
💡 인텔리제이는 메이븐 저장소의 데이터를 인덱싱해서 관리하므로 커뮤니티 버전을 사용해도 의존성 자동완성이 가능하다.
compile 메소드 안에 라이브러리의 이름의 앞부분만 추가한 뒤 자동완성 ctrl + space를 사용하면 라이브러리 목록들을 볼 수 있다.
❗️ 의존성 코드에는 버전을 명시하지 않아야만 맨 위에 작성한 org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}의 버전을 따라가게 된다.
최종으로 완성된 build.gradle 파일의 코드는 아래와 같다.
buildscript {
ext {
springBootVersion = '2.1.7.RELEASE'
}
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 = "com.zozos.book"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}


우측 Gradle탭을 눌러확인해보면 dependencies(의존성)이 잘 반영된 것을 볼 수 있다.

번외. Load Gradle Changes시 에러 발생 ❗️
gradle 파일을 반영하려고 시도해보니 gradle sync issues가 발생했다.

처음에는 spring boot version 2.1.7 RELEASE 버전과 gradle버전이 맞지 않다고 생각해서 gradle > wrapper > gradle-wrapper.properties파일의 distributionUrl 의 gradle 버전을 확인해보니 8.0버전으로 되어있었고, 책 앞 부분에 개발환경에 대한 정보가 적혀있던 것이 생각이 났다.
❗️gradle sync issues 발생 원인 => 개발환경 버전이 달라서 이슈가 발생했다.
| 개발환경 java 8 (jdk 1.8) gradle 4.8 ~ gradle 4.10.2 |
jdk도 1.8로 맞춰주기 위해서 새로 설치해 주었다. (jdk11버전을 사용하고 있었다.)


Settings > BuildTools > Gradle JVM 버전을 jdk1.8 버전으로 변경해주었다.

gradle-wrapper.properties의 distributionUrl도 gradle 개발환경 범위내의 버전인 4.10.2로 맞추어 변경해주었다.

'Dev' 카테고리의 다른 글
| 스프링 부트에서 테스트 코드를 작성하자 (1) | 2023.09.07 |
|---|---|
| [GitHub] GitHub ReadMe 꾸미기 (0) | 2023.07.22 |
| 인텔리제이에서 깃과 깃허브 사용하기 (0) | 2023.07.20 |
| IntelliJ Community에서 프로젝트 생성하기 - Gradle기반의 java project 생성 (0) | 2023.07.16 |
| mac 인텔리제이 설치 (0) | 2023.07.14 |