Clone Coding/스프링 부트와 AWS

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

연로그 2021. 1. 8. 15:57
반응형

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로 혼자 구현하는 웹 서비스 / 이동욱 ] 책을 따라한 것을 정리하기 위한 게시글입니다. 요약, 생략한 부분이 많으니 보다 자세한 설명은 책 구매를 권장합니다.

반응형