如何为IntelliJ IDEA Gradle插件设置Kotlin PSI?

如何为IntelliJ IDEA Gradle插件设置Kotlin PSI?,kotlin,intellij-idea,intellij-plugin,gradle-kotlin-dsl,Kotlin,Intellij Idea,Intellij Plugin,Gradle Kotlin Dsl,我正在为IntelliJ IDE构建一个插件,用于在项目中操作Kotlin文件。我已经能够编写一系列测试来获取一个Kotlin文件,并根据其内容生成一个新文件。当我在IDE中运行这个插件时,我无法将文件检测为Kotlin文件。当查看调试器时,我的文件说它是org.jetbrains.kotlin.psi库中的一个文件。但如果我尝试将其强制转换为KTF文件,则会出现错误: java.lang.ClassCastException: org.jetbrains.kotlin.psi.KtFile c

我正在为IntelliJ IDE构建一个插件,用于在项目中操作Kotlin文件。我已经能够编写一系列测试来获取一个Kotlin文件,并根据其内容生成一个新文件。当我在IDE中运行这个插件时,我无法将文件检测为Kotlin文件。当查看调试器时,我的文件说它是
org.jetbrains.kotlin.psi
库中的一个文件。但如果我尝试将其强制转换为KTF文件,则会出现错误:

java.lang.ClassCastException: org.jetbrains.kotlin.psi.KtFile cannot be cast to org.jetbrains.kotlin.psi.KtFile
显然,库版本在运行时和编译时之间是关闭的。我需要做什么来配置我的插件,以便在插件运行时使用正确的Kotlin PSI

我的
plugin.xml
如下所示:

<idea-plugin>
    <id>...</id>
    <name>...</name>
    <vendor email="..." url="...">...</vendor>

    <description><...</description>

    <depends>com.intellij.modules.all</depends>
    <depends>org.jetbrains.kotlin</depends>

    <actions>...</actions>
</idea-plugin>

我已经意识到了这一点,基本上这就是我想要得到的答案,但还没有得到任何东西来解决我的问题。可能有一些关于这个问题的文档,但我没有搜索到。

您的
依赖项应该包括
实现(kotlin(“reflect”)
plugin.xml
应该包括
org.jetbrains.kotlin

plugins {
    id("org.jetbrains.intellij") version "0.4.16"
    kotlin("jvm") version "1.3.61"
}

group = "..."
version = "..."

repositories {
    mavenCentral()
}

dependencies {
    implementation(kotlin("stdlib-jdk8"))
    implementation(kotlin("compiler-embeddable", "1.3.61"))
    implementation(kotlin("gradle-plugin", "1.3.61"))

    testImplementation(group = "junit", name = "junit", version = "4.12")
}

buildscript {
    repositories { mavenCentral() }
    dependencies {
        classpath(kotlin("compiler-embeddable", "1.3.61"))
        classpath(kotlin("gradle-plugin", "1.3.61"))
    }
}

intellij {
    version = "2019.1.4"
    setPlugins("Kotlin")
}
tasks {
    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
}
tasks.getByName<org.jetbrains.intellij.tasks.PatchPluginXmlTask>("patchPluginXml") {
    changeNotes("...")
}