Gradle 传递依赖

什么是传递依赖

假设我们有项目, ProjectA, ProjectB 和 ProjectC, 此时, A依赖B, B依赖C, 那么这种依赖就是传递依赖

查看依赖关系

 gradle dependencies
->
jasper
\--- org.apache.tomcat.embed:tomcat-embed-jasper:9.0.2
     +--- org.apache.tomcat.embed:tomcat-embed-core:9.0.2
     |    \--- org.apache.tomcat:tomcat-annotations-api:9.0.2
     +--- org.apache.tomcat.embed:tomcat-embed-el:9.0.2
     \--- org.eclipse.jdt:ecj:3.12.3

常见的依赖配置修改

dependencies {
    testImplementation group: 'junit', name: 'junit', version: '4.12'
    jasper('org.apache.tomcat.embed:tomcat-embed-jasper:9.0.2') {
           force = true    // 冲突时优先使此该版本
           transitive = false    // 关闭依赖传递
           exclude module: 'support-v4'  // 根据构建名称排除
           exclude group: 'com.android.support'    // 根据组织名称排除
           exclude group: 'com.android.support', module: 'support-v4'  // 根据组织名称+构件名排除
    }
}

关闭全局传递依赖

configurations.all {
  transitive = false
}

打印依赖库位置

例如上面的例子, 我们打印出当前依赖jar的位置

task printDependencies {
    configurations.getByName('jasper').each {
        dependency -> println dependency
    }
    //由于默认testImplementation的resloved 是false, 所以我们可以将它设置为true在进行访问
    configurations.testImplementation.setCanBeResolved(true)
    configurations.testImplementation.each {
        dependency -> println dependency
    }
}

ref

  • build.gradle管理依赖的版本(传递(transitive)\排除(exclude)\强制(force)\动态版本(+))

你可能感兴趣的:(Gradle 传递依赖)