DSL基本概念

如果要深入理解,或者进一步使用Gradle,不仅仅需要了解Gradle的一些基础知识,比如:任务,插件,依赖管理等,更重要的是知道Gradle背后的实现机制,即编写Gradle的脚本实际是在做面向对象编程。

什么是DSL? TBC

更多关于DSL的介绍,请参考 Martin Fowler关于DSL的文章。 http://martinfowler.com/bliki/DomainSpecificLanguage.html

基本概念

首先,Gradle脚本是配置脚本。当脚本执行时,它实际上是配置一个特殊类型的对象。比如,当构建脚本(build script)执行时,它是在配置一个叫做Project类型的对象。该对象称作脚本的代理对象。

脚本类型 代理实例
Build script Project
Init script Gradle
Settings script Settings

代理对象上每一个属性和方法都可以在脚本中使用。

其次,每一个Gradle脚本都实现了Script接口。这个接口定义了一系列的属性和方法,同样也可以在脚本中使用。

一个构建脚本是由0个或者多个脚本句子(statements)和脚本块组成。脚本语句可以包含函数调用,属性赋值和本地变量定义。一个脚本块是一个方法调用,它将一个闭包作为参数。闭包当做是配置闭包,它会在执行时配置一些代理对象。下面展示了Gradle中的一些顶级脚本闭包:

闭包 描述
allprojects { } Configures this project and each of its sub-projects.
artifacts { } Configures the published artifacts for this project.
buildscript { } Configures the build script classpath for this project.
configurations { } Configures the dependency configurations for this project.
dependencies { } Configures the dependencies for this project.
repositories { } Configures the repositories for this project.
sourceSets { } Configures the source sets of this project.
subprojects { } Configures the sub-projects of this project.
publishing { } Configures the PublishingExtension added by the publishing plugin.

results matching ""

    No results matching ""