Gradle 模块依赖中,使用 implementation 与 api 的区别

news/2024/5/20 3:24:31 标签: Gradle, 模块

文章目录

  • 关键字 api:使用关键字 api 声明的依赖项表示该模块将向其依赖的其他模块公开此依赖项的 API。这意味着其他模块可以使用该依赖项提供的所有公共类和方法,以及该依赖项的传递依赖项提供的所有公共类和方法。当需要在本模块和依赖它的其他模块之间共享代码时,可以使用关键字 api

    例如,如果模块 A 使用模块 B,并且模块 B 使用了关键字 api 声明某个依赖项,那么模块 A 也可以使用该依赖项的所有公共 API。这通常用于需要在模块之间共享代码的情况,例如库模块和应用程序模块之间的依赖关系。

  • 关键字 implementation:使用关键字 implementation 声明的依赖项表示该模块将不向其依赖的其他模块公开此依赖项的 API。这意味着该依赖项只对该模块本身可见,并且不会被传递到依赖该模块的其他模块。当不需要将某个依赖项的 API 公开给其他模块时,可以使用关键字 implementation

    例如,如果模块 A 使用模块 B,而模块 B 使用了关键字 implementation 声明某个依赖项,那么模块 A 将无法使用该依赖项的任何公共 API。这通常用于需要在模块之间隔离依赖关系的情况,例如应用程序模块和库模块之间的依赖关系。

总之,使用关键字 api 声明依赖项时,可以将该依赖项的公共 API 与其他模块共享。而使用关键字 implementation 声明依赖项时,可以将该依赖项限制在当前模块内。


【注意】

  对依赖模块使用关键字 api,并不能使本模块能传递性地获得依赖模块依赖的所有依赖。对本模块来说,依赖时无论是使用关键字 api 还是 implementation 都没有区别。关键字 api 的作用只再其它模块依赖本模块时才会体现。换句话说**,如果想令本模块能传递性地获得依赖模块的依赖,那么应该在依赖模块的相应依赖中使用关键字 api,而不是在本模块中使用**。


举个例子。如果项目中有模块 A、B、C、D,且 A 依赖 B、B 依赖 C、C 依赖 D。在不考虑各个模块其它依赖的干扰的情况下。

  • 如果 B implementation C,C implementation D

    则 B 可以直接引用 C 中的类,但不能引用 D 中的类

  • 如果 B implementation C,C api D

    则 B 可以直接引用 C、D 中的类

  • 如果 A implementation B,B implementation C,C api D

    则 A 可以直接引用 B 中的类,但不能引用 C、D 中的类

  • 如果 A api B,B implementation C,C api D

    则 A 可以直接引用 B 中的类,但不能引用 C、D 中的类

也就是说,如果 B implementation C,则不管使用什么关键字,都无法通过 B 来依赖 C。


http://www.niftyadmin.cn/n/290332.html

相关文章

智能座舱的“宏大蓝图”和“残酷现实”

配图来自Canva可画 2023年上海车展各大车企发布新车、新配置和新战略好不热闹,“智能驾驶”、“智能座舱”等关键词频频出现,智能化已然成为车企技术比拼的关键。 Unity中国发布最新智能座舱解决方案,可为车企提供成熟、可量产落地的HMI&…

Java锁

公平锁,非公平锁,可重入锁,递归锁,自旋锁 (共享锁)读锁,(独占锁)写锁,互斥锁 独占式:只有一个线程能执行,具体的 Java 实现有 ReentrantLock。 共…

springboot+vue垃圾分类网站(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的垃圾分类网站。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&a…

Redis的20种使用场景

本文介绍Redis除了缓存以外的使用场景。 测试源码:https://github.com/vehang/ehang-spring-boot/tree/main/spring-boot-011-redis 1缓存 本文假定你已经了解过Redis,并知晓Redis最基础的一些使用,如果你对Redis的基础API还不了解&#xff…

自己组装的电脑怎么用U盘安装系统操作教学

自己组装的电脑怎么用U盘安装系统操作教学分享。有的用户使用台式机的时候,会自己去进行硬件的组装,但是这样的电脑在安装好了之后,里面还没有系统,需要进行安装。如果你不知道怎么去安装,可以来看看以下的操作方法。 …

海天注塑机KEBA系统数据采集

本文章只针对海天注塑机的KEBA系统,因为其他注塑机厂家也用KEBA系统,他们的采集方式可能不太一样,所以后续有时间我将写其他文章来解释(默认你已经向海天采购了OPC组件)。 一、采集原理 采集软件(OPC cli…

java版企业电子招投标采购系统源码——功能模块功能描述+数字化采购管理 采购招投标

​ 功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外…

ppdetection使用记录(上普环境配置)

ppdetection使用记录 环境准备 conda create -n ppdetect python3.8conda activate ppdetect确认自己的cuda版本nvcc -V按照cuda版本安装paddle:python -m pip install paddlepaddle-gpu2.3.2.post116 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stab…