gradle 核心概念详解

gradle 核心概念详解

1. project

工程中每个module 都是一个project 。在此工程中,一共有三个project 分别是 myAppliance,app 和 lib

方法介绍: 
    1. this.beforeEvaluate 
    2. this.afterEvaluate 
    3. this.gradle.buildFinished
    4. getSubprojects 
    5. getAllProjects
    6. getRootProject
    7. project 方法
        project("lib") {
            //可以对lib 这个module进行配置
            Project project ->
            println ("lib project -- ${project.name}")
        }
1
2
3
4
5
6
project("lib") {
//可以对lib 这个module进行配置
Project project ->
apply plugin 'xxx'
group 'xxxx'
}

2. 对所有project进行配置

allprojects 闭包

3. subProject

subprojects {
Project p ->
   if(p.plugins.contains("library"))
        apply from '../xxx.gradle' 
}

4. Project 属性扩展 1

根project定义 ext 然后进行字段的扩展
ext {
    jdk_version = 8l
}
gradle文件扩展,可以将gradle文件独立出来,然后在module 的gradlee文件使用
apply from : this.file("path")

5. Project 属性扩展 2

gradle.properties 中定义
ig: 
    isModule = true
使用: 
    if(hasProperty('isModule')) {
        include 'lib'
    }

6. 文件属性操作

文件路径获取 : 
    println getRootDir()
    println getBuildDir()
    println getProjectDir()

7. task执行顺序

1. dependsOn 属性指定
    task("taskX") {
        doLast {
            println "taskX"
        }
    }

task ("taskY",dependsOn: taskX) {
    doLast {
        println "taskY"
    }
}

2. mustRunAfter 维护
    
    task ("taskY") {
        mustRunAfter taskX
        doLast {
            println "taskY"
        }
    }

8. 将自定义task挂载到构件过程

this.project.afterEvaluate{
    def build = project.tasks.getByName("build");
    build.doLast {
        cusTask.execute();
    }
}