主要跟Gradle的版本有关系
Gradle3.4新增了Java-library插件,java-library插件使用了新的依赖配置implementation和api。旧的依赖配置compile被废弃。
Gradle3.4之前的版本
java插件
apply plugin: 'java'
添加依赖
dependencies {
compile group: 'org.springframework.cloud', name: 'spring-cloud-context'
compile group: 'org.springframework.boot', name: 'spring-boot-starter'
}
Gradle 3.4+
使用java-library插件替换java插件
apply plugin: 'java-library'
新的依赖配置:implementation和api
dependencies {
api group: 'org.springframework.cloud', name: 'spring-cloud-context'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter'
}
api和implementation两种依赖的不同点在于:它们声明的依赖其他模块是否能使用。
api
当其他模块依赖于此模块时,此模块使用api声明的依赖包是可以被其他模块使用implementation
当其他模块依赖此模块时,此模块使用implementation声明的依赖包只限于模块内部使用,不允许其他模块使用。compileOnly
依赖会添加到编译路径中,但是不会打包到apk中,因此只能在编译时访问,且compileOnly修饰的依赖不会传递。runtimeOnly
与compileOnly相反,它修饰的依赖不会添加到编译路径中,但是被打包到apk中,运行时使用。没有使用过。annotationProcessor
用于注解处理器的依赖配置。testCompile
只在单元测试代码的编译以及最终打包测试apk时有效。debugCompile
只在debug
模式的编译和最终的debug apk
打包时有效。Release compile
仅仅针对Release
模式的编译和最终的Release apk
打包。