当前位置: 首页 > article >正文

api 和 implementation 区别

官网

implementation

Gradle 会将依赖项添加到编译类路径,并将依赖项打包到构建输出。不过,当您的模块配置 implementation 依赖项时,会让 Gradle 了解您不希望该模块在编译时将该依赖项泄露给其他模块。也就是说,其他模块只有在运行时才能使用该依赖项。
使用此依赖项配置代替 api 或 compile(已弃用)可以显著缩短构建时间,因为这样可以减少构建系统需要重新编译的模块数。例如,如果 implementation 依赖项更改了其 API,Gradle 只会重新编译该依赖项以及直接依赖于它的模块。大多数应用和测试模块都应使用此配置。

api

Gradle 会将依赖项添加到编译类路径和构建输出。当一个模块包含 api 依赖项时,会让 Gradle 了解该模块要以传递方式将该依赖项导出到其他模块,以便这些模块在运行时和编译时都可以使用该依赖项。
此配置的行为类似于 compile(现已弃用),但使用它时应格外小心,只能对您需要以传递方式导出到其他上游消费者的依赖项使用它。 这是因为,如果 api 依赖项更改了其外部 API,Gradle 会在编译时重新编译所有有权访问该依赖项的模块。 因此,拥有大量的 api 依赖项会显著增加构建时间。除非要将依赖项的 API 公开给单独的模块,否则库模块应改用 implementation 依赖项。

从 Gradle 3.4 开始,compile 已经过时,取而代之的是 api 和 implementation,两者最大的区别是依赖程度的不同api 和 compile 一样是强依赖,当主模块使用 api 依赖库时,这个库所依赖的库中类是可见的,而 **implementation 是弱依赖,**刚好和 api 相反。在编译时间上看, implementation 相对 api 会快一些,因为它不需要对库中依赖的库进行编译时检查,所以一般情况下我们选用 implementation 来依赖第三方库。

  • implementation类似于“praivte”,module引用implementation只应用于自身,其他module如果dependency该module,无法使用implementation表明的路径。

  • api类似于“public”,​其他module如果dependency该module,可以使用implementation表明的路径。也就跟compile类似​​​​。

更多

implementation和api的区别
implementation、api、compileOnly区别详解


http://www.kler.cn/a/17253.html

相关文章:

  • 带你掌握springboot集成SpringSecurity安全框架
  • 使用 Flask 和 ONLYOFFICE 实现文档在线编辑功能
  • RAFT: Recurrent All-Pairs Field Transforms for Optical Flow用于光流估计的循环全对场变换
  • 【JavaEE进阶】导读
  • window下安装rust 及 vscode配置
  • TVM计算图分割--分割方式
  • 最大和+翻硬币(蓝桥杯JAVA解法)
  • 【python】创建python包
  • 浅谈MySQL索引以及执行计划
  • 自定义类型:结构体
  • Windeployqt 打包,缺少DLL 的原因分析,解决方法
  • 【网络】网络基础入门
  • Bean的作用域和生命周期
  • Splunk 转移数据之collect 命令
  • 功能齐全的 DIY ESP32 智能手表设计之PCB介绍
  • 一篇带你快速入门DDD领域驱动设计
  • 【JavaEE初阶】简单了解wait和notify方法~
  • MySQL 精选 35 道面试题大厂稳了(含答案)
  • 真无线耳机哪款性价比高?高性价比无线耳机排行榜
  • Apache POI,springboot中导出excel报表
  • Websocket的基本认识、使用与封装
  • JavaScript:数组---二分法
  • 【笔试强训选择题】Day7.习题(错题)解析
  • 看我如何通过帮助服务台轻松黑掉数百家公司
  • selenium自动化面试题回答
  • KeepAlived高可用环境搭建