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

Gradle是一种基于依赖的编程语言,你可以自定义task或者依赖规则在已有的task中。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类对象)对象实现对属性的访问和方法调用

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...