1

这段代码在动态类型的 Groovy 中完美运行

buildDirectory.traverse(type: FILES, nameFilter: ~/dependency-updates-report.xml/) {
    reports << it
}

但是当添加@CompileStatic到类时,它会出现错误,沿着这条线

'traverse' in 'org.codehaus.groovy.runtime.ResourceGroovyMethods' cannot be applied to ...

参数是Map这里的问题吗?

EDIT buildDirectory 是类型java.io.File并且被注入。

4

1 回答 1

1

如果是这样的静态编译,您需要显式转换为:

buildDirectory.traverse([type: FILES, nameFilter: ~/dependency-updates-report.xml/] as Map) {
    reports << it
}

这里的问题是该File.traverse()方法需要一个类型的映射

Map<String, Object>

而 Groovy 惯用的地图创建创建类型的地图

LinkedHashMap<String, Serializable>

Serializable是一个问题,因为它不是java.lang.Object.

于 2019-06-21T08:45:22.790 回答