簡體   English   中英

groovy中的這種閉包查找代碼意味着什么?

[英]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()
}

我懷疑它要么是封閉的 ,要么是某種形式的接口 ,但無法制成它的頭或尾。

對理解以下內容的任何幫助都會有很大幫助:

  • 它能做什么?
  • 從語言的角度來看,插件和buildScan如何在這里工作?

從語言角度來看,閉包是在除構建腳本之外的其他對象的上下文中執行的。 在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() 盡管如此,以下內容是對該語法含義的合理理解。

  1. plugins {}buildScan {}是采取封閉(見這種解釋其他答案)作為參數兩種方法

  2. 每個閉包都有一個特定類型的委托對象,該對象根據使用該閉包的方法而有所不同,即, plugins()的委托與buildScan()的委托將具有不同的類型。

  3. 在閉包內,將對委托對象執行不合格的方法和屬性。 因此,對於plugins {}塊,將針對其委托調用id(...).version(...) 對於buildScan {} ,您需要在委托上設置屬性server並調用其publishAlways()方法。

老實說,我不知道上述信息對使用和理解Gradle有多有用,但我認為這正是您所要的。 希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM