Java使用Gradle依赖配置compile,implementation和api的区别
这个主要看Java项目所使用的Gradle的版本。
Gradle3.4新增了Java-library插件,java-library插件使用了新的依赖配置implementation和api。旧的依赖配置compile被废弃。
Gradle3.4之前的版本
java插件
apply plugin: 'java'
添加依赖
dependencies {
compile 'commons-httpclient:commons-httpclient:3.1'
compile 'org.apache.commons:commons-lang3:3.5'
}
Gradle 3.4+
使用java-library插件替换java插件
apply plugin: 'java-library'
新的依赖配置:implementation和api
dependencies {
api 'commons-httpclient:commons-httpclient:3.1'
implementation 'org.apache.commons:commons-lang3:3.5'
}
api和implementation两种依赖的不同点在于:它们声明的依赖其他模块是否能使用。
- api:当其他模块依赖于此模块时,此模块使用api声明的依赖包是可以被其他模块使用
- implementation:当其他模块依赖此模块时,此模块使用implementation声明的依赖包只限于模块内部使用,不允许其他模块使用。