暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

IDEA不好用?自己开发一个插件吧

方家小白 2021-02-16
740

开发IDEA插件 (一)

废话不说, 目前,大部分程序开发人员都是使用 IntelliJ
平台的产品,比如 IntelliJ IDEA
.

IntelliJ
平台 为 IDE
提供了丰富的语言工具支持所需的所有基础结构。它提供了一个组件驱动的,基于跨平台JVM
的应用程序宿主,以及一个高级用户界面工具包,用于创建工具窗口,树视图和列表(支持快速搜索)以及弹出菜单和对话框。此外还有图像编辑,全文编辑,开发API
,断点,堆栈信息等等功能。而其最强大的功能在于:程序结构接口(program structure interface
, 简称 PSI
), 后面专门介绍。

在使用这些开发工具的时候,不免会使用各种各样的插件,比如 lombok
, git
, alibaba规约
等等。今天我们来尝试开发一个自己的插件。

创建插件开发环境

创建插件开发环境的方式有三种:

  • 使用 Gradle
    开头开始创建(推荐 )
  • 使用 GitHub
    模板进行开发(推荐)
  • 使用 Plugin Devkit
    开发(不推荐)

本篇文章使用第一种方式进行开发

使用 Gradle 构建插件开发环境

gradle-intellij-plugin
这个Gradle
插件是构建IntelliJ
插件推荐的解决方案。因为它不仅可以管理你的插件项目的依赖,还可以管理基本IDE和其他插件的依赖。

gradle-intellij-plugin
还可以通过配置一些任务,可通过您的插件运行IDE
并将您的插件发布到JetBrains
插件仓库。为确保您的插件不受平台主要版本之间可能发生的API
更改的影响,您可以轻松地针对多种版本的基本ID构建您的插件

第一步,配置 Gradle
环境

这一步是可选的。 如果不配置gradle
环境,就会默认找项目下的 gradle
目录来配置项目。

现在 gradle
依赖包。https://gradle.org/releases/ 选择最新版本即可。

然后配置PATH
变量,使用 gradle --version
验证一下。

这里就不重点介绍了。

第二步 创建插件项目

  • 使用项目创建向导创建一个Gradle项目。

  • 填写项目位置信息和坐标内容。

  • [可选] 如果你没有做第一步的内容,这里就要等待一会儿了,一定要有耐心~

  • [可选]如果没有做了第一步,那么可以配置项目使用我们全局的gradle,

  • 创建项目完成之后,我们看一下生成的目录结构:

如果没有生成这样的项目结构,手动补上缺少的文件夹就好了。

  • 如果你看到编辑器的下方一直在下载依赖,配置项目之类的内容,你只需要等待就好了。等处理完。就会生成下面这样的gradle task
    ,我们使用的任务就是:runIde

6.插件项目生成的task.png

这时,你可以尝试一下能否正常启动。

  • 我们看一下,插件的配置内容文件 plugins.xml

我对默认生成的元素进行了注释。如下;

    <idea-plugin>
    <!--插件的唯一标识 -->
    <id>com.fxb.learn.learn_idea_plugins.chapter01-CreatePluginProject</id>
    <name>FirstPlugin</name>
    <!-- 开发者信息 -->
    <vendor email="fangjiaxiaobai@163.com" url="http://www.fangjiaxiaobai.com">YourCompany</vendor>


    <description><![CDATA[
    这里是插件的描述内容,比如插件的功能等等。要求不如多于40个字符。
    <em>这里还可以插入一些html的内容</em>
    ]]></description>


    <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
    on how to target different products -->
    <depends>com.intellij.modules.platform</depends>


    <!--拓展 -->
    <extensions defaultExtensionNs="com.intellij">
    <!-- Add your extensions here -->
    </extensions>


    <!--动作 -->
    <actions>
    <!-- Add your actions here -->
    </actions>
    </idea-plugin>

    具体的配置内容可以查看 https://jetbrains.org/intellij/sdk/docs/basics/plugin_structure/plugin_configuration_file.html

    • 创建一个动作

    IDEA
    插件开发中,关于你所有动态触发的逻辑,都实现在 AnAction
    里。如果我们需要实现自己的动作逻辑,就需要继承这个类。

      package com.fxb.learn;


      import com.intellij.notification.*;
      import com.intellij.openapi.actionSystem.AnAction;
      import com.intellij.openapi.actionSystem.AnActionEvent;
      import org.jetbrains.annotations.NotNull;


      /**
      * 第一个插件动作
      *
      * @author fangjiaxiaobai
      * @date 2020-07-29 11:47
      * @since 1.0.0
      */
      public class HelloAction extends AnAction {


      @Override
      public void actionPerformed(@NotNull AnActionEvent e) {


      NotificationGroup notificationGroup = new NotificationGroup("testid",
      NotificationDisplayType.BALLOON, false);
      Notification notification = notificationGroup.createNotification(
      "Hello , Idea Plugin ,I am coming.", NotificationType.INFORMATION
      );
      Notifications.Bus.notify(notification);
      }
      }


      第二步:在plugins.xml
      中进行配置,在action
      中加入以下内容

        <!-- Add your actions here -->
        <group id="firstPlugin" text="MyFirstPlugin" >
        <add-to-group group-id="MainMenu" anchor="last" >
        <action class="com.fxb.learn.HelloAction" text="Hello" />
        </group>

        第三步,启动插件,这时会弹出一个新的IDEA
        ,(如果未激活,就试用就可以了。)就可以看到以下内容了。

        7.MyFirstPlugins.png

        点击 Hello
        就会出现下面这个弹框了。

        8.notification.png

        就这样我们的插件开发环境就搭建完了。

        后面我会记录下学习IDEA插件开发过程中的知识点。并且会有一个实战插件项目。

        更多原创内容,尽在方家小白
        .

        方家小白
        我在方家小白等你,期望与你遇见更好的自己

        既然来了,就点个赞再走吧~

        还有 在看,在看,在看!


        文章转载自方家小白,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论