点击上方"IT牧场",选择"设为星标"

技术干货每日送达!

作者:乱来梦游神

来源 :https://urlify.cn/Eja6zu

前段时间看到公众号一篇关于IDEA插件开发的文章,感觉写的太过于简单,所以想自己写一个IDEA插件开发的系列,从实战的角度讲解IDEA插件开发的流程。

我会通过几个实际的例子演示一个插件的开发,通过几个实际的例子让玩家对于插件开发有个笼统的认识,实际例子完成后,我会从黑铁讲起,一点点的剖析IDEA插件的内涵,至于能不能升到最强王者那就看命运了。

啰嗦了这几句话,那就让我们开始吧。

IDEA插件名词

首先我先介绍几个插件的名词,这样能够保证后边的语境不会出现理解偏差,这里我会进行类比,因为是插件是用java开发,而会java的人一定知道spring全家桶,所以我会拿spring里面的概念进行类比,当然这里不会列举所有,会先列举需要的部分。

(1)Actions:这货就跟controller类似,简单一点来说,当用户点击idea的某个按钮你自己开发的菜单时就会调用的方法。所有的action都需要继承 com.intellij.openapi.actionSystem.AnAction 这个抽象类,实现actionPerformed方法即可,至于按钮在什么位置,则是有add-group相关参数进行配置,这个后边得连载中详细解释。

(2)Services:这货就跟spring普通的类有点相似,他的定义分为两种,分别是应用级别和工程级别,通俗一点讲就是spring里面的普通的bean,当然应用级别代表单例的Bean,工程级别则是多例的Bean(这里不够贴切,可以先理解为单例,等后边的文章再细品)。

