Я создаю плагин для IntelliJ IDE для работы с Kotlin файлами в проекте. Мне удалось написать несколько тестов, чтобы взять файл Kotlin и сгенерировать новый файл на основе его содержимого. Когда я запускаю этот плагин в IDE, я не могу обнаружить файлы как Kotlin файлы. Когда я смотрю на отладчик, мой файл говорит, что это KtFile из библиотеки org.jetbrains.kotlin.psi
. Но если я пытаюсь привести его к KtFile, я получаю сообщение об ошибке:
java.lang.ClassCastException: org.jetbrains.kotlin.psi.KtFile cannot be cast to org.jetbrains.kotlin.psi.KtFile
Так что, очевидно, версия библиотеки отключена между временем выполнения и временем компиляции. Что мне нужно сделать, чтобы мой плагин использовал правильный Kotlin PSI во время работы плагина?
My 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>
My build.gradle.kts
выглядит например:
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("...")
}
Я уже знаю Как включить Kotlin классы PSI (например, KtClass) в проект подключаемого модуля Intellij IDEA Gradle, написанный на Kotlin? и Как добавить Kotlin исходные файлы PSI в конфигурацию проекта плагина IDEA , что, по сути, я хочу получить ответ, но не получил ничего, чтобы решить мою проблему. Может быть, есть некоторая документация по этому вопросу, но она уклоняется от моих поисков.