Gradle Configuration

configuration

configuration是gradle依赖管理里面的一个概念。

譬如,api和implement就是我们经常用的configuration

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'com.android.support:support-annotations:28.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation "androidx.multidex:multidex:2.0.1"

    api 'com.squareup.retrofit2:retrofit:2.4.0'
    api 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
}

多角度看configuration

从多角度看待,可帮助我们更加好的认识configuration

  • configuration就是一系列文件集合, 这些文件有可能在本地或者网络,build的时候会通过捞取相对应文件进行编译


    Gradle Configuration_第1张图片
    image.png
  • 也可以用更加丰富层次的角度看待configuration

  1. 表达了一系列的依赖关系,犹如一个多叉树的根结点,向上一提能够连根带土把所有结点都显示出来
  2. 从消费的角度看,表示需要的依赖,譬如要用retrofit实现网络功能,那么就要声明对retrofit2的依赖(填入id,溯源获取相对应的jar文件--从本地或者网络)
  3. 从生产者角度,通过合适的配置,不同的variant可以通过不同的configuration生成不同的产物, 譬如我们定义了两个不同的configuration:localConf 和 netConf, 目的是构建不同的app,一个没有网络库只本地使用,一个有网络访问
localConf "com.exam.local:localdb:1.0.0"
netConf "com.squareup.okhttp3:3.4.2"

configuration helps a lot

直接使用javac 来编译我们的java项目,只需要设置classpath即可, 如

C:\>java -classpath \examples;\lib\Banners.jar greetings.Hi

但是无法解决以下问题:

  1. 版本管理
  2. 冲突检测
  3. 同个源码编译不同的包非常麻烦

编译工具的发展是个长期的过程,从make、ant、maven、gradle,我们能看到工具的进步,效率的提高,后续会详细分析各个编译工具的特点如maven的xml、gradle的dsl

你可能感兴趣的:(Gradle Configuration)