乐趣区

关于后端:关于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 的 <properties> 中定义变量,通常咱们在这里定义版本号。
在 gradle 中:

  • 能够在 build.gradle 的 ext 中定义属性,子项目能够间接应用父我的项目的属性
  • 能够在 gradle.properties 中定义属性,在 build.gradle 中应用,如 hasProperty

仓库和插件

在 maven 中,仓库是在 <repositories> 中定义,插件是在 <build> 中定义。
在 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 中,依赖是在 <dependencies> 中定义。
在 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
退出移动版