(3)demo配置文件(完整代码地址:https://gitee.com/yuanzizhenxin/PluginDemo):


实例开始

接下来我会拿https://gitee.com/yuanzizhenxin/PluginDemo 这个工程作为实例,用刚介绍的东西讲解这个简单的实例,那么,让我们开始实战讲解吧。

(1)功能介绍:弹窗当前时间,并理解application级别和project级别的service的区别。

(2)代码下载及IDEA开发环境配置:

首先需要下载IDEA社区版本即可,下载gradle并配置好,使用git将项目https://gitee.com/yuanzizhenxin/PluginDemo 下载到本地,使用idea打开。

(3)插件演示:

A、首先整个demo的入口是plugin.xml里面的


这里参数的具体含义我会单独的章节进行讲解,先知道这是入口action的配置,他的位置是在下图红框处。


B、idea打开工程,等gradle初始化完成后找到下图的按钮,并双击运行,这样就能够运行一个新的idea,这个就是沙箱里面的idea(可以理解为一个全新的idea)。


C、点击在A步骤说明的action的位置,点击ActionDemo,就能看到idea中间弹窗提示。


(4)插件代码讲解:


这里action首先继承了AnAction类,并重写了actionPerformed方法,记住所有的插件action都是这样声明。

在action中获取service的方法则是

ServiceManager.getService(XXXX.class);//或者ServiceManager.getService(anActionEvent.getProject(), XXXX.class);

//弹窗则是 Messages.showMessageDialog(“内容”, "标题", Messages.getInformationIcon()); 

综上看来,一个插件无非就这么几个东西,剩下的就交给阅读以下源码了,很简单,祝各位成功!

干货分享

最近将个人学习笔记整理成册,使用PDF分享。关注我,回复如下代码,即可获得百度盘地址,无套路领取!

•001:《Java并发与高并发解决方案》学习笔记;•002:《深入JVM内核——原理、诊断与优化》学习笔记;•003:《Java面试宝典》•004:《Docker开源书》•005:《Kubernetes开源书》•006:《DDD速成(领域驱动设计速成)》•007:全部•008:加技术讨论群

近期热文

•彻底解决 GitHub 拉取代码网速慢的问题•基于 SpringBoot2 和 Netty 实现一个简易的RPC通信框架•一本彻底搞懂MySQL索引优化EXPLAIN百科全书•盘点 10 个代码重构的小技巧•性能测试如何定位瓶颈?偶发超时?看高手如何快速排查问题•震精!Spring Boot内存泄露,排查竟这么难!


想知道更多?长按/扫码关注我吧↓↓↓>>>技术讨论群<<<喜欢就点个"在看"呗^_^

idea 拉取gitee代码_手把手撸一个 IDEA 插件相关推荐

  1. vscode中如何拉取git代码_工具 | 手把手教你在VSCode中使用Git

    在一个目录下clone项目: git clone XXXXXX.git 使用VScode 打开项目 右击通过Code打开. 使用vscode提交代码 1.打开下面视图,添加一行文字: ## 测试提交 ...

  2. git gui怎么拉取项目代码_这些Git命令都不会,还是不要去面试了

    前言 以下,项目中经常使用的Git命令,汇总到这里以便与你能快速的学习和掌握Git命令,在文章最后有惊喜哟,一定要看到最后啊! 使用的 Git版本:git version 2.24.0 命令 git ...

  3. idea使用svn拉取项目代码_使用 IDEA 搭建 Hadoop3.1.1 项目

    Hadoop 的版本是 3.1.1 1. 启动 Hadoop 服务 $ start-all.sh 2. 新建 IDEA 的 Maven 项目 2.1 选中 Maven,Project SDK 选择为 ...

  4. 【OpenGL】六、Visual Studio 2019 配置 GitHub ( 提取和拉取简介 | 拉取远程代码 )

    文章目录 一.提取和拉取简介 二.拉取远程代码 一.提取和拉取简介 在 " 团队资源管理器 " 主页中 , 选择 " 同步 " 选项 , 在同步页面中 , 有 ...

  5. 拉取gitee上面的项目方法

    拉取gitee上面的项目方法 还是实例解决一切吧: 首先进入到软件未打开项目的界面,如果你现在处于打开项目状态 ctrl + shift +a--输入close  project: 在URL里输如版本 ...

  6. 第一次使用git拉取公司代码,报错未能顺利结束 (退出码 128)

    原因是之前借用了别人的GitLab账号拉取过代码,然后这个账号和密码被存在本地了,需要进入控制面板修改就可以了. 1.解决拉取代码报错128 1.打开控制面板,找到"凭据管理器": ...

  7. SVN拉取项目代码(checkout)和远程强制关闭一个现有链接

    一.checkout代码 创建文件夹,在哪个盘都可以 在文件夹中鼠标右击选择SVN Check out 弹出: 写入svn URL ==> ok, 小技巧:拉取项目代码时先不忙拉取代码可以将sv ...

  8. git获取代码,拉取最新代码,更新代码等

    有句话说的很好:git是弓,我们的代码是箭,github就是靶子.我们需要把自己的代码存放到github的仓库上. 下图为截取的阮一峰博客的关于git常用命令总结的一张图片: 1.一开始从零获取代码 ...

  9. Git和Github本地上传下载及拉取他人代码

    Git和Github本地上传下载及拉取他人代码 闻道有先后,术业有专攻(自己瞎搞一两个小时,没有后端老王15分钟来的透彻) 一:通过Git把Github上的代码下载到本地 !首先是什么!!下载Git, ...

最新文章

  1. 前端性能毫秒必争方案(一)HTTP请求
  2. C#操作Excel导入导出
  3. 2.3.4 信号量机制
  4. IDEA2021创建Java Web项目
  5. Servlet 数据库访问
  6. git 远程仓库回滚
  7. XMLHttpRequest的方法
  8. 报错:Avoid adding reactive properties to a Vue instance or its root $data at runtime - declare it upfr
  9. 使用Newtonsoft JsonConvert反序列化Json数据到DataTable
  10. 拥塞控制,图文并茂(挺丰富,借鉴较多大佬的思想)
  11. vs2010旗舰版产品密钥
  12. 软件测试 白盒测试用例设计方法动态 逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)基本路径测试法
  13. 安卓盒子root--包好
  14. oracle 12c 自增序列
  15. keep跑步记录伪造_Keep、悦跑圈、咕咚、悦动圈,四个跑步App比对
  16. [生存志] 第20节 历代大事件概览 隋朝
  17. 固态硬盘是什么接口_SATA M.2 PCIe?一分钟教你认识固态硬盘接口
  18. 电邮里面是图片怎么下载_这是最有效的采访后谢谢您的电子邮件
  19. 14.Yum详解,yum安装,查找,info,反向查找,组,依赖,缓存等所有操作
  20. .NET主流的ORM框架

热门文章

  1. 杭电2066一个人的旅行
  2. C++ unsigned long 转化为 unsigned char*
  3. kafka集群安装部署
  4. 鸿蒙撕系统裂安卓阵营,鸿蒙系统年底问世 安卓阵营是不是该瑟瑟发抖了
  5. 怎么看电脑是不是linux系统,怎么查看自己的电脑系统是什么版本
  6. 嵌入式操作系统内核原理和开发(实时调度)
  7. 嵌入式操作系统内核原理和开发(固定内存分配算法)
  8. android 控件突然变小,android中自定义控件
  9. strassen矩阵乘法 java_Strassen 矩阵算法 Java 实现
  10. tomcat启动成功 未加载项目_新里程|尚品食品国际贸易合伙人项目成功启动