Gradle 无法分配';字符串';至';T';

Gradle 无法分配';字符串';至';T';,gradle,intellij-idea,gradle-plugin,Gradle,Intellij Idea,Gradle Plugin,我正在尝试创建一个Gradle插件,当我定义插件的id和implementationClass时,IntelliJ说无法将“字符串”分配给“T” 为什么会显示警告 我怎样才能解决这个问题 我正在使用 IntelliJ IDEA 2020.1.1 (Ultimate Edition) Build #IU-201.7223.91, built on April 30, 2020 IntelliJ无法推断类型,尤其是在。这是对Gradle文件使用Groovy语法的一个缺点。您将在某些地方看到I

我正在尝试创建一个Gradle插件,当我定义插件的
id
implementationClass
时,IntelliJ说
无法将“字符串”分配给“T”

  • 为什么会显示警告
  • 我怎样才能解决这个问题
我正在使用

IntelliJ IDEA 2020.1.1 (Ultimate Edition)
Build #IU-201.7223.91, built on April 30, 2020

IntelliJ无法推断类型,尤其是在。这是对Gradle文件使用Groovy语法的一个缺点。您将在某些地方看到IntelliJ能够正确推断类型,但在其他地方则不能

这才是真正闪耀的地方。如果您切换到Kotlin DSL,您几乎可以在任何地方获得代码完成和提示

以Kotlin为例,我得出以下结论:

您可以看到,由于Kotlin是一种与Groovy不同的静态类型语言,我获得了完整的代码完成

如果您确实希望Groovy提供完整的代码完成和提示,那么我建议您避免使用Groovy DSL,直接使用Gradle API:

上述Groovy的简化版本:

project.extensions.configure(GradlePluginDevelopmentExtension, { GradlePluginDevelopmentExtension gradlePluginExtension ->
    gradlePluginExtension.plugins({ NamedDomainObjectContainer<PluginDeclaration> pluginDeclarations ->
        pluginDeclarations.create("ll.greating", { PluginDeclaration pluginDeclaration ->
            pluginDeclaration.setId("ll.greeting")
        })
    })
})
project.extensions.configure(GradlePluginDevelopmentExtension,{GradlePluginDevelopmentExtension gradlePluginExtension->
插件({NamedDomainObjectContainer插件声明->
创建(“ll.greating”,{PluginDeclaration PluginDeclaration->
pluginDeclaration.setId(“ll.greeting”)
})
})
})

是的,我在其他项目中使用过Kotlin DSL。我想知道是否有可能通过Groovy本身解决这个问题。顺便说一下,谢谢您的回复。:)我已经更新了我的答案,添加了一个Groovy代码段,它的类型很难修复一个简单的警告。我已经联系了技术支持,他们确认这是IDE中的一个bug。