我这个人没事就喜欢推荐一些好用的 IDEA 插件给大家。这些插件极大程度上提高了我们的生产效率以及编码舒适度。

不知道大家有没有想过自己开发一款 IDEA 插件呢?

我自己想过,但是没去尝试过。刚好有一位读者想让我写一篇入门 IDEA 开发的文章,所以,我在周末就花了一会时间简单了解一下。

不过,这篇文章只是简单带各位小伙伴入门一下 IDEA 插件开发,个人精力有限,暂时不会深入探讨太多。如果你已经有 IDEA 插件开发的相关经验的话,这篇文章就可以不用看了,因为会浪费你 3 分钟的时间。

好的废话不多说!咱们直接开始!

01 新建一个基于 Gradle 的插件项目

这里我们基于 Gradle 进行插件开发,这也是 IntelliJ 官方的推荐的插件开发解决方案。

第一步,选择 Gradle 项目类型并勾选上相应的依赖。

第二步,填写项目相关的属性比如 GroupId、ArtifactId。

第三步,静静等待项目下载相关依赖。

第一次创建 IDEA 插件项目的话,这一步会比较慢。因为要下载 IDEA 插件开发所需的 SDK 。

02 插件项目结构概览

新建完成的项目结构如下图所示。

这里需要额外注意的是下面这两个配置文件。

plugin.xml :插件的核心配置文件。通过它可以配置插件名称、插件介绍、插件作者信息、Action 等信息。

<idea-plugin><id>github.javaguide.my-first-idea-plugin</id><!--插件的名称--><name>Beauty</name><!--插件的作者相关信息--><vendor email="koushuangbwcx@163.com" url="https://github.com/Snailclimb">JavaGuide</vendor><!--插件的介绍--><description><![CDATA[Guide哥代码开发的第一款IDEA插件<br><em>这尼玛是什么垃圾插件!!!</em>]]></description><!-- please see https://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>

build.gradle :项目依赖配置文件。通过它可以配置项目第三方依赖、插件版本、插件版本更新记录等信息。

plugins {id 'java'id 'org.jetbrains.intellij' version '0.6.3'
}group 'github.javaguide'
// 当前插件版本
version '1.0-SNAPSHOT'repositories {mavenCentral()
}// 项目依赖
dependencies {testCompile group: 'junit', name: 'junit', version: '4.12'
}// See https://github.com/JetBrains/gradle-intellij-plugin/
// 当前开发该插件的 IDEA 版本
intellij {version '2020.1.2'
}
patchPluginXml {// 版本更新记录changeNotes """Add change notes here.<br><em>most HTML tags may be used</em>"""
}

没有开发过 IDEA 插件的小伙伴直接看这两个配置文件内容可能会有点蒙。所以,我专门找了一个 IDEA 插件市场提供的现成插件来说明一下。小伙伴们对照下面这张图来看下面的配置文件内容就非常非常清晰了。

这就非常贴心了!如果这都不能让你点赞,我要这文章有何用!

03 手动创建 Action

我们可以把 Action 看作是 IDEA 提高的事件响应处理器,通过 Action 我们可以自定义一些事件处理逻辑/动作。比如说你点击某个菜单的时候,我们进行一个展示对话框的操作。

第一步,右键java目录并选择 new 一个 Action

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rZRC9vKo-1605787283801)(https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-11/新建action (1)].png)

第二步,配置 Action 相关信息比如展示名称。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mBFLnMCp-1605787283802)(https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-11/配置动作属性 (1)].png)

创建完成之后,我们的 plugin.xml<actions>节点下会自动生成我们刚刚创建的 Action 信息:

<actions><!-- Add your actions here --><action id="test.hello" class="HelloAction" text="Hello" description="IDEA插件入门"><add-to-group group-id="ToolsMenu" anchor="first"/></action>
</actions>

并且 java 目录下为生成一个叫做 HelloAction 的类。并且,这个类继承了 AnAction ,并覆盖了 actionPerformed() 方法。这个 actionPerformed 方法就好比 JS 中的 onClick 方法,会在你点击的时候被触发对应的动作。

