본문 바로가기
Clone Coding/스프링 부트와 AWS

[Spring] Gradle Project를 Spring boot로 변환하기

by 연로그 2021. 1. 8.
반응형

Gradle Project를 생성하고 Spring boot로 전환하려고 한다

애초에 이니셜라이저로 프로젝트를 만들었다면 훨씬 간단하고 편리하지만, 이후에 dependencies 추가하는 방법에 대해 알아야하므로 수동으로 전환한다.

( 이니셜라이저로 프로젝트 만드는 법: blog.naver.com/white_la/222134955580 )

 

코드

프로젝트 내 build.gradle 파일이 있다. (주석 제거한 상태)


apply plugin: 'java-library'

repositories {
    jcenter()
}

dependencies {
    api 'org.apache.commons:commons-math3:3.6.1'
    implementation 'com.google.guava:guava:23.0'
    testImplementation 'junit:junit:4.12'
}

 

위 코드를 아래와 같이 바꾼다.
작성 후에 gradle project를 refresh해서 의존성 주입된 것을 확인하면 끝!

(코드 설명 및 refresh 오류가 생긴 경우는 아래로)

buildscript {
    ext {
        springBootVersion = '2.1.7.RELEASE'
    }
    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'

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')

    testCompile('org.springframework.boot:spring-boot-starter-test')
}

주입 성공 시 starter 팩이 들어온 것을 확인 가능


코드 설명

buildscript {
    ext {
        springBootVersion = '2.1.7.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

ext전역변수를 선언하겠다는 의미이다.

springBootVersion이라는 변수에 '2.1.7.RELEASE' 값을 넣어두고, dependencies에서 사용했다.

 

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

'io.spring.dependency-management' 플러그인은 스프링 부트의 의존성들을 관리해 주는 플러그인이다.

위 4개의 플러그인들은 자바 및 스프링 부트를 사용하기 위한 필수 플러그인들이다.

 

아래와 같은 의미로 사용한다. plugins { } 쪽이 더 최신형.

plugins {
	id 'java'
	id 'eclipse'
	id 'org.springframework.boot'
	id 'io.spring.dependency-management'
}

 

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

repositories: 각종 의존성 (라이브러리)들을 어떤 원격 저장소에 저장받을지 지정

mavenCentral은 대표적이고 자주 쓰이는 저장소지만, 직접 만든 라이브러리 업로드하는 과정이 복잡하다.

이를 개선하여 jcenter가 나와 이를 사용하기도 한다.

jcenter에 라이브러리 업로드하면 mavenCentral에도 업로드될 수 있도록 자동화 할 수도 있다.

 

( 본 프로젝트에서는 둘 다 사용할 예정. )


오류

여기서 나는 한 가지 문제가 있었다.

 

org.gradle.tooling.BuildException: Could not run build action using Gradle distribution 'https://services.gradle.org/distributions/gradle-4.3-bin.zip'

 

오류를 꼼꼼히 읽어보니 버전 호환 문제가 있는 것 같다.

최소한 4.4 이상의 Gradle을 사용하라는 식의 문구가 있어서 Gradle 설정을 수정했다.

프로젝트 우클릭 - properties - gradle - Specific Gradle Version 수정

영어 읽는거 정말 귀찮지만 중요한 것 같다...

 


해당 게시글은 [ 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 / 이동욱 ] 책을 따라한 것을 정리하기 위한 게시글입니다. 요약, 생략한 부분이 많으니 보다 자세한 설명은 책 구매를 권장합니다.

반응형