![](/img/trans.png)
[英]What does it mean in Groovy to specify a property followed by a closure?
[英]what does this closure looking code in groovy means?
我正在尝试在一个新项目中进行一些测试,并在其settings.gradle文件中看到了以下几行内容,这些行我无法理解它是什么常规的结构或语言功能,它的功能以及工作方式。作品:
plugins {
id "com.gradle.build-scan" version "1.12.1"
id "cz.malohlava" version "1.0.3"
}
buildScan {
server = "some.host.com"
publishAlways()
}
我怀疑它要么是封闭的 ,要么是某种形式的接口 ,但无法制成它的头或尾。
对理解以下内容的任何帮助都会有很大帮助:
从语言角度来看,闭包是在除构建脚本之外的其他对象的上下文中执行的。 在Groovy中这称为委派。
http://groovy-lang.org/closures.html#_delegation_strategy
plugin
委托给https://docs.gradle.org/current/dsl/org.gradle.plugin.use.PluginDependenciesSpec.html
buildScan
委托用于配置插件的Build Scan Plugin的扩展对象。
这里可能有一些我不理解的buildScan()
,特别是因为我在API文档中找不到plugins()
或buildScan()
。 尽管如此,以下内容是对该语法含义的合理理解。
plugins {}
和buildScan {}
是采取封闭(见这种解释其他答案)作为参数两种方法 。
每个闭包都有一个特定类型的委托对象,该对象根据使用该闭包的方法而有所不同,即, plugins()
的委托与buildScan()
的委托将具有不同的类型。
在闭包内,将对委托对象执行不合格的方法和属性。 因此,对于plugins {}
块,将针对其委托调用id(...).version(...)
。 对于buildScan {}
,您需要在委托上设置属性server
并调用其publishAlways()
方法。
老实说,我不知道上述信息对使用和理解Gradle有多有用,但我认为这正是您所要的。 希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.