build.gradle 파일 살펴보기

CJI0524·2025년 1월 30일

Spring Boot

목록 보기
2/21

1. build.gradle 파일이란?

이전 글에서 잠깐 살펴보았듯 build.gradle이란 Gradle 빌드 도구를 사용하는 프로젝트의 빌드 설정과 의존성 관리를 정의하는 핵심 파일이다. 해당 파일은 주로 Groovy DSL(Domain-Specific Language)이라는 스크립트 언어로 작성되어 있으며, Kotlin DSL을 사용할수도 있다. 이번 게시글에서는 해당 파일의 구성요소를 살펴볼 것이다.

2. build.gradle 파일 살펴보기

2.1. plugins 블록

✍️ 작성

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.4.1'
	id 'io.spring.dependency-management' version '1.1.7'
}

해당 블록에서는 프로젝트에 필요한 플러그인을 추가한다. 플러그인Gradle에게 프로젝트를 어떻게 빌드할지 알려주는 도구라 할 수 있다. 각 플러그인의 기능과 역할을 살펴보자

[1] java

java
역할자바 (java) 프로젝트임을 Gradle에 알림
기능자바 컴파일, JAR 패키징 등 기본적인 자바 빌드 작업을 자동으로 설정

[2] org.springframework.boot

org.springframework.boot
역할스프링부트 플러그인을 적용
기능스프링부트 애플리케이션을 쉽게 빌드하고 실행할 수 있는 다양한 기능을 제공

여기서 org.springframework.boot 플러그인이 제공하는 기능은 구체적으로 다음과 같다.

기능설명
bootRunSpring Boot 애플리케이션을 실행
실행할 메인 클래스를 지정 할 수 있음
bootJarSpring Boot 애플리케이션을 jar 패키지로 빌드
의존성 라이브러리를 포함한 실행 가능한 jar 파일을 생성
bootWarSpring Boot 애플리케이션을 war 패키지로 빌드
의존성 라이브러리를 포함한 war 파일을 생성
bootBuildImageSpring Boot 애플리케이션을 OCI(Docker) 이미지로 빌드
Docker 이미지를 생성하고 Docker 레지스트리에 업로드 가능

[3] io.spring.dependency-management

io.spring.dependency-management
역할의존성 관리 플러그인을 적용
기능의존성 버전을 일관되게 관리하고, 전이 의존성 충돌을 방지

여기서 io.spring.dependency-management 플러그인이 제공하는 기능은 구체적으로 다음과 같다.

기능설명
dependencyUpdates프로젝트의 의존성에 대해 업데이트 가능한 버전을 확인 및 출력
dependencyManagement의존성 관리를 위해 사용되는 Maven BOM (Bill Of Materials) 파일을 생성

2.2. group과 version

✍️ 작성


group = 'com.example'
version = '0.0.1-SNAPSHOT'

groupversion프로젝트의 메타데이터를 정의한다. 이는 주로 프로젝트를 식별하고 버전 관리를 할 때 사용된다.

키워드역할
group프로젝트의 그룹명을 설정하는 속성
Maven Repository에 업로드될 때 그룹명으로 사용
보통 프로젝트의 패키지명과 동일하게 지정
version프로젝트의 버전을 설정
버전은 프로젝트의 변경사항에 따라 업데이트
Maven Repository에서는 버전별로 구분
SNAPSHOT은 개발 중인 버전을 나타내는 접미사

2.3. java 블록

✍️ 작성


java {
	toolchain {
		languageVersion = JavaLanguageVersion.of(21)
	}
}

java 블록은 자바 컴파일러와 관련된 설정을 정의하며 여기서는 자바 도구 체인 (toolchain)을 설정하여 특정 자바 버전을 사용하도록 지정한다. 해당 예시에서는 JavaLanguageVersion.of(21)을 통해 자바 21 버전을 사용하도록 지정함을 알 수 있다.


2.4. repositories 블록

✍️ 작성

repositories {
    mavenCentral()
}

repositories 블록Gradle의존성 (dependencies)을 다운로드할 저장소를 지정한다.

위의 코드에서 mavenCentral()Maven Repository의 일종으로 Gradle에서 제공하는 기본적인 라이브러리 저장소인 Maven Central Repository를 사용한다는 것을 의미한다. 이 저장소는 전 세계적으로 사용되는 라이브러리들을 제공하는 가장 큰 Maven Repository 중 하나이다. MavenCentral Repository에서는 Apache Maven, Gradle 등 다양한 빌드 시스템에서 사용하는 라이브러리들을 제공하며, 대부분의 Java 라이브러리들이 이 저장소에 포함되어 있다. 스프링 파일을 빌드하거나 실행할 경우, 해당 저장소에서 필요한 라이브러리들을 다운로드 받아 사용한다.

Maven Central Repository의 저장소는 다음과 같으며 해당 링크로 접속할 수 있다.

2.5. dependencies 블록

✍️ 작성

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)에 속하며, 빌드 도구가 이를 처리한다. 자세한 내용은 전 글에서 살펴보았으므로 생략한다.


2.6. tasks.named('test') 블록

✍️ 작성

tasks.named('test') {
	useJUnitPlatform()
}

특정 Gradle 작업(Task)에 대한 설정을 정의한다. 여기서는 useJUnitPlatform() 통해 테스트('test')를 실행할 때 JUnit 플랫폼을 사용하도록 설정하고 있음을 알 수 있다. JUnit자바에서 널리 사용되는 테스트 프레임워크이다.


3. 해당 게시글 작성에 참고한 글 목록

멋쟁이사자처럼 강의자료

profile
개발돌이

0개의 댓글