理解gradlegroovy语义
我很难理解gradle脚本的语义w.r.t如何在groovy中看到它们 1) 下面的片段是什么意思理解gradlegroovy语义,gradle,groovy,Gradle,Groovy,我很难理解gradle脚本的语义w.r.t如何在groovy中看到它们 1) 下面的片段是什么意思 task copy(type: Copy) { into "target" with baseSpec } 据我所知,在我看来,任务是用一个命名参数“type”和它的值“Copy”实例化的。我不知道什么是“进入”,“与”。它们是任务类的参数吗?顺便问一下,任务是类还是接口 2) 什么是“脚本块”?结束了吗? 3) 什么是“行动”?它们也是用匿名类实例化的接口的闭包或对象吗 基本上,我
task copy(type: Copy) {
into "target"
with baseSpec
}
据我所知,在我看来,任务是用一个命名参数“type”和它的值“Copy”实例化的。我不知道什么是“进入”,“与”。它们是任务类的参数吗?顺便问一下,任务是类还是接口
2) 什么是“脚本块”?结束了吗?
3) 什么是“行动”?它们也是用匿名类实例化的接口的闭包或对象吗
基本上,我不知道如何将所有这些结合起来作为一个普通的groovy?groovy是一种用于构建DSL(领域特定语言)的强大语言。Gradle和其他许多库一样使用此库 它基于Groovy的几个属性
- 括号是可选的
fun("myparameter") fun "myparameter"
- 可以在方法上使用命名参数
fun prop:'value', otherprop:'othervalue' fun([prop:'value', otherprop:'othervalue'])
- 如果方法的最后一个参数是闭包,则可以将其写入方法调用之外
fun(prop:'value') { //..closure call } fun([prop:'value'], { /*closure*/ })
- 您可以在groovy对象上获取/设置任何属性或调用任何方法:您可以通过
,missingMethod
,missingProperty
或getProperty
,…动态添加行为setProperty
object.somefun "42" object.missingMethod("somefun", ["42"])
- 在闭包中,有一个特殊的对象,称为delegate。它可以在运行时设置,任何非本地属性或方法调用都可以委托给该委托
请参见或查看生成器模式def fun = { copy "this_file" } def fun = { delegate.copy("this_file") }
delegate
是一个对象,它实现missingMethod
,并基于方法调用和上下文生成对象
更复杂的脚本:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath group: 'commons-codec', name: 'commons-codec', version: '1.2'
}
}
相当于:
buildscript({ it ->
delegate.repositories({delegate.mavenCentral()})
delegate.dependencies({delegate.classpath([group:'commons-codec', name:'commons-codec', version:'1.2'])})
})
Groovy是构建DSL(领域特定语言)的强大语言。Gradle和其他许多库一样使用此库 它基于Groovy的几个属性
- 括号是可选的
fun("myparameter") fun "myparameter"
- 可以在方法上使用命名参数
fun prop:'value', otherprop:'othervalue' fun([prop:'value', otherprop:'othervalue'])
- 如果方法的最后一个参数是闭包,则可以将其写入方法调用之外
fun(prop:'value') { //..closure call } fun([prop:'value'], { /*closure*/ })
- 您可以在groovy对象上获取/设置任何属性或调用任何方法:您可以通过
,missingMethod
,missingProperty
或getProperty
,…动态添加行为setProperty
object.somefun "42" object.missingMethod("somefun", ["42"])
- 在闭包中,有一个特殊的对象,称为delegate。它可以在运行时设置,任何非本地属性或方法调用都可以委托给该委托
请参见或查看生成器模式def fun = { copy "this_file" } def fun = { delegate.copy("this_file") }
delegate
是一个对象,它实现missingMethod
,并基于方法调用和上下文生成对象
更复杂的脚本:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath group: 'commons-codec', name: 'commons-codec', version: '1.2'
}
}
相当于:
buildscript({ it ->
delegate.repositories({delegate.mavenCentral()})
delegate.dependencies({delegate.classpath([group:'commons-codec', name:'commons-codec', version:'1.2'])})
})
谢谢这很有帮助。你能按语法把它分解吗?任务(复制([type:copy],{it->delegate.into(“target”)delegate.with(baseSpec)})谢谢。这很有帮助。你能不能从语法上分解这个任务(复制([type:copy],{it->delegate.into(“target”)delegate.with(baseSpec)}))的可能重复