스프링부트와 AWS로 혼자 구현하는 웹 서비스 1 - Gradle

2 minute read

1장 인텔리제이로 스프링부트 시작하기

💜gradle 프로젝트 생성

210923125331.png

210923125446.png

gradle 설정파일에 들어갈 내용을 intelliJ에서 입력하면 자동으로 gradle 파일이 만들어진다.

  • GroupId : 도메인을 거꾸로해서 많이 쓴다.
  • ArtifactID : 임의로 지정가능한 프로젝트 이름이다.
  • Version : 1.0-SNAPSHOT 의 의미는 1.0 버전을 바탕으로 개발중인 버전이라는 뜻이다. 더 자세한 내용

기본설정값, 경로지정

💜Gradle 이란

빌드 자동화 툴이다.

프로그램을 빌드할 때 필요한 설정들과 의존성(라이브러리 등) 관련 정보들을 build.gradle 파일에 작성하여 사용한다.

Make, Ant, Maven과 같은 도구를 좀 더 보완했다.

Maven 같은 경우에는 pom.xml (POM : Project Object Model) 파일에 빌드 설정 등을 기입하여 Maven의 기능을 이용한다.

반면에, Gradlebuild.gradle 파일에 groovy라는 빌드 스크립트 언어를 이용해서 빌드 설정 등을 기입할 뿐만 아니라, xml과 달리 변수 선언 및 if, for등의 로직을 사용할 수 있다.

덕분에 더 간결하고 읽기 쉬운 빌드 스크립트 작성이 가능하다.

Gadle의 Build Cache를 이용하면 Maven보다 최대 100배 빠르다고 한다

학부생 시절 안드로이드 개발을 진행할 당시 빌드 자동화 툴에 대한 개념이 부족한 채로 ‘외부 라이브러리를 사용할 때는 build.gradle 파일에 작성해주고 사용한다’ 는 정도만 Gradle에 대해서 알고 있었는데, 오랜만에 다시 만나서 조금 더 이해할 수 있게 되었다.

더 자세한 내용

💜build.gradle 작성하기

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

group 'hyeb.study.springboot'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'junit:junit:4.13.1'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}


※ Version

spring.io/blog 를 참고하여 가장 최신 Release Spring Boot를 사용했다.

211001011812.png

https://spring.io/blog/2021/09/23/spring-boot-2-5-5-available-now


※ plugins

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

책에서 위와 같이 plugin을 선언해주라고 예시가 나와있지만, 아래와 같이 작성할 수도 있다.

하지만 나는 아래와 같이 작성했다.

중괄호로 묶어서 작성하는게 더 깔끔해보이기도하고, intelliJ에서 초기에 생성해준 build.gradle파일에서 아래와 같은 방식으로 작성되어 있어서 그 양식을 따랐다.

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


※ 오류 해결

[ 1 ]

210923142924.png

210923143157.png

java.lang.AbstractMethodError: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierImpl.getModuleIdentifier() ...

Plugin [id: 'org.springframework.boot'] was not found in any of the following sources ...

Spring Boot plugin requires Gradle 6.8.x or 7.x. The current version is Gradle 4.4 ...

spring boot warning:upgrade available to version '5.8.0' ...

등등 다양한 오류와 마주쳤는데, 결국 문제는 버전이었다.

2018년 이후 방치되었던 intelliJ, 그리고 함께 설치 및 방치되어온 4.x 버전의 Gradle이 최신 SpringBoot 버전과 맞지 않았고, 결국 모두 재설치하여 해결되었다.

https://docs.gradle.org/current/userguide/upgrading_version_6.html

https://www.lesstif.com/spring/intellij-grade-113345419.html

[ 2 ]

210923154913.png

211001010013.png

책에서 추천해준 jcenter() 메소드는 Gradle에서 더 이상 사용되지않고, 대신 mavenCentral(), google() 또는 private maven repository 사용을 권장한다고 한다.

Jcenter : 라이브러리 원격 저장소이다. 라이브러리 업로드가 간단하여 mavenCentral 보다 사용하기 편하다. jcenter에 라이브러리를 업로드하면 mavenCentral에도 업로드 될 수 있도록 자동화할 수 있다.

💜Spring Initializr

처음이니 빌드 스크립트의 내용을 하나씩 짚어보기 위해 직접 작성했지만, Spring Initializr (https://start.spring.io/)를 이용하면 더 쉽고 빠르게 build.gradle을 완성할 수 있다.


Reference

  • 스프링부트와 AWS로 혼자 구현하는 웹 서비스
  • https://spring.io/blog/2021/09/23/spring-boot-2-5-5-available-now
  • https://gradle.org/guides/
  • https://gradle.org/releases/
  • https://docs.gradle.org/current/userguide/userguide.html
  • https://gradle.org/maven-vs-gradle/
  • https://thecodinglog.github.io/gradle/2019/09/11/install-gradle-in-windows.html