app 依赖于库lib_A
和lib_B
(即implementation 'com.aaa:lib_A:1.0.0'
,和 implementation 'com.bbb:lib_B:16.0.0'
)。
lib_A
内部依赖com.xxx.yyy:zzz
并强制版本
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.xxx.yyy') {
details.useVersion "10.0.2"
}
并lib_B
依赖于相同com.xxx.yyy:zzz
的版本并被迫使用不同的版本
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.xxx.yyy') {
details.useVersion "10.6.1"
}
问题:
如果应用程序没有在自己的 gradle 中指定与“com.xxx.yyy:zzz”相同的依赖项,那么用于构建应用程序并在运行时使用的依赖项将是什么。
如果应用程序还为同一依赖项本身指定了另一个版本,或者也可以
resolutionStrategy
用来强制到其他版本(可能比lib_A
and中指定的版本更旧lib_B
),那么无论应用程序的依赖项版本是否对其他库具有主导权(尽管他们有自己的resolutionStrategy
)?