基于groovy语言的DSL编程基础(项目构建)

Gradle是一种基于依赖的编程语言,你可以在已有的task中自定义task或者依赖规则。对比我们最常用的语言,比如java、Object-C,Gradle就像同时包含了配置虚拟机、字节码解释规则、code语法。Gradle会让这些task按照顺序执行,且只执行一次。有些build tools工具会在任何一个task执行前构建完成一个基于依赖的task队列,便于完成它指定的编译任务,比如com.android.tools.build。

一次Gradle构建包含三个阶段:Initialization(初始化)、Configuration(配置)、Execution(运行)

1)Initialization

Gradle支持同时至少一个项目的构建,在Initialization阶段,Gradle决定哪个项目可以参与构建(build),并为它们分别创建一个Project实例。

2)Configuration

参与构建的所有项目的build script会被执行(从Gradle 1.4开始,有关联的项目才会被配置)

3)Execution

Gradle划分完成在配置阶段被创建的即将执行的task,通过gradle命令参数和当前目录确定这些task是否应该得到执行。


Setting文件

Gradle确定一个默认名为setting.gradle的setting文件,这个文件会在Initialization阶段执行。同时构建多个项目时,必须在所有项目的顶层目录中放置一个setting.gradle文件,这个文件用来确定哪个项目参与接下来的构建过程。如果只有个项目,可以没有setting.gradle文件。

单项目构建举例:

settings.gradle

println 'This is executed during the initialization phase.'
build.gradle

println 'This is executed during the configuration phase.'

task configured {
    println 'This is also executed during the configuration phase.'
}

task test << {
    println 'This is executed during the execution phase.'
}

task testBoth {
    doFirst {
      println 'This is executed first during the execution phase.'
    }
    doLast {
      println 'This is executed last during the execution phase.'
    }
    println 'This is executed during the configuration phase as well.'
}

运行命令:gradle test testBoth

> gradle test testBoth
This is executed during the initialization phase.
This is executed during the configuration phase.
This is also executed during the configuration phase.
This is executed during the configuration phase as well.
:test
This is executed during the execution phase.
:testBoth
This is executed first during the execution phase.
This is executed last during the execution phase.

BUILD SUCCESSFUL

Total time: 1 secs

附注:在一段Gradle脚本中,可以通过一个project对象实现对属性的访问和方法的调用。同样的,在setting文件中,可以通过setting(比如Setting类对象)对象实现对属性的访问和方法的调用。


你可能感兴趣的:(Gradle)