[spring boot] build.gradle 설정 

 spring boot 3.4.2 version에서의 설정 예제입니다. 

 

  Spring Boot에서 build.gradle은 프로젝트의 빌드와 의존성을 관리하는 핵심 파일입니다. 이 파일은 Gradle 빌드 시스템을 사용하는 프로젝트에서 작성되며, Java 애플리케이션의 빌드 프로세스를 간단하고 효율적으로 관리할 수 있게 해줍니다.

1. 기본 구조

build.gradle 파일의 기본 구조는 다음과 같습니다.

plugins {
    id 'org.springframework.boot' version '3.4.2' // Spring Boot 플러그인
    id 'io.spring.dependency-management' version '1.1.7' // 의존성 관리 플러그인
    id 'java' // Java 플러그인
}

group = 'com.example' // 프로젝트 그룹 ID
version = '0.0.1-SNAPSHOT' // 프로젝트 버전

java {
    // Java Toolchain을 사용해 프로젝트에서 사용할 Java 버전을 설정합니다.
    toolchain {
        // Java 17 버전을 사용하도록 설정합니다.
        // Java 17은 LTS 버전으로 안정적이고 장기 지원이 제공됩니다.
        languageVersion = JavaLanguageVersion.of(17)
    }
}

configurations {
    // 'compileOnly'는 컴파일 시에만 필요한 의존성을 지정합니다.
    // 'annotationProcessor'의 설정을 상속받아 Lombok과 같은 의존성을 처리합니다.
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    // 프로젝트에 필요한 의존성을 다운로드할 리포지토리를 설정합니다.
    // 'mavenCentral()'은 오픈소스 라이브러리를 받을 수 있는 대표적인 Maven 리포지토리입니다.
    mavenCentral() // Maven 중앙 저장소
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter' // Spring Boot 핵심
    testImplementation 'org.springframework.boot:spring-boot-starter-test' // 테스트 라이브러리
}

2. 주요 구성 요소

1) 플러그인 설정

plugins 블록은 Gradle에서 사용하는 플러그인을 정의합니다.

  • org.springframework.boot
    Spring Boot 애플리케이션을 Gradle로 빌드할 수 있게 해주는 플러그인.
  • io.spring.dependency-management
    Spring Boot의 의존성 버전을 자동으로 관리합니다.
  • java
    Java 빌드 도구를 활성화합니다.

2) 프로젝트 속성

  • group: Maven 아티팩트의 그룹 ID.
  • version: 애플리케이션 버전 정보.
  • java 
    프로젝트에서 사용할 Java 버전을 설정합니다.

3) 저장소 설정

repositories 블록은 의존성을 가져올 저장소를 정의합니다.

  • mavenCentral(): Maven Central 저장소.
  • jcenter(): JCenter 저장소(현재는 사용되지 않는 경우가 많음).
  • google(): Google 저장소(Android 관련 프로젝트에서 주로 사용).

4) 의존성 관리

dependencies 블록은 프로젝트에서 사용하는 라이브러리와 프레임워크를 정의합니다.

의존성 유형

  • implementation: 런타임 및 컴파일 시 사용되는 의존성.
  • compileOnly: 컴파일 시 필요하지만, 런타임에는 포함되지 않음.
  • runtimeOnly: 런타임에만 필요한 의존성.
  • testImplementation: 테스트 코드에서만 사용되는 의존성

의존성 예제

dependencies {
    // Spring Boot 핵심 의존성
    implementation 'org.springframework.boot:spring-boot-starter'

    // Spring Web (REST API 개발)
    implementation 'org.springframework.boot:spring-boot-starter-web'

    // Spring Data JPA (데이터베이스와의 연동)
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

    // MySQL 데이터베이스 드라이버
    runtimeOnly 'mysql:mysql-connector-java'

    // 테스트 관련 의존성
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

3. 실무에서 자주 사용되는 항목

1) Lombok 플러그인 추가

Lombok은 Java 코드에서 반복되는 Getter, Setter 등을 줄이는 데 유용합니다.

dependencies {
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    
    // 테스트에서 사용하기 위한 의존성 
    testCompileOnly 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'
}

2) 데이터베이스 연동

MySQL, PostgreSQL, H2와 같은 데이터베이스를 사용할 때 관련 드라이버를 추가합니다.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'mysql:mysql-connector-java'
}

3) Spring Security

Spring Security로 인증 및 권한 부여를 구현할 때 의존성을 추가합니다.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-security'
}

4) Gradle Task 설정

빌드, 테스트, 실행 등의 작업을 커스터마이즈하려면 tasks 블록을 추가합니다.

tasks.named('test') {
    useJUnitPlatform() // JUnit 5 플랫폼 사용
}

+ Recent posts