当我从http://mvnrepository.com/artifact/org.hibernate下载Hibernate entitymanager时,您会发现它还依赖于4.2版中的验证器。但最新的是4.3。如果我只在验证器上添加另一个依赖项,我最终会使用4.3还是4.2?你应该怎么处理这种情况?你应该手动覆盖?或者只使用“主要”依赖依赖的依赖项?
答案 0 :(得分:4)
根据Introduction to the Dependency Mechanism
依赖关系中介 - 确定在遇到多个版本的工件时将使用哪个版本的依赖关系。目前,Maven 2.0仅支持使用“最接近的定义”,这意味着它将在依赖树中使用与项目最接近的依赖项版本。您可以通过在项目的POM中明确声明它来保证版本。
所以回答你原来的问题:
如果我只在验证器上添加另一个依赖项,我最终会使用4.3或4.2吗?
如果你明确地在版本4.3中添加一个依赖项,它应该选择4.3,因为你的pom中的任何东西都比任何传递依赖都“更近”。
你应该如何应对这种情况?你应该手动覆盖?或者只使用“主要”依赖依赖的依赖项?
如果我对使用哪种依赖关系有任何疑问,我会选择最新/最好的稳定版本并明确地将其添加到我的pom中。但那只是我。