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

这篇具有很好参考价值的文章主要介绍了Gradle 模块依赖中,使用 implementation 与 api 的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 关键字 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。文章来源地址https://www.toymoban.com/news/detail-434175.html

到了这里,关于Gradle 模块依赖中,使用 implementation 与 api 的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot gradle kotlin 多模块(或微服务)统一依赖及版本管理和构建不同环境打包task,docker镜像构建task

    在maven里可以在pom.xml中统一定义项目依赖,依赖版本,插件,多环境构建,子模块;定义packaging 为pom类型,各子模块按需引入,并且指定环境profiles构建。 在gradle中也可以实现依赖统一管理,各模块按需引入,区分环境的构建任务。 先上效果图 统一定义依赖,依赖版本,插

    2024年02月04日
    浏览(36)
  • 关于Android Studio使用Gradle构建时,依赖下载过慢的方案

    每个As人都应该被gradle下载问题困扰过。网上也有很多类似文章教你怎么做。我也把配置贴出来。 很多文章都是把repositories闭包当中的配置这么写: 这个时候你配置的镜像包没有发挥作用。gradle下载依赖的时候会从这几个仓库当中一路找下来。假如你需要下载一个 abc.jar 的依

    2024年02月04日
    浏览(52)
  • 【Android Gradle 插件】更新依赖方式,同时解决github三方库引用无法使用问题

    目录 首先看一下完整的 settings.gradle 依赖介绍 1、Maven 远程仓库配置 2、目录配置 3、完整代码示例 二、根目录下 build.gradle 构建脚本分析 pluginManagement 脚本块 , 用于 配置 Gradle 插件的 Maven 仓库 , 配置的是 构建过程 中 , 使用的仓库 ; dependencyResolutionManagement 脚本块 , 用于 配置

    2024年02月16日
    浏览(38)
  • 【ijkplayer】编译 Android 版本的 ijkplayer ⑦ ( 使用 AS 打开源码 | 重新设置 AGP 和 Gradle 版本号 | 设置依赖仓库 | 设置依赖 | 编译运行 )

    博客源码 : https://download.csdn.net/download/han1202012/88215731 在 【ijkplayer】编译 Android 版本的 ijkplayer ⑥ ( 进入 ijkplayer-android/android 目录 | 执行 compile-ijk.sh 脚本完成编译 ) 博客中 , 完成了 ijkplayer 的编译 , 编译后的 Android 项目源码在 https://download.csdn.net/download/han1202012/85008881 下载 ; 下

    2024年02月12日
    浏览(33)
  • TypeScript extends和implements区别

    (被人理解是幸运的,但不被理解未必不幸。一个把自己的价值完全寄托于他人的理解上面的人往往并无价值。——周国平) 相关文章 implements是一个类实现一个接口用的.实现一个接口,必须实现接口中的所有方法。 比如以下代码,定以了抽象类AbstractAnimal,然后Do

    2024年02月04日
    浏览(49)
  • 使用Go模块进行依赖管理

    摘要:本文将介绍Go语言中的模块(module)概念,以及如何使用Go模块进行依赖管理。我们会探讨模块的基本概念、使用方法、配置和依赖关系管理等方面的内容。 Go语言自2007年发布以来,一直以其简洁、高效和强大的网络编程能力而受到开发者的喜爱。然而,随着项目规模

    2024年02月08日
    浏览(69)
  • 【Android Gradle 插件】Android 依赖管理 ① ( 依赖库匹配 | 依赖库查找顺序及路径 | Gradle 资源库 )

    依赖库匹配 :  依赖库由三部分组成 依赖库分组 依赖库名称 依赖库版本号 只有三者都对上 , 依赖库才能匹配上 , 如 依赖库分组为 androidx.appcompat ,  依赖库名称为 appcompat ,  依赖库版本号为 1.3.1 ,  三者由冒号隔开 ; Android 依赖库查找路径 : 首先 , 查找 本地的 Gradle 缓存依赖

    2024年01月17日
    浏览(105)
  • 如何查看Android 包依赖关系&gradle依赖管理

    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 我们继续总结学习,温故知新。 本文讲述如何查看 android 依赖库关系。 Tasks-help-dependencies 可以看项

    2024年01月18日
    浏览(57)
  • gradle打包分离依赖jar

    正常打包的jar是包含项目所依赖的jar包资源,而且大多数场景下的依赖资源是不会频繁的变更的,所以实际把项目自身jar和其所依赖的资源分离可以实现jar包瘦身,减小上传的jar包总大小,能实现加速部署的效果 打包后build/libs/lib就是依赖的jar包资源 boot.jar就是不含依赖资源

    2024年01月25日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包