kyucumber
전체 글 보기

Spring Boot Dependency Management Plugin

Spring에서 제공해주는 여러 starter들을 사용하면 별도 의존성 버전을 명시해주지 않아도 여러 라이브러리들이 각각의 버전으로 추가되는 것을 확인할 수 있습니다.

dependencies { testImplementation("org.springframework.boot:spring-boot-starter-test") } ./gradlew dependencies +--- org.springframework.boot:spring-boot-starter-test -> 2.3.12.RELEASE | +--- org.springframework.boot:spring-boot-starter:2.3.12.RELEASE (*) | +--- org.springframework.boot:spring-boot-test:2.3.12.RELEASE | | \--- org.springframework.boot:spring-boot:2.3.12.RELEASE (*) | +--- org.springframework.boot:spring-boot-test-autoconfigure:2.3.12.RELEASE | | +--- org.springframework.boot:spring-boot:2.3.12.RELEASE (*) | | +--- org.springframework.boot:spring-boot-test:2.3.12.RELEASE (*) | | \--- org.springframework.boot:spring-boot-autoconfigure:2.3.12.RELEASE (*) | +--- com.jayway.jsonpath:json-path:2.4.0 | | +--- net.minidev:json-smart:2.3 -> 2.3.1 | | | \--- net.minidev:accessors-smart:2.3.1 | | | \--- org.ow2.asm:asm:5.0.4 | | \--- org.slf4j:slf4j-api:1.7.25 -> 1.7.30 | +--- jakarta.xml.bind:jakarta.xml.bind-api:2.3.3 (*) | +--- org.assertj:assertj-core:3.16.1 | +--- org.hamcrest:hamcrest:2.2 | +--- org.junit.jupiter:junit-jupiter:5.6.3

별도 버전 없이도 위와 같은 의존성들을 사용할 수 있는 것은 io.spring.dependency-management 플러그인이 의존성들의 버전을 관리해주기 때문입니다.

apply(plugin = "io.spring.dependency-management")

Spring Boot Dependencies

Customizing Managed Versions

특정 버전의 버그나 이슈로 인해 플러그인이 관리하는 버전을 변경하려면 아래와 같은 두가지 방법을 사용할 수 있습니다.

  • version property override
ext["logback.version"] = "1.2.9"
  • dependency management의 bomProperty
dependencyManagement { imports { mavenBom('io.spring.platform:platform-bom:1.0.1.RELEASE') { bomProperty 'spring.version', '4.0.4.RELEASE' } } }

Spring Boot는 여러 의존성들에 대해 설계 및 테스트 되었으므로, 버전을 임의로 변경하는 경우 호환성 관련 이슈가 발생할 수 있습니다. 가급적 변경하지 않는 것이 좋습니다.

Dependency Sets

그룹이나 버전이 동일한 경우 dependencySet을 활용해 아래처럼 사용할 수 있습니다.

dependencyManagement { dependencies { dependencySet("org.slf4j:1.7.7") { entry("slf4j-api") entry("slf4j-simple") } } }

Importing a Maven Bom

프로젝트 내에서 직접 의존성의 버전을 명시하지 않고 maven bom을 가져와서 의존성 관리를 할 수 있습니다.

여러 이상의 bom을 가져오는 경우에 bom은 순서대로 처리되며, 동일한 dependency에 대한 bom이 있는 경우 나중에 추가된 bom의 의존성 버전이 사용됩니다.

dependencyManagement { imports { mavenBom("io.spring.platform:platform-bom:1.0.1.RELEASE") } } dependencies { implementation("org.springframework.integration:spring-integration-core") }

Spring Managed Dependency Versions

스프링에서 관리되는 의존성 버전 및 버전 프로퍼티 정보는 아래 링크에서 확인할 수 있습니다.

스프링 버전별로 관리되는 버전이 다르기 때문에 버전 별 아래 링크의 주소를 변경해주셔야 합니다.

Reference

개인적인 기록을 위해 작성된 글이라 잘못된 내용이 있을 수 있습니다.

오류가 있다면 댓글을 남겨주세요.