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