我有一个方法,它接受一个字符串和一个闭包,我在我的插件约定中包含它:
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告诉我它是一个不推荐使用的方法。
答案 0 :(得分:1)
你确定测试是针对m8运行的吗?无论如何,这里有一些改进的建议(因为我已经知道你想要实现的目标):
sourceSets.main.java
方法将其应用于源目录集(例如FileTree.matching(Closure)
)。您将获得一个应用过滤器的新文件树。project.licenseFiles(...) {...}
。