gradle 新的依赖方式 implementation、api、compileOnly

本文介绍了Gradle升级后的依赖管理方式,包括implementation、api等新关键字的使用及区别,如compileonly、runtimeonly等,并对比了旧有的compile依赖。

gradle升级之后,有了新的依赖方式,下面我来介绍一下他们的使用

先看看之前的
old
再看看现在的

区别和使用

implementation和api

implementationapi是取代之前的compile的,其中apicompile是一样的效果,implementation有所不同,通过implementation依赖的库只能自己库本身访问,举个例子,A依赖B,B依赖C,如果B依赖C是使用的implementation依赖,那么在A中是访问不到C中的方法的,如果需要访问,请使用api依赖

compile only

compile onlyprovided效果是一样的,只在编译的时候有效, 不参与打包

runtime only

runtimeOnlyapk效果一样,只在打包的时候有效,编译不参与

test implementation

testImplementationtestCompile效果一样,在单元测试和打包测试apk的时候有效

debug implementation

debugImplementationdebugCompile效果相同, 在debug模式下有效

release implementation

releaseImplementationreleaseCompile效果相同,只在release模式和打包release包情况下有效

大概就是这些了,需要更多请上车

### 含义 - **implementation**:参与编译和打包,但依赖的包不对其它工程开放。 - **api**:参与编译和打包,并且依赖的包对其它工程开放。 - **compileOnly**:仅参与编译,不参与打包,依赖的包对其它工程不开放[^2]。 ### 区别 从编译、打包以及对其他工程的开放性方面来看: - **编译和打包**:implementationapi既参与编译也参与打包,而compileOnly只参与编译不参与打包。 - **对其他工程的开放性**:implementation依赖的包不对其他工程开放,api依赖的包对其他工程开放,compileOnly同样不对其他工程开放[^2]。 ### 使用场景 - **implementation**:适用于依赖只在当前模块内部使用,不需要对外暴露的情况。例如,某个模块内部使用的工具类库,不希望被依赖该模块的其他模块使用。 - **api**:当希望依赖传递给依赖当前模块的其他模块时使用,如公共库模块。比如一个公共的基础库,其中依赖的某些包需要被使用该基础库的其他模块也能使用。 - **compileOnly**:运行时不需要,例如仅用于源代码注解或注释处理器;编译时仅需要其API,但具体实现由别的module实现。常用于解决依赖冲突等问题,在第三方库中,比较常用的依赖,如support、gson、Eventbus等可使用此方式。同时,若有多个library,只要确保有一个module中该依赖能参与到打包即可,其他的可以使用compileOnly。例如Lombok这类仅在编译时需要的依赖就适合用compileOnly [^1][^3][^4]。 ### 代码示例 以下是在Gradle中使用这三种依赖方式的示例: ```groovy dependencies { // 使用 implementation 方式依赖 implementation 'com.some.library:library-name:1.0.0' // 使用 api 方式依赖 api 'com.some.public-library:public-library-name:1.0.0' // 使用 compileOnly 方式依赖 compileOnly 'com.some.annotation-library:annotation-library-name:1.0.0' } ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值