• gradle入门(1-8)gradle 的依赖查看、依赖排除和指定版本(需要验证!)


    一、依赖查看 gradle dependencies

    在gradle dependencies输出会有如下几种标记:

    1、版本 : 唯一的依赖。

    2、版本():还存在该库其他版本的依赖或者间接依赖,并且默认选择()所标注的版本。

    3、版本1->版本2(*):还存在该库其他版本的依赖或者间接依赖,并且选择 版本2。

    二、依赖排除

    1、transitive = true

    transitive dependencies 指 依赖的依赖,即 “间接依赖”
    compile('com.meituan.android.terminus:library:6.6.1.16@aar'){
       transitive = true
       exclude module: 'hotel_model'
       exclude module: 'base_model'
    }
    @aar只下载该aar包,而不下载该aar包所依赖的其他包
    如果想使用@aar的前提下还能下载其依赖库,则需要添加transitive=true的条件。

    2、排除 transitive dependencies

    通过configuration或者dependency可以除去 transitive dependencies:
    build.gradle
    configurations {
       compile.exclude module: 'commons'
       all*.exclude group: 'org.gradle.test.excludes', module: 'reports'
    }

    dependencies {
       compile("org.gradle.test.excludes:api:1.0") {
         exclude module: 'shared'
       }
    }
    如果在configuration中定义一个exclude,那么所有依赖的transitive dependency (指定的)都会被去除。
    定义exclude时候,或只指定group, 或只指定module名字,或二者都指定。
    不是所有的transitive dependency 都可以被去除的,如:runtime时用到的。
    一般来说,runtime时候用不到的,或者目标环境及平台已经包含该依赖的可以执行exclude去除。

    那exclude选per-dependency还是per-configuration?
    大多数情况都选用per-configuration,下面是一些使用exclude的典型场合:
    * 有licensing问题
    * 从远程仓库上无法获取到依赖
    * runtime时候用不到
    * 有版本冲突

    其中,exclude module: 'base_model' 和 exclude group:'com.name.group' module:'base_model' 的作用是完全一样的。

    三、强制指定依赖版本

    1、force=true

    compile('com.squareup.okhttp:okhttp-mt:2.5.0') {
         force = true
    }
    如我们在依赖okhttp的时候很可能发生冲突,就比如依赖的依赖中也包含了okhttp,这种场合下,就会产生版本冲突的问题,
    加上force = true表明的意思就是即使在有依赖库版本冲突的情况下坚持使用被标注的这个依赖库版本。

  • 相关阅读:
    PAT A1147 Heaps (30 分)——完全二叉树,层序遍历,后序遍历
    # 数字签名&数字证书
    # Doing homework again(贪心)
    # Tallest Cows(差分)
    # ACM奇淫技巧
    # 二维前缀和+差分
    # 费解的开关(二进制+递推+思维)
    # log对数Hash映射优化
    # 起床困难综合症(二进制枚举+按位求贡献)
    # 最短Hamilton路径(二进制状态压缩)
  • 原文地址:https://www.cnblogs.com/lexiaofei/p/7121208.html
Copyright © 2020-2023  润新知