什么是传递依赖
假设我们有项目, 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
}
}