gradle依赖问题

 

1 查依赖

Gradle 默认开启了 依赖传递 意思就是 项目依赖了A,A又依赖了B和C,这时候,我们只需要写一行代码:implementation A就行了,由传递依赖导致的冲突,默认是以最高版本的依赖为准,要想查看整个项目的依赖传递关系,使用命令:

./gradlew app:dependencies --configuration releaseRuntimeClasspath

app是具体的module
releaseRuntimeClasspath是具体的variants类型。

结果:

符号的含义:

  • x.x.x (*) 该依赖已经有了,将不再重复依赖。
  • x.x.x -> x.x.x 该依赖的版本被箭头所指的版本代替。
  • x.x.x -> x.x.x(*) 该依赖的版本被箭头所指的版本代替,并且该依赖已经有了,不再重复依赖。

也可以在Android studio左侧的Project栏的External Libraries中查看,可以看到 由于引入了和当前编译版本号不同的支持库所产生的问题。

2 解决方式

2.1 排除所有:

// 在build.gradle 中添加下面节点
configurations{
    all*.exclude module: "support-fragment"
}

2.2 排除指定:

A:

 implementation ('com.github.bumptech.glide:glide:4.7.1'){
        exclude module:"support-fragment"
    }

B:

configurations {
    //编译期排除commons模块
    compile.exclude module: ‘commons‘
    //在整个构建过程中排除pkaq.tiger:share
    all*.exclude group: ‘pkaq.tiger‘, module: ‘share‘
}

dependencies {
    compile("pkaq.tiger:web:1.0") {
        exclude module: ‘share‘
    }       
}

 

2.3 Force 强制指定

A:全局配置强制使用某个版本的依赖来解决依赖冲突中出现的依赖

configurations.all {
   resolutionStrategy {
       force 'com.android.support:support-fragment:26.1.0'
   }
}

B:指定force = true属性可以冲突时优先使用该版本进行解决

compile(‘org.hibernate:hibernate:3.1‘) {
    force = true
}

 3 依赖传递特性

  A 全局性的关闭依赖传递特性

configurations.all {
   transitive = false
}

 B : 局部

传递依赖特性可以轻松地通过transitive参数进行开启或关闭,上面的示例中如果要忽略spring-web的传递性依赖可以采用指定 transitive = false 的方式来关闭依赖传递特性,也可以采用添加@jar的方式忽略该依赖的所有传递性依赖。

compile("org.springframework:spring-web:4.3.4.RELEASE") {
    transitive = false
}

compile `org.springframework:spring-web:4.3.4.RELEASE@jar`

 4 使用动态版本

  +表示始终采用该依赖最新的1.x版本的最新依赖。

    compile ‘org.springframework:spring-web:+‘

 =====================================================

一个综合示例

compile(‘org.hibernate:hibernate:3.1‘) {
 // 冲突时优先使用该版本
 force = true

 // 依据构建名称排除
 exclude module: ‘cglib‘ 
 // 依据组织名称排除
 exclude group: ‘org.jmock‘ 
 // 依据组织名称+构件名称排除
 exclude group: ‘org.unwanted‘, module: ‘iAmBuggy‘ 

 // 为本依赖关闭依赖传递特性
 transitive = false
}

记录自:

https://segmentfault.com/a/1190000015805844

http://www.mamicode.com/info-detail-2423841.html

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gradle 是一种构建工具,用于管理项目的依赖项。在使用 Gradle 进行构建时,有时候可能会遇到依赖下载慢的问题。这可能会导致构建过程变得缓慢,影响开发者的工作效率。 导致 Gradle 依赖下载慢的原因可能有以下几个: 1. 网络问题Gradle 依赖下载受到网络速度的影响。如果你的网络连接不稳定或者速度较慢,那么 Gradle依赖下载就会变得缓慢。 2. 服务器问题Gradle 依赖是从远程仓库下载的,如果远程仓库的服务器出现问题或者访问量较大,那么下载速度可能会受到影响。 3. 依赖冲突:如果项目中存在依赖冲突,Gradle 可能需要下载更多的依赖文件来解决这些冲突,从而导致下载速度变慢。 解决 Gradle 依赖下载慢的方法如下: 1. 配置本地仓库:可以使用配置本地仓库的方式,将常用的依赖下载到本地,这样可以加快依赖的下载速度。 2. 使用镜像仓库:将 Gradle 的远程仓库替换为速度更快的镜像仓库,可以加快依赖的下载速度。 3. 使用全局代理:如果你所在的网络环境存在限制,可以使用全局代理来加速 Gradle依赖下载。 4. 避免依赖冲突:在项目中正确管理和解决依赖冲突,可以减少不必要的依赖下载。 总之,Gradle 依赖下载慢可能会影响开发效率,但通过检查网络连接、使用镜像仓库、配置本地仓库和解决依赖冲突等方法,我们可以提高 Gradle 依赖的下载速度,从而改善开发体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值