IntelliJ (JetBrains IDE) ファミリー向けのプラグイン開発において、他のプラグイン(例えばGitを操作するための Git4Idea *1 など)や、Riderなど言語別IDEの機能を使う設定について。
基本的なことは公式ドキュメントの下記ページに載っており、それに沿って補足していきます。
プラグイン依存関係 / IntelliJ プラットフォーム SDK プラグイン開発ガイド
build.gradle
build.gradleの intellij
ブロック内に plugins
の設定を追加します。
Git4Ideaを使用する例 (Kotlin) :
intellij { version = "2020.1" setPlugins("git4idea") }
Gradleでビルドおよび runIde タスクを実行するとき、この設定が使われます。 このとき、ここで記述したプラグインの依存関係については自動的に解決されます。
しかし、 test タスクでユニットテストを実行するときは、プラグインの依存関係が解決されないという制限があります。
上例の git4idea
には依存先がないのですが、例えば android
を使用する場合は次のように android
が依存するすべてのプラグインを書く必要があります。
intellij { version = "2020.1" setPlugins("android", "junit", "Groovy", "gradle") }
詳しくは下記 Issue を参照してください。この問題が修正される気配は無さそうに見えます。
plugin.xml
plugin.xml には <depends>
で依存するプラグインを宣言する必要があります。
com.intellij.modules.platform
の下に追加していきましょう。
<depends>com.intellij.modules.platform</depends> <depends>Git4Idea</depends>
これはランタイムで使用される設定です。ここに書く名称についてはコード補完が効きます。
なお、プラグインの依存を必須にしない場合、 <depends>
に optional
属性を指定できます。
これは試していないので、公式ドキュメントを参照してください。
classpath
以上でプラグインのビルド・配布はできるのですが、IntelliJ IDEA上で開発を進めるにはclasspathも設定する必要があります。
File > Project Structure... を開き、SDKs > 11(使用しているJDKバージョンによりますが、ここではAmazon Corretto 11)を選択、classpathタブの"+"クリックで必要なjarファイルを選択します。
jarファイルは、IntelliJ IDEAインストールディレクトリ/plugins/下にあります。 Git4Ideaの場合、plugins/git4idea/lib/下に4つのjarファイルがありますが、ディレクトリごと選択すれば大丈夫です*2。
参考
プラグイン開発に関しては、公式ドキュメントにある程度の情報が載っています。日本語版もちゃんと更新されています*3。
IntelliJ プラットフォーム SDK / IntelliJ プラットフォーム SDK プラグイン開発ガイド
IntelliJ Platform SDK / IntelliJ Platform SDK DevGuide
少し込み入った話になると、ヘルプセンターがヒットしたりはします。
IDEs Support (IntelliJ Platform) | JetBrains
本稿のclasspathの件はここにありました。
How to build and use git4idea as a library in plugin – IDEs Support (IntelliJ Platform) | JetBrains