Gradle基础知识

2019-03-17  本文已影响0人  Bernardo_Silva

Gradle中的依赖方式有以下几种:

其中implementation和api在前面可以加上debug,release或者test声明,例如debugApi

详细说明:

基本语法

第一手资料 Groovy APIGradle Doc

下面列出几个常用的和Java区别比较大的:

obj.with {
   name = "android"
   phone= "145555555"
}
if (str) { }
obj?.setData()
map.each {
   println "map:[${it.key} : ${it.value}]"
}
def xml = new XmlParser().parse(new File("test.xml"))
// 访问view节点的name属性
println xml['view'].@name[0]
task(test).doLast {
    println "start execute yuangshuo"
    getString()
}

def getString() {
}

更多基础语法:
Groovy快速入门指南
Gradle脚本基础全攻略

Gradle生命周期和执行顺序

Gradle的生命周期分为3个阶段:Initialization、Configuration和Execution

  1. 首先解析settings.gradle来获取模块信息(Initialization阶段)
  2. configure项目中top-level的build.gradle,然后configure每个module的build.gradle,配置的时候并不会执行task,一个module执行configure结束会执行project.afterEvaluate(Configuration阶段)
  3. 按configure顺序执行(Execution阶段)
// 打印日志顺序
setting##init
top-level##init
app##init
app##afterEvaluate
common##init
app##task

详细学习:Gradle基础 - 构建生命周期和Hook技术

常用Api

定义Task
task myTask {
    println "config myTask"
}

myTask.doLast {
    println "after execute myTask"
}

myTask.doFirst {
    println "before execute myTask"
}

执行一个task时,都会先执行task的配置,doFirst是在task开始执行之前,而doLast则是在执行后,两者都是在task配置之后执行的,因为执行任意一个task,都需要先配置一遍。每个task执行之前都需要进行一遍完整的配置。

class MyTask extends DefaultTask {
    @TaskAction
    def hello() {
        println "Hello world."
    }
}
task taskname(type : MyTask)

@TaskAction表示task要执行的动作

project.task('myTask').doLast {
    println "after execute myTask"
}
Task依赖
task taskA(dependsOn: 'taskB') {
    doLast {
        println 'taskA'
    }
}

task taskB {
    doLast {
        println 'taskB#1'
    }
}

taskB.doLast {
    println 'taskB#2'
}

执行gradlew taskA,打印结果

> Task :app:taskB 
taskB#1
taskB#2

> Task :app:taskA 
taskA

一个Task执行前先执行其依赖的Task,doFirst和doLast可以被执行多次

Gradle命令:

Gradle日志级别

gradlew -q taskname 可以控制日志输出级别

上一篇 下一篇

猜你喜欢

热点阅读