IDEA プラグイン開発チュートリアル (1)

「ナゲッツ・セーリングプログラム」に参加しています

バックグラウンド

IDEA/Android Studio を使用している開発者であれば、多かれ少なかれプラグインを使用したことがあると思いますが、開発ツールのバージョンアップに伴い、多くのプラグインに互換性の問題が発生し、作者は数年前にメンテナンスを停止した可能性があります。

プラグイン開発の知識をある程度身に付けて、メンテナンスが止まったプラグインに遭遇した場合、自動でメンテナンスを行うことができます。

現在、IDEA プラグインに関するオンライン チュートリアルはほとんどなく、一部のチュートリアルは比較的古く、多くの構成が変更されています。そのため、IDEA プラグインの開発に関するチュートリアルをいくつか書いて、皆様のお役に立てればと考えています。

この記事はチュートリアルの最初の部分で、簡単な HelloWorld プラグイン プロジェクトを作成し、IDEA プラグイン開発環境に慣れ、IDEA プラグイン プロジェクトの構造を理解することができます。

開発ツール

IDEA プラグインを開発するには、IDEA をダウンロードする必要があります。ダウンロード アドレスはwww.jetbrains.com/zh-cn/idea/です。無料のコミュニティ バージョンを選択してください。

プロジェクトを作成

以下に示すように、 IDEA を開き、 をクリックNew Projectして、 を選択します。IDE Plugin

idea_plugin_guide_1.png

プラグイン プロジェクトの関連情報を入力し、Createボタンてプロジェクトを作成します。プロジェクトの構造は次のとおりです。

DxyJsonToDart
├── .idea
│   └── .gitignore
│   └── gradle.xml
│   └── misc.xml
│   └── vcs.xml
├── .run
│   └── Run IDE with Plugin.run.xml
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── src
│   ├── main
│   │   ├── java
│   │   └── resources
│   │       └── META-INF
│   │           └── plugin.xml
│   │           └── pluginIcon.svg
├── .gitignore
├── build.gradle.kts
├── gradlew
├── gradlew.bat
└── settings.gradle.kts
复制代码

Android プロジェクトを開発したことがある人は、基本的に Android プロジェクトと同様のプロジェクト構造に精通している必要があります.コードsrc/main/java/包名build.gradle.kts、Gradle の構成ファイルplugin.xmlとプラグインの構成ファイルである に記述されます.開発では、この2 つの構成ファイルとやり取りして対処することがよくあります。

build.gradle.kts ファイルを簡単に見てみましょう。

plugins {
    id("java")
    id("org.jetbrains.intellij") version "1.6.0"
}

group = "cn.dxy.app"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

intellij {
    version.set("2021.3")
    type.set("IC") 
    plugins.set(listOf(/* Plugin Dependencies */))
}

tasks {
    withType<JavaCompile> {
        sourceCompatibility = "11"
        targetCompatibility = "11"
    }

    patchPluginXml {
        sinceBuild.set("212")
        untilBuild.set("223.*")
    }

    signPlugin {
        certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))
        privateKey.set(System.getenv("PRIVATE_KEY"))
        password.set(System.getenv("PRIVATE_KEY_PASSWORD"))
    }

    publishPlugin {
        token.set(System.getenv("PUBLISH_TOKEN"))
    }
}

复制代码

这个文件中的配置信息具体是什么意思,后续会讲到,暂时先不管。这时我们什么代码没有写,直接运行项目,因为在上面配置了 version.set("2021.3"),运行时会下载一个 2021.3 版本的 IDEA。这个 IDEA 大概有 1~2G 大小,下载成功后,这个 IDEA 会运行起来,运行结果如下图所示。

idea_plugin_guide_2.png

如果你切换到 Plugins 选项,你会发现我们开发的插件被自动安装到这个 IDEA 中了。

我第一次解除插件开发时有点蒙:一个 IDEA 运行启动了另外一个 IDEA。后来我才想通,因为我们的插件是要运行在 IDEA/Android Studio 中的,我们的插件适配不同的版本,还要进行代码调试,所以只能一个 IDEA 运行启动了另外一个 IDEA。

建议大家动手实践一下,会有更加直观的感受。

新建 Action

想一下我们平时是如何使用插件的,我们可能是右键点击了文件夹,或者是点击了某个菜单,这时会弹出一些选项,这些选项一般就是某个插件的入口,这些入口在 IDEA 插件中叫做 Action

下面我们写点代码,看看如何创建一个 Action,在项目的代码包中,点击右键,New => Plugin DevKit => Action,可以创建一个 Action

idea_plugin_guide_3.png

添加 Action 相关信息

idea_plugin_guide_4.png

在上图中,Add to Group 选择的是 Groups: NewGroup(New) Action: NewFile(File) Anchor: First,那么我们新建的这个 Action 就会出现在 New 这个选项中的第一个位置

点击确定按钮后,会新增一个继承 AnAction 的类 DxyJsonToDartAction

package cn.dxy.app.dxyjsontodart;

import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;

public class DxyJsonToDartAction extends AnAction {

    @Override
    public void actionPerformed(AnActionEvent e) {
        // TODO: insert action logic here
    }
}
复制代码

并且会在 plugin.xml 中新增这个 action

<actions>
    <action id="DxyJsonToDart" class="cn.dxy.app.dxyjsontodart.DxyJsonToDartAction" 
        text="我是 name" description="我是 description">
        <add-to-group group-id="NewGroup" anchor="first"/>
    </action>
</actions>
复制代码

这时我们再运行插件,看看我们刚刚编写的代码有什么效果:

IDEA の起動後、ランダムにプロジェクトを開き、フォルダーを右クリックすると、開発したばかりのプラグイン オプションがNewメニュー。我是 name

idea_plugin_guide_5.png

他のプラグインを参照する

私たちが作成したプラグインは、他のプラグインに依存することができ、他のプラグインに依存した後、それらのクラスを使用できます

公式ドキュメント: plugins.jetbrains.com/docs/intell…

プロジェクトの build.gradle.kts ファイルを開き、plugins.set() のコードを次のように変更します。

intellij {
    version.set("2021.3")
    type.set("IC") // Target IDE Platform

    plugins.set(
        listOf(
            "Dart:213.5744.122", //https://plugins.jetbrains.com/plugin/6351-dart/versions
            "io.flutter:63.2.4",//https://plugins.jetbrains.com/plugin/9212-flutter/versions/stable
            "GsonFormatPlus:1.6.1",//https://plugins.jetbrains.com/plugin/14949-gsonformatplus/versions
            "com.jack.plugin.autojson:1.5", //https://plugins.jetbrains.com/plugin/11600-autojson/versions
            "com.crzsc.FlutterAssetsGenerator:2.0.0",//https://plugins.jetbrains.com/plugin/15427-flutterassetsgenerator/versions
            "com.ruiyu.ruiyu:4.4.2", //https://plugins.jetbrains.com/plugin/11415-flutterjsonbeanfactory-only-null-safety-/versions
        )
    )
}
复制代码

プロジェクトを再度実行します。操作が成功したら、次の図に示すように、プラグイン オプションに切り替えます。

idea_plugin_guide_6.png

今回実行する IDEA は、上記で紹介したすべてのプラグインをパッケージ化してインストールすることがわかります。

やっと

このチュートリアルは以上です. 練習すれば、IDEA プラグイン開発の一般的な理解が得られると思います.

以降のチュートリアルでは、さらに多くのコンテンツを紹介します。

また、そういった部分に興味がある方はコメントを残していただければ、私も知っていればシェアさせていただきます。

おすすめ

転載: juejin.im/post/7145737911344824328