스프링부트와 AWS로 혼자 구현하는 웹 서비스 1 - Gradle
1장 인텔리제이로 스프링부트 시작하기
💜gradle 프로젝트 생성
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
의 기능을 이용한다.
반면에, Gradle
은 build.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를 사용했다.
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 ]
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 ]
책에서 추천해준 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