Gradle如何处理多模块项目中的依赖冲突

Gradle如何处理多模块项目中的依赖冲突,gradle,dependencies,dependency-management,Gradle,Dependencies,Dependency Management,我在gradle文档中读到,依赖冲突解决是默认完成的,因此gradle选择了最新版本的库。 我注意到,在一个简单的项目中,它似乎工作得很好。尽管在多模块项目中,似乎每个模块都分别解析其依赖关系 例如: - Module-A: Dependency-C -> Transitive-Dependency-Y-Version1 Dependency-D -> Transitive-Dependency-Y-Version2 <<<< this one is

我在gradle文档中读到,依赖冲突解决是默认完成的,因此gradle选择了最新版本的库。 我注意到,在一个简单的项目中,它似乎工作得很好。尽管在多模块项目中,似乎每个模块都分别解析其依赖关系

例如:

- Module-A:
  Dependency-C -> Transitive-Dependency-Y-Version1
  Dependency-D -> Transitive-Dependency-Y-Version2  <<<< this one is chosen for the module
- Module-B:
  Dependency-E -> Transitive-Dependency-Y-Version1
  Dependency-F -> Transitive-Dependency-Y-Version3  <<<< this one is chosen for the module
-模块A:
Dependency-C->Transitive-Dependency-Y-Version1

Dependency-D->Transitive-Dependency-Y-Version2依赖项“Y-version-2”将包含在模块A的依赖项集中,“Y-version-3”包含在模块B的依赖项集中。模块A和模块B具有不同的依赖项集。如果另一个模块,比如模块G,同时依赖于模块A和模块B,那么在模块G的依赖关系集中,Y-version-3将“战胜”Y-version-2。这是我的理论,但这不是我项目中发生的情况。我将尝试在一些我无法复制的测试项目中复制它。在一个演示项目中尝试,效果很好。我的猜测是,因为我的原始项目太大,并且有太多级别的可传递依赖项嵌套,gradle不知何故无法正确地解决它,并最终在类路径中复制依赖项。