如果第一次听说领域驱动设计,那么赶紧买一本,或借一本Eric Evans写的那么同名经典书补一下课。Gradle是一个自动化build工具,所以Gradle面对的领域就是自动化构建这一领域。Gradle是按照DDD的思想设计和开发的,所以自动化构建领域里的大部分概念,在Gradle的源代码里都有一个接口或类与之对应。本文介绍对Gradle新手来说最重要的三个领域对象:Project、Task、Action。
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'
Gradle的Task等同于Ant的Target。在内部,Task被组织成了一个有向无环图(DAG)。Gradle保证Task按照依赖顺序执行,并且每个Task最多只被执行一次。当我们看到下面这段脚本的时候,只要明白两点就可以了:
task myTask { // ... }
在闭包中,我们可以充分利用Gradle提供的DSL来配置任务,比如,给任务添加Action。
Task可以包含n个Action,Task提供了doFirst和doLast方法来给自己添加Action,如下所示:
task myTask { doFirst { println 'hello' } doLast { println 'world' } }还提供了<<运算符,如下所示:
task myTask << { println 'hello world' }
build.gradle脚本的真正作用,就是配置一个Project实例。在执行build脚本之前,Gradle会为我们准备好一个Project实例,执行完脚本之后,Gradle会按照DAG依次执行任务。
看懂Gradle脚本(5)- 跟Gradle学领域驱动设计,布布扣,bubuko.com
原文地址:http://blog.csdn.net/zxhoo/article/details/30062919