Gradle依赖统一管理
Gradle引用依赖非常简单,但一旦涉及多module,每个module的依赖管理就变得非常麻烦。这就和编程中使用的变量一样,每个module中都引用自己的依赖——局部变量,这样就造成多个module有多个局部变量,不利于项目管理。因此,最好是使用类似全局变量的方式来进行统一的管理。
利用前文中介绍的Gradle全局变量就可以非常方便地实现这一管理,在根目录的build.gradle脚本中配置如下所示的代码。
- ext {
- android = [compileSdkVersion: 23,
- buildToolsVersion: '23.0.2']
- dependencies = [supportv7: 'com.android.support:appcompat-v7:23.2.0']
- }
在全局Gradle脚本中,笔者指定了android和dependencies两个列表,并在其中配置了统一的参数和对应的值。这样在每个module中,可以通过代码使用全局的依赖配置,代码如下所示。
- android {
- compileSdkVersion rootProject.ext.android.compileSdkVersion
- buildToolsVersion rootProject.ext.android.buildToolsVersion
- }
- dependencies {
- compile rootProject.ext.dependencies.supportv7
- }
通过这种方式,可以使用全局参数统一管理这些依赖配置。
更进一步,开发者还可以把这些全局参数抽取出来,写到一个单独的配置文件中。例如,笔者在项目根目录下创建一个config.gradle文件,并写入如下所示的代码。
- ext {
- android = [compileSdkVersion: 23,
- buildToolsVersion: '23.0.2']
- dependencies = [supportv7: 'com.android.support:appcompat-v7:23.2.0']
- }
这里就要把ext全局参数抽取出来了。下一步,在根目录下的build.gradle文件中,使用代码加载这个配置文件,代码如下所示。
- apply from: 'config.gradle'
这样就可以在所有的子module中使用这些参数了,使用方法与前面一种方式相同,这里不再赘述。
通过这种统一的依赖管理方式,可以统一所有module的依赖配置,避免使用不同版本的依赖库而导致的冲突,而且也利于项目的管理。
