idea插件编写
Posted justry_deng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了idea插件编写相关的知识,希望对你有一定的参考价值。
idea插件编写
准备工作:添加对应版本的JDK
编写插件时,不同版本的IntelliJ IDEA
,对JDK
的版本要求不同。本人使用的是2021版本的IntelliJ IDEA
进行的插件编写,需要设置JDK11
。
编写插件
第一步:创建IntelliJ Platform Plugin项目
第二步:配置plugin.xml,填写基本信息
<idea-plugin>
<!-- 插件唯一id,不能和其他插件id重复 -->
<id>com.idea-aedi.plugin</id>
<!-- 插件名称(在插件市场搜索插件时,搜索的就是这个名称) -->
<name>JustryDeng</name>
<!-- 版本号 -->
<version>1.0</version>
<!-- 供应商主页和email -->
<vendor email="13548417409@163.com" url="https://gitee.com/JustryDeng/projects"/>
<!-- 插件描述,支持html标签 -->
<description><![CDATA[
JustryDeng common plugin, Welcome to use.
]]></description>
<!-- 插件版本变更信息,支持HTML标签; 将展示在 settings | Plugins 对话框和插件仓库的Web页面 -->
<change-notes><![CDATA[
<ul>
<li>since 2021-12-11</li>
</ul>
]]></change-notes>
<!--
插件兼容IDEA的最大和最小 build 号,两个属性可以任选一个或者同时使用,
please see https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html for description
-->
<idea-version since-build="173.0"/>
<!-- 插件所依赖的其他插件的id -->
<depends>com.intellij.modules.platform</depends>
<depends>com.intellij.modules.lang</depends>
<depends>com.intellij.modules.java</depends>
<extensions defaultExtensionNs="com.intellij">
<!-- Add your extensions here -->
</extensions>
<actions>
<!--
!!!!!! 这部分内容需要在下面的步骤中配置(手动配置、或借助插件开发助手自动配置) !!!!!!
-->
</actions>
</idea-plugin>
第三步:编写插件、配置插件
方式一:完全手动
-
第一步:编写想要实现的功能类,需要继承
com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; public class HelloAction extends AnAction @Override public void actionPerformed(AnActionEvent event) // your logic Project project = event.getData(PlatformDataKeys.PROJECT); String txt= Messages.showInputDialog(project, "What is your name?", "Question", Messages.getQuestionIcon()); Messages.showMessageDialog(project, "Hello, " + txt + "!\\nI am glad to see you.", "Information", Messages.getInformationIcon());
-
第二步:配置
plugin.xml
中的actions`提示:为了示例的多样性,这里给出两个配置示例
<!-- 提示:action标签和group标签的id字段值自取即可 --> <actions> <!-- 示例一:在MainMenu菜单下的HelpMenu菜单里,最前面增加一个叫'Hello'的按钮 --> <action id="com.idea-aedi.plugin.Hello" class="com.example.ideaplugin.HelloAction" text="Hello" description="Say hello."> <!-- 指定父节点 action 或 action group 被添加到的位置 --> <add-to-group group-id="HelpMenu" anchor="first"/> </action> <!-- 示例二:在MainMenu菜单的最后面,增加一个 叫'JustryDeng'的菜单,其中字母J带下划线 --> <group id="com.idea-aedi.plugin.JustryDeng" text="_JustryDeng" description="JustryDeng's common util."> <!-- 指定父节点 action 或 action group 被添加到的位置 --> <add-to-group group-id="MainMenu" anchor="last"/> <!-- 当前菜单下,再添加一个叫'Say Hey'的按钮,其中字母S带下划线 (注:当然还可以嵌套菜单) --> <action id="com.idea-aedi.plugin.JustryDeng.Hello" class="com.example.ideaplugin.HelloAction" text="Say _Hello" description="Say hello."/> </group> </actions>
方式二:借助IDEA插件开发助手IDEA Plugin DevKit Helper,半自动
插件开发助手,可以在帮助我们快速创建Action并在
plugin.xml
中作对应的配置,而不需要我们手动配置。
-
第一步:安装IDEA插件开发助手
IDEA Plugin DevKit Helper
-
第二步:使用插件开发助手创建Action
其中设置插件位置处里,Action代表一个"按钮",Group代表菜单,Group里可能有多个Action;先选择一个Group或者一个Action,然后选择Anchor位置,即可通过相对位置的方式,将插件的位置确定下来了。比如说需要将按钮设置在
Help
菜单的最上面:
点击OK,插件开发助手就会创建对应名字的AnAction
类,同时会将新按钮的信息(按钮id、AnAction
类、按钮名称、描述、位置等信息)添加进plugin.xml
中的actions
标签里。
-
第三步:在生成的
AnAction
类中编写逻辑import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; public class HelloAction extends AnAction @Override public void actionPerformed(AnActionEvent event) // your logic Project project = event.getData(PlatformDataKeys.PROJECT); String txt= Messages.showInputDialog(project, "What is your name?", "Question", Messages.getQuestionIcon()); Messages.showMessageDialog(project, "Hello, " + txt + "!\\nI am glad to see you.", "Information", Messages.getInformationIcon());
常用group-id说明
-
MainMenu
:主菜单
-
CutCopyPasteGroup
:左侧导航栏菜单
-
EditorPopupMenu
:右侧代码栏菜单
-
GenerateGroup
:按alt + insert
时弹出的菜单栏
第四步:运行、调试插件
运行插件时,会新打开一个idea:
测试一下功能,也是OK的:
第五步(可选):引入依赖
在我们实际开发idea插件过程中,可能还会需要其它的依赖,这时可采用官方推荐的gradle
创建idea插件的方式,但是会略显麻烦;简单的,你可以直接将依赖的lib包as library引入进当前项目即可:
检查一下:
第六步:打包插件
注:如果项目有依赖其它jar包,那么打出来的就不是jar包,而是zip包了。
第七步:安装插件
如果插件有发布到插件市场,那么可以直接在线从插件市场安装;如果插件没有发布到插件市,那么可以采用下面这种从磁盘安装的方式进行安装。
打开File | Settings | Plugins
,选择从磁盘安装:
选中插件包后,可看到:
点击OK
或Apply
,重启idea完成安装。
相关补充
idea如何打开一个现有的插件项目
-
问题所在
如果你使用idea直接打开一个plugin项目,那么可能是这样的(没有被idea认出来是插件项目):
而实际的插件项目是这样的(有被idea认出来是插件项目):
-
解决办法
直接修改项目的.iml文件:
将type修改为PLUGIN_MODULE
,并通过增加<component name="DevKit.ModuleBuildProperties" url="file://$MODULE_DIR$/resources/META-INF/plugin.xml" />
来指定plugin.xml的位置:修改前:
修改后:
此时,再观察项目,会发现idea已经识别出是插件项目了:
发布插件到插件市场(手动发布)
提示:如果使用的gradle编写构建的插件,那么可以使用gradle集成的能力,自动将插件发布到插件市场,而不需要手动发布。
-
第一步:访问
https://plugins.jetbrains.com/
-
第二步:登录(支持多种方式登录,本人常用Github登录)
-
第三步:上传插件
-
第四步:等审核通过后,就可以在插件市场搜索到你的插件了
相关资料
以上是关于idea插件编写的主要内容,如果未能解决你的问题,请参考以下文章
如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件
如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件