Maven 在父项目和子项目中使用库的不同版本
我有一个包含build.gradle的项目child,如下所示Maven 在父项目和子项目中使用库的不同版本,maven,gradle,build.gradle,dependency-management,transitive-dependency,Maven,Gradle,Build.gradle,Dependency Management,Transitive Dependency,我有一个包含build.gradle的项目child,如下所示 dependencies{ compile 'com.google.guava:guava:17' } dependencies{ compile project(':child') compile 'com.google.guava:guava:23' } 我有另一个名为parent的项目,其build.gradle如下所示 dependencies{ compile 'com.
dependencies{
compile 'com.google.guava:guava:17'
}
dependencies{
compile project(':child')
compile 'com.google.guava:guava:23'
}
我有另一个名为parent的项目,其build.gradle如下所示
dependencies{
compile 'com.google.guava:guava:17'
}
dependencies{
compile project(':child')
compile 'com.google.guava:guava:23'
}
现在我的问题是,子项目在运行时将使用哪个版本?我知道Gradle依赖关系树显示17->23
。但这是否意味着孩子们也会使用较新版本的番石榴?如果我想用guava:23
在parent中,但它缺少child使用的类,该怎么办
如果我不控制子对象,并且它作为外部依赖项包含在父对象中,该怎么办
编译'xxx:child:1.0'
这是否意味着我永远无法升级我的guava版本,直到child升级吗?在Java中,在类路径上最多可以有一个版本的库(或者,至少,所有其他版本都会导致麻烦…) 因此,如果你的“父母”使用“孩子”,而他们都使用番石榴,你需要找到一种适合他们两人的番石榴 通常,如果Gradle在依赖关系树上找到多个版本,它会使用依赖关系的最新版本。您当然可以获得更细粒度的控制,但很长时间没有使用Gradle(只有Maven,您的直接依赖关系总是获胜,其他冲突通过DependencyManager解决)