环境准备

Idea插件SDK文档在线地址:https://plugins.jetbrains.com/docs/intellij/welcome.html

  1. 安装IntelliJ IDEA,这里使用版本2020.1.3 X64

  1. IDEA中安装Plugin DevKit插件

创建插件项目

  1. 新建工程。File ->New -> Project

  1. 选择工程类型,IntelliJ PlatformPlugin,并选择IDEA自带SDK。点击Next

  1. 填写工程名称,点击Finish。

工程结构说明

resources/META-INF/plugin.xml为插件核心配置文件

src为插件源码目录

核心配置文件说明

<idea-plugin><!-- 插件id,要保证唯一 --><id>com.ruijie.shamee.firstplugin.id</id><!-- 插件名称,用于别人在插件市场搜索使用 --><name>FirstPlugin</name><!-- 版本号 --><version>1.0</version><!-- 插件提供方信息 --><vendor email="shamee@qq.com" url="http://www.shamee.com.cn">Shamee</vendor><!-- 插件描述 --><description><![CDATA[Enter short description1 for your plugin here.<br><em>most HTML tags may1 be used</em><em>Test</em>]]></description><!-- 变更日志 --><change-notes><![CDATA[Add change notes1 here.<br><em>most HTML tags may1 be used</em>]]></change-notes><!-- 插件所支持的idea版本号 --><idea-version since-build="173.0"/><!-- 相关的其他以来 --><depends>com.intellij.modules.platform</depends><!-- 扩展的内容 --><extensions defaultExtensionNs="com.intellij"><!-- Add your extensions here --></extensions><!-- 菜单动作 --><actions><!-- Add your actions here --></actions></idea-plugin>

插件编写

插件需求

编写一个IDEA顶部菜单Tools->子菜单。并点击该菜单会弹出一个消息通知。

创建Action

  1. src先创建package,com.shamee.firstplugin

  1. 在该package右键->New->Plugin DevKit -> Action

  1. 编辑Action

填写Action ID,Class Name, Name,Description。

我们这里需要将该动作添加到IDEA顶部菜单Tools下的子菜单,所以这里的Groups选择ToolsMenu,之后右侧的Anchor选择First,表示该子菜单添加到Tools下的第一个位置。

Keyboard Shortcuts为添加快捷键。

之后点击OK。

  1. 配置文件变更

添加完Action后,配置文件plugin.xml下的<actions>会添加一个子标签<action>,内容即为我们填写的action信息。

 <!-- 菜单动作 --><actions><!-- Add your actions here --><action id="FirstPluginActionID" class="com.ruijie.shamee.firstplugin.FirstPluginAction" text="测试插件" description="测试插件描述"><add-to-group group-id="ToolsMenu" anchor="first"/><keyboard-shortcut keymap="$default" first-keystroke="ctrl 0"/></action></actions>

同时src下新增了FirstPluginAction类。

  1. Action实现

package com.ruijie.shamee.firstplugin;import com.intellij.notification.Notification;
import com.intellij.notification.NotificationDisplayType;
import com.intellij.notification.NotificationGroup;
import com.intellij.notification.Notifications;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.ui.MessageType;/*** 插件Action实现,* 这里继承的AnAction为Idea提供的openapi。* 按照不同的插件实现,提供了多种action的继承*/
public class FirstPluginAction extends AnAction {@Overridepublic void actionPerformed(AnActionEvent e) {// 添加NotificationGroup,指定消息通知类型。这里NotificationDisplayType.BALLOON表示为气泡类型// isLogByDefault设置为true,表示除了消息气泡通知还会出发Idea事件通知NotificationGroup notificationGroup = new NotificationGroup("firstplugin.id", NotificationDisplayType.BALLOON, true);// 在NotificationGroup中添加消息通知内容,以及消息类型。这里为MessageType.INFONotification notification = notificationGroup.createNotification("点击测试", MessageType.INFO);// 消息通知Notifications.Bus.notify(notification);}
}
  1. 运行

编写完后,运行idea,会重新打开一个idea编辑器。

快捷键ctrl+0也会触发该消息通知。到此第一个没啥卵用的插件编写完成。

  1. 打包安装

打包Build->Prepare Plugin Module 'xxx' For Deployment

打包完成后,工程地下生成FirstPlugin.jar

安装。File->Setting->Plugins,点击Installed旁边的齿轮,选择Install Plugin From DIsk...

选择生成的jar,即可安装成功。之后idea重启后,插件便生效。

如果需要发布到插件市场,需要注册idea账号并上idea开发者后台提交上传即可,这里仅作随笔,不上传。

IDEA插件开发.01之简单入门相关推荐

  1. idea插件开发(01)---最简单的helloworld版,不需要知道原理,先跟我做一个最简单的弹框插件

