关于Gradle那些事

参考文章 https://blog.csdn.net/wise181...
https://blog.csdn.net/z191726...
https://blog.csdn.net/cjhxydr...
https://www.yht7.com/news/111674
项目结构 在 maven 中,一个项目可以有多个模块,每个模块必定有 pom.xml 来控制依赖和项目关系。
在 gradle 中,同样可以有多个模块,每个模块称为 project,且每个 project 下必定有一个 build.gradle 用来控制当前 project 的依赖,最外层的 project 称为 rootProject,结构如下:

- rootProject |---+ project1 |---+ project2

在多模块的 gradle 项目中,一般会有一个 settings.gradle,用来配置任务或项目之间的关系,如指定父项目的名称 rootProject.name = 'cas'
变量 在 maven 中,我们可以在 pom.xml 的 中定义变量,通常我们在这里定义版本号。
在 gradle 中:
  • 可以在 build.gradle 的 ext 中定义属性,子项目可以直接使用父项目的属性
  • 可以在 gradle.properties 中定义属性,在 build.gradle 中使用,如 hasProperty
仓库和插件 【关于Gradle那些事】在 maven 中,仓库是在 中定义,插件是在 中定义。
在 gradle 中,仓库和插件是在 buildscript 中定义,如:
buildscript { // 配置工程仓库地址 repositories { jcenter() mavenCentral() mavenLocal() ivy {} maven { name 'personal' url 'http://localhost:8081/nexus/repositories/' credentials { username = 'admin' password = 'admin123' } } } // 配置工程的"插件"(编写gradle脚本使用的第三方库)依赖地址 dependencies { classpath 'com.android.tools.build:gradle:2.2.2' classpath 'com.tencent.tinker-patch-gradle-plugin:1.7.7' } }

依赖 在 maven 中,依赖是在 中定义。
在 gradle 中,依赖是在 dependencies 中定义,如:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) // 依赖文件树 // compile file() // 依赖单个文件 // compile files() // 依赖多个文件 compile 'com.android.support:appcompat-v7:26.1.0' // 依赖仓库中的第三方库(即:远程库) compile project('mySDK') { // 依赖工程下其他Module(即:源码库工程) exclude module: 'support-v4' // 排除依赖:排除指定module exclude group: 'com.android.support' // 排除依赖:排除指定group下所有的module transitive false // 禁止传递依赖,默认值为false }// 栈内编译 provided('com.tencent.tinker:tinker-android-anno:1.9.1') }

依赖的类型
  • implementation:相当于 maven 中依赖的 optional 配置
  • api:在 gradle-2.x 中表示 complie

    推荐阅读