![](/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.