码迷,mamicode.com
首页 > 其他好文 > 详细

看懂Gradle脚本(5)- 跟Gradle学领域驱动设计

时间:2014-06-15 19:27:01      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:groovy   gradle   

领域驱动设计(DDD)

如果第一次听说领域驱动设计,那么赶紧买一本,或借一本Eric Evans写的那么同名经典书补一下课。Gradle是一个自动化build工具,所以Gradle面对的领域就是自动化构建这一领域。Gradle是按照DDD的思想设计和开发的,所以自动化构建领域里的大部分概念,在Gradle的源代码里都有一个接口或类与之对应。本文介绍对Gradle新手来说最重要的三个领域对象:ProjectTaskAction

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等同于AntTarget。在内部,Task被组织成了一个有向无环图(DAG)。Gradle保证Task按照依赖顺序执行,并且每个Task最多只被执行一次。当我们看到下面这段脚本的时候,只要明白两点就可以了:

task myTask {
  // ...
}

  1. 给Project添加一个名为“myTask”的任务
  2. 用一个闭包来配置这个任务

在闭包中,我们可以充分利用Gradle提供的DSL来配置任务,比如,给任务添加Action

Action

Task可以包含n个Action,Task提供了doFirstdoLast方法来给自己添加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

看懂Gradle脚本(5)- 跟Gradle学领域驱动设计

标签:groovy   gradle   

原文地址:http://blog.csdn.net/zxhoo/article/details/30062919

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!