
이전 글에서 잠깐 살펴보았듯 build.gradle이란 Gradle 빌드 도구를 사용하는 프로젝트의 빌드 설정과 의존성 관리를 정의하는 핵심 파일이다. 해당 파일은 주로 Groovy DSL(Domain-Specific Language)이라는 스크립트 언어로 작성되어 있으며, Kotlin DSL을 사용할수도 있다. 이번 게시글에서는 해당 파일의 구성요소를 살펴볼 것이다.
✍️ 작성
plugins {
id 'java'
id 'org.springframework.boot' version '3.4.1'
id 'io.spring.dependency-management' version '1.1.7'
}
해당 블록에서는 프로젝트에 필요한 플러그인을 추가한다. 플러그인은 Gradle에게 프로젝트를 어떻게 빌드할지 알려주는 도구라 할 수 있다. 각 플러그인의 기능과 역할을 살펴보자
| java | |
|---|---|
| 역할 | 자바 (java) 프로젝트임을 Gradle에 알림 |
| 기능 | 자바 컴파일, JAR 패키징 등 기본적인 자바 빌드 작업을 자동으로 설정 |
| org.springframework.boot | |
|---|---|
| 역할 | 스프링부트 플러그인을 적용 |
| 기능 | 스프링부트 애플리케이션을 쉽게 빌드하고 실행할 수 있는 다양한 기능을 제공 |
여기서 org.springframework.boot 플러그인이 제공하는 기능은 구체적으로 다음과 같다.
| 기능 | 설명 |
|---|---|
| bootRun | Spring Boot 애플리케이션을 실행 실행할 메인 클래스를 지정 할 수 있음 |
| bootJar | Spring Boot 애플리케이션을 jar 패키지로 빌드 의존성 라이브러리를 포함한 실행 가능한 jar 파일을 생성 |
| bootWar | Spring Boot 애플리케이션을 war 패키지로 빌드 의존성 라이브러리를 포함한 war 파일을 생성 |
| bootBuildImage | Spring Boot 애플리케이션을 OCI(Docker) 이미지로 빌드 Docker 이미지를 생성하고 Docker 레지스트리에 업로드 가능 |
| io.spring.dependency-management | |
|---|---|
| 역할 | 의존성 관리 플러그인을 적용 |
| 기능 | 의존성 버전을 일관되게 관리하고, 전이 의존성 충돌을 방지 |
여기서 io.spring.dependency-management 플러그인이 제공하는 기능은 구체적으로 다음과 같다.
| 기능 | 설명 |
|---|---|
| dependencyUpdates | 프로젝트의 의존성에 대해 업데이트 가능한 버전을 확인 및 출력 |
| dependencyManagement | 의존성 관리를 위해 사용되는 Maven BOM (Bill Of Materials) 파일을 생성 |
✍️ 작성
group = 'com.example'
version = '0.0.1-SNAPSHOT'
group과 version은 프로젝트의 메타데이터를 정의한다. 이는 주로 프로젝트를 식별하고 버전 관리를 할 때 사용된다.
| 키워드 | 역할 |
|---|---|
| group | 프로젝트의 그룹명을 설정하는 속성 Maven Repository에 업로드될 때 그룹명으로 사용 보통 프로젝트의 패키지명과 동일하게 지정 |
| version | 프로젝트의 버전을 설정 버전은 프로젝트의 변경사항에 따라 업데이트 Maven Repository에서는 버전별로 구분 SNAPSHOT은 개발 중인 버전을 나타내는 접미사 |
✍️ 작성
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
java 블록은 자바 컴파일러와 관련된 설정을 정의하며 여기서는 자바 도구 체인 (toolchain)을 설정하여 특정 자바 버전을 사용하도록 지정한다. 해당 예시에서는 JavaLanguageVersion.of(21)을 통해 자바 21 버전을 사용하도록 지정함을 알 수 있다.
✍️ 작성
repositories {
mavenCentral()
}
repositories 블록은 Gradle이 의존성 (dependencies)을 다운로드할 저장소를 지정한다.
위의 코드에서 mavenCentral()은 Maven Repository의 일종으로 Gradle에서 제공하는 기본적인 라이브러리 저장소인 Maven Central Repository를 사용한다는 것을 의미한다. 이 저장소는 전 세계적으로 사용되는 라이브러리들을 제공하는 가장 큰 Maven Repository 중 하나이다. MavenCentral Repository에서는 Apache Maven, Gradle 등 다양한 빌드 시스템에서 사용하는 라이브러리들을 제공하며, 대부분의 Java 라이브러리들이 이 저장소에 포함되어 있다. 스프링 파일을 빌드하거나 실행할 경우, 해당 저장소에서 필요한 라이브러리들을 다운로드 받아 사용한다.
Maven Central Repository의 저장소는 다음과 같으며 해당 링크로 접속할 수 있다.
✍️ 작성
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
dependencies 블록은 프로젝트가 필요로 하는 외부 라이브러리를 선언한다. 각 의존성은 특정한 구성(Configuration)에 속하며, 빌드 도구가 이를 처리한다. 자세한 내용은 전 글에서 살펴보았으므로 생략한다.
✍️ 작성
tasks.named('test') {
useJUnitPlatform()
}
특정 Gradle 작업(Task)에 대한 설정을 정의한다. 여기서는 useJUnitPlatform() 통해 테스트('test')를 실행할 때 JUnit 플랫폼을 사용하도록 설정하고 있음을 알 수 있다. JUnit은 자바에서 널리 사용되는 테스트 프레임워크이다.
멋쟁이사자처럼 강의자료