首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle如何处理冗余依赖关系?

Gradle如何处理冗余依赖关系?
EN

Stack Overflow用户
提问于 2018-02-06 08:38:40
回答 1查看 258关注 0票数 1

如果我的build.gradle文件中有两个引用组工件的依赖项,并且这两个组都包含对相同jar文件的引用,那么Gradle如何处理它们?Gradle是否识别组成组的单个jar文件之间的版本差异,并且只在编译时选择具有最新版本的jar文件,还是选择在build.gradle文件中最后列出的jar文件?示例:

代码语言:javascript
复制
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文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-06 08:54:59

这取决于如何将jar文件放入库(sdk)中。

您应该将jar文件作为传递的依赖项来管理。

这意味着在与sdk相关的pom文件中,您有一个jar文件的依赖项。

在这种情况下,您可以使用检查医生:

Gradle提供了以下解决冲突的策略: 最新版本:使用依赖项的最新版本。这是Gradle的默认策略,并且通常是一个适当的选择,只要版本是向后兼容的。 失败:版本冲突导致构建失败。此策略要求在构建脚本中显式解决所有版本冲突。有关如何显式选择特定版本的详细信息,请参阅ResolutionStrategy。

相反,如果您只是将jar放入sdk 中,而不使用传递依赖项(只是jar文件中的jar文件):

如果您不使用传递依赖关系管理,版本冲突是未被检测到的,并且类路径通常是偶然的顺序将决定哪个版本的依赖将获胜。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48638689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档