4 개의 프로젝트가 있다고 가정 해 보겠습니다.
- 프로젝트 A (B 및 D에 종 속됨)
- 프로젝트 B (D에 종 속됨)
- 프로젝트 C (D에 종 속됨)
- 프로젝트 D
이 시나리오에서 프로젝트 A를 실행하면 Maven이 종속성을 D로 올바르게 해결합니다. 올바르게 이해하면 Maven은 항상 가장 짧은 경로로 종속성을 가져옵니다. D는 A의 직접적인 종속성이므로 B 내에 지정된 D가 대신 사용됩니다.
그러나 이제 다음 구조를 가정하십시오.
- 프로젝트 A (B와 C에 종 속됨)
- 프로젝트 B (D에 종 속됨)
- 프로젝트 C (D에 종 속됨)
- 프로젝트 D
이 경우 D를 해결하는 경로는 동일한 깊이를 갖습니다. Maven이 충돌하게됩니다. Maven에게 종속성을 제외해야한다고 말할 수 있다는 것을 알고 있습니다. 그러나 제 질문은 그러한 종류의 문제를 어떻게 해결할 것인가입니다. 실제 응용 프로그램에서는 많은 종속성과 충돌이있을 수 있습니다.
모범 사례 솔루션은 실제로 물건을 제외하는 것입니까, 아니면 이것에 대한 다른 가능한 솔루션이 있습니까? 일부 버전이 변경되어 Maven이 다른 종속성을 사용하기 때문에 갑자기 ClassNotFound 예외가 발생하면 처리하기가 매우 어렵습니다. 물론이 사실을 알면 문제가 종속성 충돌이라고 추측하기가 조금 더 쉬워집니다.
maven 2.1-SNAPSHOT을 사용하고 있습니다.