    前言 用了那么多idea插件,也想自己做一个插件,下面就是入门版本 你不需要先知道所有的概念,先跟着我的步骤做一个小;例子,后面再说原理 相关概念看后面一篇 本次以windos系统为例 开始 1.你得 ...

  2. 微信开发简单入门01

    微信开发简单入门 微信的交互原理 消息推送 消息推送 微信的交互原理 手机的微信关注某个公众号,向公众号发送消息到微信服务器,微信服务器转发到指定的URL的服务器;这台指定URL的服务器返回数据到微信 ...

  3. Bootstrap学习笔记01【快速入门、栅格布局】

    Java后端 学习路线 笔记汇总表[黑马程序员] Bootstrap学习笔记01[快速入门.栅格布局][day01] Bootstrap学习笔记02[全局CSS样式.组件和插件.案例_黑马旅游网][d ...

  4. 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  5. 音视频基本概念和FFmpeg的简单入门(新手友好+FFmpeg资料分享)

    音视频基本概念和FFmpeg的简单入门 基本概念 容器/文件(Conainer/File): 即特定格式的多媒体文件,一般来说一个视频文件是由视频,音频,字幕等按特定的格式/规则组合到一起的,常见如: ...

  6. Matlab 界面设计简单入门(App Designer)

    新版Matlab交互界面基本操作 注意:本教程仅适用于2016b以后版本,建议安装2019b以后最新版本Matlab 与原来的GUIDE不同,新版的App Designer程序编写更加合理,更加好看, ...

  7. 【CMS建站】写给大家看的网站制作教程03—零基础学网站制作的简单入门指南...

    作者 | 杨小爱 来源 | web前端开发(ID:web_qdkf) 在上一篇<[CMS建站]写给大家看的网站制作教程02-网站制作的工具介绍与下载安装>文章中,我详细的讲解了关于制作一个 ...

  8. CSS简单入门(一)

    CSS简单入门(一) CSS是什么 CSS怎么用 CSS选择器(重点+难点) 美化网页(文字,阴影,超链接.列表.渐变-) 盒子模型 浮动 定位 网页定位(特效效果) 1.CSS是什么 1.1 什么是 ...

  9. 定时任务-Quartz、Mycat简单入门、Linux下安装MySQL、Linux下安装MyCAT、Mycat的数据库分片、Mycat读写分离

    表现层:页面 后台管理系统.商城门户.搜索系统.订单系统.商品详情系统.购物车系统 中间件:dubbo 系统之间的通信,服务的统计,rpc协议远程过程调用 同步通信 服务层:实现具体的业务逻辑 商品服 ...

最新文章

  1. mysql设计数据集市_数据集市设计
  2. 第十七届全国大学生智能车竞赛智能视觉组培训第一弹
  3. 全国大学生智能汽车竞赛-讯飞智慧餐厅
  4. vscode自动修复eslint规范的插件及配置
  5. 【数学基础】拉格朗日乘子法
  6. 【openMV与机器视觉】四旋翼飞行控制背景下的PID控制与摄像头算法简介
  7. 查看Ubuntu系统的版本
  8. Zabbix---3 监控主机内存使用率
  9. extundelete数据恢复
  10. python win32api sendmessage_python win32api模拟后台鼠标点击的问题。
  11. SCSI代码分析(3)SCSI设备的管理2
  12. 【转】移动,电信,中行软开,微软,百度等企业工作纯技术性分析
  13. 终于找到了无毒版的fences1.0(2.0版本要收费的)
  14. android多媒体stagefright框架,Android多媒体框架下Stagefright的功能扩展.PDF
  15. [ROS2 基础] 仿真系统和搭建方法
  16. windows10启动项修复||an operating system wasn't found解决办法
  17. 电竞LOL数据API接口 - 【赛事列表数据】API调用示例代码
  18. 4G车牌识别摄像机 瞬间启动 快速唤醒抓拍 超低功耗硬件方案
  19. XDP技术——linux网络处理的高速公路
  20. 【免费分享源码】TV影视盒子美化版APP源码/对接苹果cms后台

热门文章

  1. 使用校园邮箱免费激活pycharm专业版
  2. 睿备份支持linux,【睿备份怎么用】睿备份好不好_使用技巧-ZOL软件百科
  3. 考研复试个人陈述范文(共9篇)
  4. 官方教程 Redshift 08 Light
  5. (二)DSP28335基础教程——GPIO输入(矩阵按键扫描)
  6. window下生成.pem文件
  7. PCL 点云DBSCAN聚类算法
  8. git定位追踪一行或若干行代码修改历史记录
  9. python创建httpserver,并处理get、post请求
  10. c语言大学期中试题,深圳大学C语言期中试题