0
我有需要一個字符串和閉合,其中包括我在我的插件約定的方法:麻煩調用文件樹(對象,閉合)簽名
def someMethod(String obj, Closure closure) {
println('HERE I AM')
confFileTree = project.fileTree(obj, closure)
}
從JUnit測試我把它像這樣:
project.convention.plugins.license.licenseFiles('src') {
include "main/java/**"
include "main/resources/*.properties"
exclude "**/Licensed.java"
}
我知道這個方法被調用,因爲「我在這裏」被打印出來。但我然後得到一個錯誤,指出:
org.gradle.api.internal.MissingMethodException:
Could not find method fileTree() for arguments
[src, nl.javadude.gradle.plugins.license.tasks[email protected]3cbdb6ae]
on root project 'test'.
我應該指出,這個代碼原本只是叫文件樹的封閉形式,以「從‘src’中」在封閉,工作正常,但搖籃里程碑8告訴我,這是一個不贊成的方法。
到你的第一個項目符號:源目錄集只包含src下的東西,對不對?例如src/main/java和src/main/resources在java項目中的情況。例如我想操作的一個項目至少有4條原始內容的其他路徑,它們是「src」目錄的兄弟。我可以想象提供配置選項可以與SourceSets或FileTree一起使用)。我會仔細檢查我在M8上。爲什麼你推薦一個擴展對象而不是一個約定對象? – harschware 2012-02-21 04:22:51
項目應該通過源集聲明所有源。他們可以添加儘可能多的源代碼,比如'sourceSets.main.java'。因此,我首先要專注於過濾現有的源集。通常,即使過濾也不會被需要 - 默認情況下,插件應該簡單地在所有來源上運行。爲每個源集添加一個任務可能是好事,因爲這是Gradle中的一般約定。公約對象是舊的機制。擴展對於幾乎所有用例都更好,而且它們是未來。 – 2012-02-21 04:47:53
看來我並沒有使用m8,即使我配置了它,請參見[STS-2458](https://issuetracker.springsource.com/browse/STS-2458) – harschware 2012-02-21 06:07:11