Gradle里面的依赖implementation和api的真正理解

Stella981
• 阅读 1321
Gradle新版本里面依赖的写法支持implementation和api,下面简单解释两者的区别:  implementation 表示依赖,即 只依赖不打包进来。  api 表示打包,即 不仅依赖还打包进来,这样上层就不用重复依赖。  注意:这里的打包是便于理解,是指打包依赖关系而不是打包源代码,也就是说将依赖暴露给上层。  下面举例说明:    app主模块下的依赖:      dependencies {  implementation project(path: ':home')  } //依赖home模块,使用implementation。    home模块下的依赖:      dependencies {  api project(path: ':mvp')  } //使用api,表示将mvp模块引入并打包进home模块。因为mvp模块含v7包,home模块也含v7包。    mvp模块下的依赖:      dependencies {  api 'com.android.support:appcompat-v7:28.0.0'  } //使用api,表示将v7包引入并打包进mvp模块。  相当于:    app主模块下的依赖:      dependencies {          implementation project(path: ':home')          implementation project(path: ':mvp')        implementation 'com.android.support:appcompat-v7:28.0.0'      } //依赖home模块,和home模块需要显示引入v7包一样,app引入home模块后还需要显示引入mvp模块和v7包。    home模块下的依赖:      dependencies {          implementation project(path: ':mvp')         implementation 'com.android.support:appcompat-v7:28.0.0'       } //依赖mvp模块.因为mvp模块引入v7包使用的implementation,也就是只给自己使用,没有将v7包打包进mvp模块,所以home模块还要引入v7包。    mvp模块下的依赖:      dependencies {          implementation 'com.android.support:appcompat-v7:28.0.0'        } //依赖v7包,使用implementation,只依赖v7进mvp模块,不打包向上提供
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
blueju blueju
3年前
私有依赖的打包与上传
首发于<aname"2ro9T"</a背景项目中有三四个私有依赖(只有npm包,无源码),包括我封装的一些插件组件,需要上传到npm私有库,提供给其他同事组们使用。<br/<br/公司已有npm私有库,使用的是NexusRepositoryManager,上传的方式是:提交tgz格式的依赖包。最开始当初的我,
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
红橙Darren 红橙Darren
3年前
多渠道打包
Android多渠道打包看这一篇就够了本文三个流程一、多渠道配置1、多渠道配置2、不同渠道不同签名配置3、不同渠道不同资源文件配置4、不同渠道不同依赖配置二、注意事项三、打包1、命令行打包2、IDE打包多渠道配置(2种方式)1、可写在主模块(app)的build.gradle下androidcompileSdkVers
Stella981 Stella981
3年前
Maven命令将本地jar打包到maven仓库
一、背景日常开发中,常见的一种情况是在java项目的pom.xml文件中引入依赖版本信息,由于maven中央仓库没有这个jar,我们可以从其他地方下载下来,然后再使用打包方式将下载下来的jar包打包到maven仓库。二、示例1\.依赖ojabc6引入!在这里插入图片描述(https:/
Wesley13 Wesley13
3年前
ubuntu20.04安装gradle
最近在研究CAS,新版本用gradle进行依赖描述和构建的,因此就顺应一下尝试用这个打包WAR!因为用虚拟机装的,打算日后转到容器去,所以使用了ubuntu做系统!系统已经安装了openjdk11jdk,因此接下来下载gradle包进行安装(gradle下载地址(https://www.oschina.net/action/GoToLink?ur
Easter79 Easter79
3年前
SpringBoot依赖外置
背景近期有个SpringBoot的项目需要频繁更新,但是每次上传到服务器上几十MB,实在是花时间,所以打算优化打包方案,将第三方依赖外置流程首先使用SpringBoot打包插件将第三方排除,但是一些版本号同步更新的本地模块依赖需要放到一个jar中使用mavendependency插件将第三方依赖复制到构建目录中
Stella981 Stella981
3年前
SpringBoot依赖外置
背景近期有个SpringBoot的项目需要频繁更新,但是每次上传到服务器上几十MB,实在是花时间,所以打算优化打包方案,将第三方依赖外置流程首先使用SpringBoot打包插件将第三方排除,但是一些版本号同步更新的本地模块依赖需要放到一个jar中使用mavendependency插件将第三方依赖复制到构建目录中
Stella981 Stella981
3年前
Gradle 深度刨析
基本构建块每个Gradle构建都包含三个基本概念:project、task和property。每个构建包含至少一个project、一个或多个task。project和task暴露的属性可以用来控制构建。Gradle的核心组件直接的依赖关系如下:!Gradle的核心组件直接的依赖关系(https://static.
Stella981 Stella981
3年前
Gradle
什么是传递依赖  在Maven仓库中,构件通过POM(一种XML文件)来描述相关信息以及传递性依赖。Gradle可以通过分析该文件获取获取所以依赖以及依赖的依赖和依赖的依赖的依赖,为了更加直观的表述,可以通过下面的输出结果了解。org.springframework:springweb:4.3.4.RELEASE