首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用fileTree( Object,Closure )签名时出错

调用fileTree( Object,Closure )签名时出错
EN

Stack Overflow用户
提问于 2012-02-21 09:54:39
回答 1查看 1.4K关注 0票数 1

我有一个接受字符串和闭包的方法,我将它们包含在我的插件约定中:

代码语言:javascript
复制
def someMethod( String obj, Closure closure) {
    println('HERE I AM')
    confFileTree = project.fileTree( obj, closure )
}

在Junit测试中,我是这样命名的:

代码语言:javascript
复制
project.convention.plugins.license.licenseFiles( 'src') {
    include "main/java/**"
    include "main/resources/*.properties"
    exclude "**/Licensed.java"
}

我知道这个方法之所以被调用,是因为打印了'HERE i AM‘。但是随后我得到了一个错误,它说:

代码语言:javascript
复制
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的闭包形式,在闭包中使用了"from 'src'“,它工作得很好,但是Gradle Milestal8告诉我它是一个被弃用的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-21 10:28:08

您确定测试是针对m8运行的吗?无论如何,这里有一些改进的建议(因为我已经知道你想要实现什么了):

  • 我不认为你想构建你自己的文件树。您只希望用户传递一个'filter‘闭包(就像您的示例中一样),然后使用FileTree.matching(Closure)方法将其应用于源目录集(例如sourceSets.main.java)。您将得到一个应用了过滤器的新文件树。
  • 我建议您使用扩展名而不是约定对象
  • 当从
  • 代码访问约定对象或扩展名时,您不需要冗长的语法。在您的单元测试示例中,您可以只使用project.licenseFiles(...) {...}.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9371082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档