我有一个采用字符串和闭包的方法,我将其包含在我的插件约定中:
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"
}
我知道该方法被称为是因为打印了“HERE I AM”。但是然后我得到一个错误,说:
org.gradle.api.internal.MissingMethodException:
Could not find method fileTree() for arguments
[src, nl.javadude.gradle.plugins.license.tasks.LicenseTaskTest$_shouldScanFilesForLicenseWithExclude_closure1@3cbdb6ae]
on root project 'test'.
我应该指出,这段代码最初只是称为fileTree的Closure形式,在其闭包中带有“from'src'”,效果很好,但是Gradle里程碑8告诉我这是一个过时的方法。
最佳答案
您确定测试针对m8运行吗?无论如何,这里有一些改进建议(因为我已经知道您要实现的目标):
sourceSets.main.java
方法将其应用于源目录集(例如FileTree.matching(Closure)
)。您将获得应用了过滤器的新文件树。 project.licenseFiles(...) {...}
。