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

来源:互联网 发布:新三板数据 编辑:程序博客网 时间:2024/05/22 15:00

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 testBothThis 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.:testThis is executed during the execution phase.:testBothThis is executed first during the execution phase.This is executed last during the execution phase.BUILD SUCCESSFULTotal time: 1 secs

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


0 0