더북(TheBook)

한편 빌드에 Jackson을 포함하는 것은 괜찮지만 웹 스타터가 참조하는 Jackson 버전 대신 다른 버전을 포함하고 싶을 수도 있다. 웹 스타터가 참조하는 2.3.4 버전 대신 2.4.3 버전4을 사용하고 싶다고 가정하자. 메이븐을 사용하면 다음과 같이 필요한 의존성을 프로젝트의 pom.xml 파일에 직접 선언할 수 있다.


<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.3</version>
</dependency>

메이븐은 항상 더 가까운 의존성을 선호한다. 이는 프로젝트 빌드에 앞의 코드처럼 의존성을 선언했을 때 전이적 의존성을 참조하는 대신 직접 선언한 의존성을 참조한다는 의미다.

그레이들을 사용할 때는 build.gradle 파일에 다음과 같이 더 나중에 나온 Jackson 버전을 지정하면 된다.


compile('com.fasterxml.jackson.core:jackson-databind:2.4.3')

스프링 부트 웹 스타터가 참조하는 의존성 버전보다 더 최신이므로 이 의존성은 그레이들에서 잘 작동한다. 하지만 최신 버전 대신 더 오래된 버전을 사용하고 싶을 수도 있다. 메이븐과 다르게 그레이들은 최신 버전의 의존성만 선호한다. 따라서 더 오래된 Jackson 버전을 사용하고 싶을 때는 구 버전을 빌드에 선언하고, 웹 스타터 의존성이 전이적으로 해결하는 의존성은 제외해야 한다.


compile('org.springframework.boot:spring-boot-starter-web') {
    exclude group: 'com.fasterxml.jackson.core'
}
compile('com.fasterxml.jackson.core:jackson-databind:2.3.1')

 

4 여기서 언급한 버전은 오직 설명을 위한 것이다. 스프링 부트 웹 스타터가 참조하는 Jackson의 실제 버전은 사용하는 스프링 부트의 버전에 따라 결정된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.