作者 | 袁华健
handsome code, handsome coder.
前言
程序员最讨厌的就是做重复性工作,如果在日常工作中发现一些重复性的工作,我们可以通过一些市面上的插件去简化我们的工作。但是当市面上的插件无法满足我们的需求的时候,我们其实可以自己去尝试写一个插件解决自身和他人的困难。当别人夸你写的插件牛逼,心里岂不是美滋滋。
1、下载 IntelliJ IDEA
大多数的插件其实都是一个道理,依靠平台提供的 sdk 去做定制化的开发,如 chrome 插件。IntelliJ IDEA 的插件也是同理,我们也是依赖 IntelliJ 提供的 sdk 去进行一个插件的开发。首先我们需要的是下载 IntelliJ IDEA,下载安装就不多赘述,大家都会。下载地址:https://www.jetbrains.com/idea/
2、新建 project
点击 File -> Project -> 选择 gradle -> 勾选上 Java 和 IntelliJ Platform Plugin 选项。
点击 next 后,填写GroupoId
、ArtifactId
和Version
点击 next 后设置 gradle 工程的构建,建议直接默认配置。
点击 next,填写好名称后,点击 finish 后等待完成项目的初始化工作。
初始化后的目录其实也很简单,src 目录为插件源代码目录,plugin.xml
记录了插件的一些配置以及 Action
的注册。
3、认识 Plugin.xml
看一下 IDEA 默认生成的plugin.xml
介绍 plugin.xml
几个主要构成的元素
<id>
这个id是在jetbrains插件库中定位到你插件的唯一id
<name>
插件的名称
<description>
插件的功能描述
<change-notes>
插件的版本变更记录
<idea-version>
插件最低可兼容的idea版本号
<extensions>
扩展点集合,子元素<extension>
用于扩展其他插件功能或者idea平台的功能
<actions>
自定义动作的集合,子元素<action>
用户定义一个动作
4、认识 action
在 idea 中每个功能都叫 action,一个菜单栏里组合了多个 action。我们如果想自定义实现一个功能,那么就需要实现 intellij IDEA 提供的派生类 AnAction
。当用户在点击一个 action 时,会回调 AnAction 的actionPerformed
方法,所以我们需要在 actionPerformed
方法中实现自己的逻辑。
Ok,那我想在 Help
菜单栏中增加一个功能 show Hello World
, 点击后弹框,并展示 say hello world ~
该怎么做呢?
首先我们在src
下创建自己的包 com.mars.plugin
,然后就是去创建我们的 action,利用 IDEA 提供的创建方式可以快速的创建一个 action。
点击 new -> plugin devkit -> action
填写好 action 的一些基本设置后点击 ok,idea 就自动把 HelloAction 给实现,并注册到 plugin.xml 文件中。
然后我们的 action 就算是初始化完了,但是什么也没做,我们给他添加上展示系统弹框的功能。
代码写完了,当然是要运行一下看看效果。
部署
运行 点击 Grade -> Tasks -> intellij -> runIde
这时候 idea 会打开一个全新的项目选择界面,可以选择新建项目,也可以选择导入项目,我们选择导入一个项目。
导入项目后,我们点击 help 菜单栏,就可以发现我们定义的 show hello world 就在第一位。
点击后,弹出系统弹框,说了句“say hello world~”
运行就结束了,那我如何去打包一个插件安装到别的项目上或者给别人用呢?
打包
打包其实也很简单,Gradle -> Tasks -> intellij -> buildPlugin 点击执行
等待一会后,会在本地的 build -> distributions 目录下找到生成的 zip 文件
这个文件就是可以进行安装的版本。
发布
我们当然希望自己写的插件可以上架市场被所有人使用,所以我们进行第一次上传,登录到https://plugins.jetbrains.com/ ,注册账户后点击 Upload plugin
然后上传我们上面生成的 zip 文件,并填写一些信息、比如开源证书和插件分类,然后点击 upload 就等待审核通过吧。
结束语
这篇文章介绍了如何创建一个插件的工程,如果实现插件功能,如何运行打包发布。但是我们想要实现自己的插件,还得需要了解 Intellij IDEA 提供的 sdk 的用法。下一篇会继续介绍 Action、Editor 和 PSI。
全文完