본문 바로가기
Dev

Gradle 프로젝트를 Spring boot 프로젝트로 변경하기

by cosmog 2023. 7. 18.
반응형

Gradle 프로젝트를 Spring boot 프로젝트로 변경하기


Gradle 프로젝트를 Spring Boot 프로젝트로 변경해보려고 한다.

build.gradle 파일을 열어보면 아래와같이 자바 개발에 가장 기초적인 설정만 되어있다.

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파일을 반영해준다.
build에 성공!

우측 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버전을 사용하고 있었다.)

jdk 1.8을 설치해주었다.

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

jdk 1.8버전으로 반영해주었다.

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

distrivuteionUrl의 Gradle 버전이 8.0으로 적용되어 있었다. 버전을 4.10.2로 맞춰 주었다.

 

반응형