美文网首页
看懂Gradle脚本(5)- 跟Gradle学领域驱动设计

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

作者: zheting | 来源:发表于2018-01-01 13:07 被阅读15次
    • 领域驱动设计(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等同于AntTarget。在内部,Task被组织成了一个有向无环图(DAG)。Gradle保证Task按照依赖顺序执行,并且每个Task最多只被执行一次。当我们看到下面这段脚本的时候,只要明白两点就可以了:
    task myTask {  
      // ...  
    }  
    

    第一点:给Project添加一个名为“myTask”的任务
    第二点:用一个闭包来配置这个任务
    在闭包中,我们可以充分利用Gradle提供的DSL来配置任务,比如,给任务添加Action。

    • Action
      Task可以包含n个Action,Task提供了doFirstdoLast方法来给自己添加Action,如下所示:
    task myTask {  
        doFirst {  
            println 'hello'  
        }  
        doLast {  
            println 'world'  
        }  
    }  
    
    • 结论
      build.gradle脚本的真正作用,就是配置一个Project实例。在执行build脚本之前,Gradle会为我们准备好一个Project实例,执行完脚本之后,Gradle会按照DAG依次执行任务。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/pmktnxtx.html