Gradle不兼容的返回类型

时间:2015-01-31 04:41:25

标签: gradle

当我使用以下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> {} 

一切正常!

我正在使用:

  • Gradle 2.2.1
  • 制作时间:2014-11-24 09:45:35 UTC
  • 内部版本号:无
  • 修订版:6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a
  • JVM:1.8.0(Oracle Corporation 25.0-b70)
  • Groovy:2.3.6

所以有人能告诉我为什么会失败吗?

0 个答案:

没有答案