- 领域驱动设计(DDD)
Gradle是一个自动化build工具,所以Gradle面对的领域就是自动化构建这一领域。Gradle是按照DDD的思想设计和开发的,所以自动化构建领域里的大部分概念,在Gradle的源代码里都有一个接口或类与之对应。本文介绍对Gradle新手来说最重要的三个领域对象:Project、Task、Action。 - Project
Project是Gradle最重要的一个领域对象,我们写的build.gradle脚本的全部作用,其实就是配置一个Project实例。在build.gradle脚本里,我们可以隐式的操纵Project实例,比如,apply插件、声明依赖、定义Task等,如下所示:
apply plugin: 'groovy'
dependencies {
compile "org.eclipse.jetty.aggregate:jetty-all:9.1.3.v20140225"
}
task myTask {
// ...
}
apply、dependencies、task等实际上是Project的方法,参数是一个代码块。
如果需要,也可以显示的操纵Project实例,比如:
project.ext.myProp = 'myValue'
- Task
Gradle的Task等同于Ant的Target。在内部,Task被组织成了一个有向无环图(DAG)。Gradle保证Task按照依赖顺序执行,并且每个Task最多只被执行一次。当我们看到下面这段脚本的时候,只要明白两点就可以了:
task myTask {
// ...
}
第一点:给Project添加一个名为“myTask”的任务
第二点:用一个闭包来配置这个任务
在闭包中,我们可以充分利用Gradle提供的DSL来配置任务,比如,给任务添加Action。
- Action
Task可以包含n个Action,Task提供了doFirst和doLast方法来给自己添加Action,如下所示:
task myTask {
doFirst {
println 'hello'
}
doLast {
println 'world'
}
}
- 结论
build.gradle脚本的真正作用,就是配置一个Project实例。在执行build脚本之前,Gradle会为我们准备好一个Project实例,执行完脚本之后,Gradle会按照DAG依次执行任务。
网友评论