DSL(Domain Specific Language),中文意思是特定领域的语言。gradle DSL就是gradle领域的语言。为了更好理解gradle,学习gradle DSL是有必要的。gradle的脚本虽然非常简短,但它有它的语法,如果不搞懂DSL,即便你知道了怎么修改脚本得到你想要的结果,你也不会理解为什么要这样修改。

第一. gradle script是配置脚本,当脚本被执行的时候,它配置一个特定的对象。比如说,在android studio工程中,build.gradle被执行的时候,它会配置一个Project对象,settings.gradle被执行时,它配置一个Settings对象。Project,Settings这种对象就叫做委托对象,下图展示了不同脚本对应的不同的委托对象:

第二.每一个Gradle script实现了一个Script接口,这意味着Script接口中定义的方法和属性都可以在脚本中使用。
A build script is made up of zero or more statements and script blocks. Statements can include method calls, property assignments, and local variable definitions. A script block is a method call which takes a closure as a parameter. The closure is treated as aconfiguration closurewhich configures some delegate object as it executes. The top level script blocks are listed below.
大概意思statments可以包括方法调用,属性分配,本地变量定义;script bolck则是一个方法,它的参数可以是一个闭包。这个闭包是一个配置闭包,因为当它被执行的时候,它用来配置委托对象。以android studio的build.gradle为例:
apply plugin: com.android.application
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.konka.gradletest"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(proguard-android.txt), proguard-rules.pro
}
}
}
dependencies {
compile fileTree(dir: libs, include: [*.jar])
}
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-25073-3.html
你还不是伊拉克总统
我们内地人也在追求这些