开发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

这时,你可以尝试一下能否正常启动。
我们看一下,插件的配置内容文件 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.htmlon 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 {@Overridepublic 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
,(如果未激活,就试用就可以了。)就可以看到以下内容了。

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

就这样我们的插件开发环境就搭建完了。
后面我会记录下学习IDEA插件开发过程中的知识点。并且会有一个实战插件项目。
更多原创内容,尽在方家小白
.

既然来了,就点个赞再走吧~
还有 在看,在看,在看!




