如何在开发 IntelliJ 插件时导入 IntelliJ 类?

How to import IntelliJ classes while developing IntelliJ plugin?

TL;DR

如何在我的 IntelliJ 插件中导入 com.intellij.psi.JavaPsiFacade class?

背景信息

我正在尝试开发一个 IntelliJ 插件。我一直在关注入门指南 here 并且一直在使用 Gradle 和 Groovy 构建脚本。

我得到了 "Hello World" 的例子 运行。我的下一步是尝试使用 Java PSI。当我使用一些 classes(例如 com.intellij.psi.DelegatePsiTarget)而不是其他(例如 com.intellij.psi.JavaPsiFacade)时,我的项目将成功构建。

我的印象是,要使用某些 classes,我需要将它们的来源添加到我的 build.gradle class。然而,我并没有太多运气来弄清楚如何追踪哪个来源会提供它以及如何在我找到来源后添加来源。

到目前为止我的想法似乎最接近的是我需要添加一个 plugins 部分(如指定的 here)。但是,我之前的问题仍然存在:我如何确定哪个包提供了我想要的东西?

这是我目前的 build.gradle 文件:

plugins {
    id 'java'
    id 'org.jetbrains.intellij' version '0.4.13'
}

apply plugin: 'org.jetbrains.intellij'
apply plugin: 'idea'
apply plugin: 'java'

version '1.0'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

// See https://github.com/JetBrains/gradle-intellij-plugin/
intellij {
    version '2019.2.4'
}
patchPluginXml {
    changeNotes """
      Add change notes here.<br>
      <em>most HTML tags may be used</em>"""
}

在我写这个问题的时候,我终于发现了我的问题。

由于我使用的是 Java API,因此我需要声明对 Java[ 的依赖=26=]插件,分两部分完成:

  1. plugins = ['java'] 添加到 build.gradle 文件中我的 intellij 对象。
  2. 正在将 <depends>com.intellij.modules.java</depends> 添加到我的 plugin.xml 文件中。

希望这可以帮助其他人避免我走过的漫长道路。如果其他人有更多意见,请随时添加其他答案。