Gradle中的新实施关键字是啥[重复]

Posted

技术标签:

【中文标题】Gradle中的新实施关键字是啥[重复]【英文标题】:What is the new Implementation keyword in Gradle [duplicate]Gradle中的新实施关键字是什么[重复] 【发布时间】:2018-04-13 11:35:26 【问题描述】:

我最近将 android Studio 更新到了 3.0 版。现在在build.gradle 中,所有依赖项都使用implementation 关键字而不是旧的compile 关键字添加。

dependencies 
     implementation fileTree(include: ['*.jar'], dir: 'libs')
     implementation 'com.android.support:appcompat-v7:25.4.0'

但是compile 关键字仍然有效。 compileImplementation有什么区别?

【问题讨论】:

【参考方案1】:

compile 已被弃用,因此库使用 apiimplementation

Gradle 3.4 引入了新的 Java 库插件配置,允许您控制是否将依赖项发布到使用该库的项目的编译和运行时类路径。 Android 插件正在采用这些新的依赖配置,迁移大型项目以使用它们可以大大减少构建时间。

implementation

如果一个实现依赖改变了它的 API,Gradle 只会重新编译那个依赖和直接依赖它的模块。大多数应用和测试模块都应该使用这种配置。

api

当一个模块包含一个 api 依赖项时,它让 Gradle 知道该模块想要将该依赖项传递到其他模块,以便它们在运行时和编译时都可以使用它。此配置的行为就像 compile(现在已弃用),您通常应该只在库模块中使用它。这是因为,如果一个 api 依赖改变了它的外部 API,Gradle 会在编译时重新编译所有可以访问该依赖的模块

阅读更多来自new dependency configurations

【讨论】:

以上是关于Gradle中的新实施关键字是啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在SELECT语句中,对查询结果进行排序的子句是啥?能消除重复行的关键字是啥?

这个场景中默认关键字的目的是啥[重复]

C语言中的typedef是啥意思啊

关键词叠加是啥意思,

在SELECT语句中,对查询结果进行排序的子句是啥?能消除重复行的关键字是啥?

C#中'in'关键字的用途是啥? [复制]