Ahm*_*deh 6 android gradle android-studio build.gradle android-gradle-plugin
Gradle依赖关系的区别.
compile
apk project
compile project
provided project
implementation
Run Code Online (Sandbox Code Playgroud)
我的问题是
什么之间的区别compile,apk project,compile project,provided project在这里?
unb*_*ant 10
这里要讨论两个不同的事情:依赖配置和依赖源.
依赖配置
配置有助于定义依赖关系的传递性,这反过来消除了必须发现和指定您自己的项目/库所需的库的痛苦,包括它们自动包含它们.gradle中的配置概念与Maven的范围非常相似:
compile:编译依赖项在项目的所有类路径中都可用.此外,这些依赖项将传播到依赖项目.运行时通常需要编译时依赖项.apk:定义运行时依赖项.在编译时不需要具有此作用域的依赖项,但它将用于执行.这意味着您可以在编译时节省时间,并在项目实际运行时仍具有依赖性.这是何时使用apk依赖项的一个很好的例子.provided:这意味着此依赖项在运行时环境中可用.因此,此范围仅在编译和测试类路径中可用,并且不可传递.它不支持在Android项目,但您可以通过所讨论定义自己的配置解决办法是在这里.还有更多的配置,你可以在Android上遇到的,比如testCompile,它允许你指定将仅用于测试编译时依赖,说你想在你的测试使用JUnit,那么你会做如下:
testCompile 'junit:junit:4.12'
Run Code Online (Sandbox Code Playgroud)
依赖性来源
一旦了解了可用的配置,就需要指定实际的依赖关系.依赖关系可能是内部的或外部的,您可能依赖于您正在处理的另一个库,以及公共库.这是project关键字的来源,允许您指定内部模块或库的依赖关系.通过将依赖项定义为compile project,您将该模块或库添加为项目的传递依赖项.
假设您有一个messages包含三个模块(producer,consumer和shared)的项目,项目结构将如下所示:
messages/
build.gradle
settings.gradle
consumer/
build.gradle
producer/
build.gradle
shared/
build.gradle
Run Code Online (Sandbox Code Playgroud)
现在假定这两个consumer和producerJSON格式和存储邮件要使用谷歌,GSON用于这一目的.假设两个项目都有一些他们依赖的常见源代码,即shared模块.consumer然后,build.gradle可以定义以下依赖项:
dependencies {
// Internal dependency to project shared
compile project (':shared')
// External dependency to publicly available library,
// through public repositories such as jcenter() or mavencentral()
compile 'com.google.code.gson:gson:1.7.2'
}
Run Code Online (Sandbox Code Playgroud)
综上所述,这是两者的结合配置和资源,使您能够声明依赖为compile,compile project,apk project和更多!
| 归档时间: |
|
| 查看次数: |
5187 次 |
| 最近记录: |