以下內容在gradle中似乎是一種常見的習慣用法,用於過濾資源文件的子集。我知道它做什麼,但我有麻煩破譯語法:瞭解gradle processResources過濾器語法
processResources {
filesMatching('foo/*.html') {
filter(ReplaceTokens, tokens: [key: 'value'])
}
}
我明白了這一步:
- processResources是Java插件,它是複製型的任務。
我通過調用下面的方法配置processResources任務:
AbstractCopyTask filesMatching(String pattern, Action<? super FileCopyDetails> action)
的第一個參數的方法是一個模式字符串。我提供'foo/*。html'作爲模式。
- 該方法的第二個參數是
Action
接口,它只有一個方法。我正在提供一個閉包作爲接口的實現。
這是我迷路的地方。在封閉體中,我調用了過濾方法。它從何而來?它也不是來自隱式項目對象。而且,過濾方法甚至不適用於任何文件對象。代幣是如何替換的?而且,ReplaceTokens
是一個類,傳遞類名作爲參數如何在語法上起作用?
我沒有連接點,我也不確定這些點是在gradle還是groovy中。我一直在研究文檔和博客一段時間,但不是運氣。我感謝一些幫助。謝謝。
你覺得我的回答有幫助嗎? – Opal
恐怕這只是部分有用的。我仍然不明白過濾器方法如何在文件對象上運行,而不用作爲參數。當然閱讀源代碼總是一個選項.. – hummingV
你不明白? – Opal