如果我的build.gradle文件中有两个引用组工件的依赖项,并且这两个组都包含对相同jar文件的引用,那么Gradle如何处理它们?Gradle是否识别组成组的单个jar文件之间的版本差异,并且只在编译时选择具有最新版本的jar文件,还是选择在build.gradle文件中最后列出的jar文件?示例:
dependencies {
compile group: 'some-sdk-1', name: 'sdk1', version: '2.5'
compile group: 'some-sdk-2', name: 'sdk2', version: '1.0'
}在本例中,有些-SDK-1可能包含一个名为lib1-1.0.jar的jar,在某些-SDK-2中,存在相同的库,但版本不同。例如lib1-2.0.jar
使用的是哪个jar文件?
发布于 2018-02-06 08:54:59
这取决于如何将jar文件放入库(sdk)中。
您应该将jar文件作为传递的依赖项来管理。
这意味着在与sdk相关的pom文件中,您有一个jar文件的依赖项。
在这种情况下,您可以使用检查医生:
Gradle提供了以下解决冲突的策略: 最新版本:使用依赖项的最新版本。这是Gradle的默认策略,并且通常是一个适当的选择,只要版本是向后兼容的。 失败:版本冲突导致构建失败。此策略要求在构建脚本中显式解决所有版本冲突。有关如何显式选择特定版本的详细信息,请参阅ResolutionStrategy。
相反,如果您只是将jar放入sdk 中,而不使用传递依赖项(只是jar文件中的jar文件):
如果您不使用传递依赖关系管理,版本冲突是未被检测到的,并且类路径通常是偶然的顺序将决定哪个版本的依赖将获胜。
https://stackoverflow.com/questions/48638689
复制相似问题