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的时候会通过捞取相对应文件进行编译
image.png -
也可以用更加丰富层次的角度看待configuration
- 表达了一系列的依赖关系,犹如一个多叉树的根结点,向上一提能够连根带土把所有结点都显示出来
- 从消费的角度看,表示需要的依赖,譬如要用retrofit实现网络功能,那么就要声明对retrofit2的依赖(填入id,溯源获取相对应的jar文件--从本地或者网络)
- 从生产者角度,通过合适的配置,不同的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
但是无法解决以下问题:
- 版本管理
- 冲突检测
- 同个源码编译不同的包非常麻烦
编译工具的发展是个长期的过程,从make、ant、maven、gradle,我们能看到工具的进步,效率的提高,后续会详细分析各个编译工具的特点如maven的xml、gradle的dsl
网友评论