当我使用以下gradle.build文件运行gradle tasks
命令时:
import org.gradle.api.reporting.Report
import org.gradle.api.reporting.ReportContainer
import org.gradle.api.reporting.internal.TaskReportContainer
interface MyReportContainer extends ReportContainer<Report> {}
class MyDefaultReportContainer extends TaskReportContainer<Report> implements MyReportContainer {}
我在脚本编译期间收到以下致命异常:
org.gradle.api.NamedDomainObjectCollection的返回类型 匹配(groovy.lang.Closure)in org.gradle.api.internal.DefaultNamedDomainObjectCollection是 与org.gradle.api.NamedDomainObjectSet不兼容 org.gradle.api.NamedDomainObjectSet
这对我来说很奇怪,因为NamedDomainObjectSet
直接延伸NamedDomainObjectCollection
...所以它怎么会不相容?
我在尝试编写自定义报告任务时遇到了这个问题,遵循Gradle源代码中的DefaultDependencyReportContainer
示例,该示例似乎完全符合此模式!
奇怪的是,如果我切换到:
interface MyReportContainer extends org.gradle.api.DomainObjectCollection<Report> {}
一切正常!
我正在使用:
所以有人能告诉我为什么会失败吗?