...
의존 관계의 한 dependency(=artifact)가 여러 버전이 있는 경우 Maven은 어떻게 버전을 선택할까요? 다음은 X를 의존하는 여러 개의 모듈이 있습니다. 이 경우 Maven은 depth를 고려하여 depth가 깊지 않은 것을 먼저 선택하므로 X 1.0을 선택합니다.
draw.io Diagram | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
다음은 depth가 동일한 경우입니다. 이 경우는 먼저 선언한 것을 선택하므로 X 2.0을 선택하게 됩니다.
draw.io Diagram | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
책갈피 | ||||
---|---|---|---|---|
|
...
동일 dependency를 사용하지만 Sub Module간의 버전이 다르다면? 다음의 도식을 살펴보겠습니다.
draw.io Diagram | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
A와 B Sub Module의 X dependency 버전이 다른 것을 확인할 수 있습니다. 만약에 Sub Module에서 X의 버전을 하나로 통일하고자 한다면 Super POM에 다음과 같이 추가합니다.
...
규모가 큰 프로젝트는 여러 모듈로 쪼개져 있습니다(예; Spring Boot). 통상적으로 문제가 안되지만 Spring Boot를 dependency로 하는 다른 외부 dependency를 추가하다보면 Spring Boot의 버전이 다를 수 있습니다.
draw.io Diagram | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
상기와 같은 경우 Spring Boot의 POM을 import하여 버전을 일괄 적용할 수 있습니다. 상기와 같은 구조를 가진 프로젝트에서는 Super POM에 다음과 같이 추가하면 됩니다.
...