我正在尝试创建Gradle插件,当我定义插件的id
和implementationClass
时,IntelliJ说Cannot assign 'String' to 'T'
我正在使用
IntelliJ IDEA 2020.1.1 (Ultimate Edition)
Build #IU-201.7223.91, built on April 30, 2020
答案 0 :(得分:2)
IntelliJ无法推断类型,尤其是在closure内部。这对Gradle文件使用Groovy语法是不利的。您会在某些地方看到IntelliJ能够正确推断类型,而在其他地方则不能。
这是Kotlin DSL真正发光的地方。如果您切换到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")
})
})
})