Gradle Transitive Dependency
Aug 30, 2019
Gradle 依赖声明的 compile
早就已经被弃用了,取而代之的则是 implementation
跟 api
。之前一直以为两者的区别在于是否可以传递依赖。
现在仔细看了下文档,发现 implementation
的禁止“传递依赖”只是指编译时的,而被传递的依赖项仍然会被打到最终的包里,在运行时提供。这么做主要还是为了提升编译效率:进行依赖隔离,当单个模块发生变更之后,对其没有直接依赖的模块可以不用重新编译。
Gradle 里真正禁止”传递依赖“(编译时 + 运行时):
针对单个依赖 ModuleDependency.setTransitive(boolean):
1 | dependencies { |
针对 configuration Configuration.setTransitive(boolean):
1 | configurations.all { |
参考