1

当我从http://mvnrepository.com/artifact/org.hibernate下载 Hibernate entitymanager 时,您会发现它还依赖于 4.2 版中的验证器。但是最新的是4.3。如果我只添加对验证器的另一个依赖项,我最终会使用 4.3 还是 4.2?你应该如何处理这样的场景?你应该手动覆盖吗?还是只使用“主要”依赖项所依赖的依赖项?

4

1 回答 1

4

根据依赖机制介绍

依赖中介——这决定了当遇到工件的多个版本时将使用哪个版本的依赖。目前,Maven 2.0 仅支持使用“最近定义”,这意味着它将使用依赖树中与您的项目最接近的依赖版本。您始终可以通过在项目的 POM 中明确声明来保证版本。

所以回答你原来的问题:

如果我只添加对验证器的另一个依赖项,我最终会使用 4.3 还是 4.2?

如果您显式添加了 4.3 版本的依赖项,它应该选择 4.3,因为您的 pom 中的任何内容都比任何传递依赖项“更接近”。

你应该如何处理这样的场景?你应该手动覆盖吗?还是只使用“主要”依赖项所依赖的依赖项?

如果我对使用哪个依赖项有任何疑问,我会选择最新/最稳定的版本并将其显式添加到我的 pom.xml 中。但这只是我。

于 2012-10-24T19:33:52.830 回答