专栏首页路人甲Java从0到1,撸一个IDEA插件,So Easy!

从0到1,撸一个IDEA插件,So Easy!

来源 | 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()); 

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

本文分享自微信公众号 - 路人甲Java(javacode2018)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 玩转分布式事务系列 - 可靠消息解决跨库转账问题

    第7步执行成功之后,网络出问题了,第8步会提交失败,此时的结果是:A库资金减少了100,B库资金却没有增加;这是一个网络问题导致了我们业务失败了,网络因素是程序...

    路人甲Java
  • 玩转Mysql系列 - 第16篇:变量详解

    Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。

    路人甲Java
  • 我们的爬虫真的这么让人讨厌么?

    我们在使用爬虫过程中,大多都会遇到这样的问题:突然某一天爬虫爬不到内容了,目标网站直接返回404或者其他错误信息,这说明我们的爬虫被目标网站给屏蔽了。

    路人甲Java
  • 码云推荐 | c# 插件管理器 Plugin.NET

    运行环境 项目使用 .net 4.0 编写,自己随便改改代码就能用到.net2.0和.netcore上。 使用方法 编写程序的接口类,在入口项目中引用这个接口;...

    码云Gitee
  • 复仇者联盟与IntelliJ IDEA也很配哦

    之前转载过几位网友推荐的一些关于IntelliJ IDEA的插件。其中有一款插件几乎每位网友都会推荐它,我也一直在使用,那就是:Background Image...

    程序猿DD
  • 分享几个实用的浏览器插件

    插件是一个神奇的东西,它可以满足我们各种各样的需求,而浏览器本身并不具备这种功能。谷歌浏览器之所以雄踞浏览器市场,除了万能的谷歌搜索,还有很大的原因就是因为它有...

    爱吃西瓜的番茄酱
  • IntelliJ IDEA 2020.2.1发布,Lombok插件可能被官方支持

    最近两个版本的Intellij IDEA没有办法使用lombok插件了,这种问题已经出现了多次,导致胖哥依然使用2020.1的旧版本。其实很多人和我一样也回滚到...

    码农小胖哥
  • 在sublime中安装sass编译插件

    打开sublime,在preference选项下有没有package control这个选项,如果没有的话,就表示你没有Package Control 插件(一...

    小胖
  • Golang构建HTTP服务(一)--- net/http库源码笔记

    实现一个最简单HTTP server需要多少代码?只需要一行,Python2的python -m SimpleHTTPServer,ruby的ruby -run...

    李海彬
  • IntelliJ IDEA 2018.3 重大升级,哪些功能打动了你?

    2018.11.28 IntelliJ IDEA 2018.3 正式版发布。对于一个忠实爱好者,迫不及待的我下载了最新版本来体验下。而且 IDEA 今年的第三次...

    二十三年蝉

扫码关注云+社区

领取腾讯云代金券