我简单对actionPerformed 方法进行了修改,添加了一行代码。这行代码很简单,就是显示 1 个对话框并展示一些信息。

public class HelloAction extends AnAction {@Overridepublic void actionPerformed(AnActionEvent e) {//显示对话框并展示对应的信息Messages.showInfoMessage("素材不够,插件来凑!", "Hello");}
}

另外,我们上面也说了,每个动作都会归属到一个 Group 中,这个 Group 可以简单看作 IDEA 中已经存在的菜单。

举个例子。我上面创建的 Action 的所属 Group 是 ToolsMenu(Tools) 。这样的话,我们创建的 Action 所在的位置就在 Tools 这个菜单下。

再举个例子。加入我上面创建的 Action 所属的 Group 是MainMenu (IDEA 最上方的主菜单栏)下的 FileMenu(File) 的话。

<actions><!-- Add your actions here --><action id="test.hello" class="HelloAction" text="Hello" description="IDEA插件入门"><add-to-group group-id="FileMenu" anchor="first"/></action>
</actions>

我们创建的 Action 所在的位置就在 File 这个菜单下。

04 验收成果

点击 Gradle -> runIde 就会启动一个默认了这个插件的 IDEA。然后,你可以在这个 IDEA 上实际使用这个插件了。

效果如下:

我们点击自定义的 Hello Action 的话就会弹出一个对话框并展示出我们自定义的信息。

05 完善一下

想要弄点界面花里胡哨一下, 我们还可以通过 Swing 来写一个界面。

这里我们简单实现一个聊天机器人。代码的话,我是直接参考的我大二刚学 Java 那会写的一个小项目(当时写的代码实在太烂了!就很菜!)。

首先,你需要在图灵机器人官网申请一个机器人。(其他机器人也一样,感觉这个图灵机器人没有原来好用了,并且免费调用次数也不多

然后,简单写一个方法来请求调用机器人。由于代码比较简单,我这里就不放出来了,大家简单看一下效果就好。

代码地址:https://github.com/Snailclimb/awesome-idea/tree/master/code/first-idea-plugin 。

06 深入学习

如果你想要深入学习的 IDEA 插件的话,可以看一下官网文档:https://jetbrains.org/intellij/sdk/docs/basics/basics.html 。

这方面的资料还是比较少的。除了官方文档的话,你还可以简单看看下面这几篇文章:

  • 8 条经验轻松上手 IDEA 插件开发
  • IDEA 插件开发入门教程

07 后记

我们开发 IDEA 插件主要是为了让 IDEA 更加好用,比如有些框架使用之后可以减少重复代码的编写、有些主题类型的插件可以让你的 IDEA 更好看。

我这篇文章的这个案例说实话只是为了让大家简单入门一下 IDEA 开发,没有任何实际应用意义。如果你想要开发一个不错的 IDEA 插件的话,还要充分发挥想象,利用 IDEA 插件平台的能力。

早起肝文,还要早点出门!觉得不错,大家三连一波鼓励一下这“货”? (纯粹是为了押韵,不容易!年轻人讲啥武德!哈哈哈!)

图解计算机基础+个人原创的 Java 面试手册PDF版下载地址: 链接: https://pan.baidu.com/s/1S5VBDPzFSZO3p5uPNYdMzg 密码: 56bs

手把手教你5分钟从零开发一款简易的IDEA插件!项目经验/毕设不愁了!相关推荐

  1. 从零开发一款轻量级滑动验证码插件(深度复盘)

    关注并将「趣谈前端」设为星标 每天定时分享技术干货/优秀开源/技术思维 github地址: https://github.com/MrXujiang/react-slider-vertify 之前一直 ...

  2. ESP8266 Non-OS SDK 开发之旅 基础篇① 初识 Non-OS SDK,史上超级详细手把手教小白20分钟快速搭建SDK软件开发环境,完成第一个例子Hello World!

    文章目录 1.前言 2. SDK概述 2.1 SDK使用流程 2.2 ESP8266 HDK -- 硬件开发工具 2.3 ESP8266 SDK -- 软件开发工具包 2.3.1 Non-OS SDK ...

  3. 实例:用C#.NET手把手教你做微信公众号开发(20)--使用微信支付线上收款:jsapi方式

    在做线上.线下销售时,可以使用微信便捷支付,通过微信公众号收款有很多种收款方式,如下图: 今天我们来讲一下jsapi支付,场景就是在微信内打开某个页面,完成在线支付,同样一个网页,使用微信打开就是js ...

  4. 手把手教你iPhone 3G手机软件开发

    手把手教你iPhone 3G手机软件开发 "iPhone 是一款革命性的.不可思议的产品,比市场上其它任何移动电话整整领先了五年,"苹果公司首席执行官史蒂夫·乔布斯如是说,&quo ...

  5. 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 3)

