티스토리 뷰

Spring

gradle 파일 개선

notEmpty 2025. 1. 3. 16:00

gradle 버전업에 따라 deprecated된 설정들이 있어 개선해보기 

 


개선 및 확인 사항

Deprecated API 사용

  • compile과 testCompile은 Gradle 5.0부터 deprecated되었으며, implementation과 testImplementation을 사용
    • compile은 다른 모듈에 노출된다. 나중에 모듈을 분리할 때 다른 모듈의 의존성을 사용에서 오는 문제가 발생 가능함 
    • Impliementation은 다른 모듈에 노출되지 않음 
  • jcenter는 더 이상 지원하지 않음
  • apply plugin 대신 plugins 블럭 권장

apply plugin 대신 plugins 사용

  • 현대 Gradle DSL에서는 apply plugin보다는 plugins 블록을 사용하는 것이 권장

 

AS-IS

buildscript {
    ext {
        springBootVersion = '2.1.9.RELEASE'
    }
    repositories {
        mavenCentral()

		// deprecataed됨
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

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

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

 

 

TO-BE

/*
    apply -> Plugins 적용
    - 명시적으로 버전 선언
    - 의존성 자동완성 확인가능
    - Gradle 5.0 이상부터는 plugins 블록이 권장됨
*/
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.4.1'
    id 'io.spring.dependency-management' version '1.1.3'
}

group = 'com.hj'
version = '1.0-SNAPSHOT'
java {
    sourceCompatibility = JavaVersion.VERSION_17 // Spring Boot 3.x 이상에서는 Java 17 필요
    targetCompatibility = JavaVersion.VERSION_17
}

repositories {
    mavenCentral() // Maven Central Repository
}

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

test {
    useJUnitPlatform()
}