    小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第三讲 这是小白都能看懂的实战教程 手把手教你Python Web全栈开发 的 ...

  6. 正点原子linux驱动教程,正点原子 手把手教你学Linux之驱动开发篇

    简 介 该课程是正点原子手把手教你学Linux系列课程,该课程配套开发板为正点原子alpha/mini Linux开发板. 手把手教你学Linux之驱动开发篇: 第1讲 Linux驱动开发与裸机开发区 ...

  7. 实例:用C#.NET手把手教你做微信公众号开发(21)--使用微信支付线上收款:H5方式

    在做线上.线下销售时,可以使用微信便捷支付,通过微信公众号收款有很多种收款方式,如下图: 今天我们来讲一下H5场景支付,使用手机浏览器打开就是H5方式,最常见的推广是短信内置链接,这种场景需要调用微信 ...

  8. 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 1)

    小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第一讲 博主博客文章内容导航(实时更新) 更多优质文章推荐: 收藏!最详细的P ...

  9. 16w行的nginx源码,如何分拆模块阅读,手把手教你造轮子丨Nginx模块开发丨C/C++丨Linux服务器开发丨后端开发

    16w行的nginx源码,如何分拆模块阅读,让你明白轮子如何造  1. 多进程模型下的惊群处理 2. 内存池的代码封装 3. slab共享内存分配 视频讲解如下,点击观看: 16w行的nginx源码, ...

最新文章

  1. APK path is not specified for module
  2. jquery很好的学习网站
  3. 『TensorFlow』专题汇总
  4. TWebBrowser禁止弹出Alert对话框
  5. crashdumpandroid_Android 中Crash时如何获取异常信息详解及实例
  6. 常用的几个JavaScript调试技巧
  7. redis 计数器 java_Redis 的 8 大应用场景!
  8. 初步了解关于js跨域问题
  9. fir.im Weekly - 技术人也要苦练“七十二变”
  10. 项目组织结构以及模块规划
  11. 八种实用的免费游戏开发软件工具
  12. origin8.1中文乱码设置方法
  13. Java-学习-喜欢-品牌:互联网公司成为动物园,拟人化品牌形象真的那么有意思?...
  14. 4.OpenCV视频处理
  15. Why C++ Is Not “Back”
  16. 微信小程序自定义省市区下拉框
  17. 微信小程序常用组件库收藏备用
  18. 视频分析与多模态融合之一,为什么需要多模态融合
  19. 项目中单独指定maven远程仓库
  20. POJ NO.1979 Red and Black(DPS,搬黑砖,,,)

热门文章

  1. 【Docker】Docker可视化管理工具Portainer
  2. 整理一些linux命令必须熟练掌握常的命令(复习+扩展学习Linux命令)
  3. 知识图谱第3享:数据生命周期
  4. 两款语音合成助手,微软语音合成
  5. Matlab中s函数的使用
  6. hse是什么意思的缩写_HSE管理名词英文缩写
  7. biostar handbook(四)|生物数据及其下载和基本操作
  8. 页面内容分析之404页面检测
  9. c语言 checksum,crc校验方法,用c语言实现源代码(CRC checksum method, using C language source code).doc...
  10. 5G LTE窄带物联网(NB-IoT) 4