赞
踩
作者 | 袁华健
handsome code, handsome coder.
程序员最讨厌的就是做重复性工作,如果在日常工作中发现一些重复性的工作,我们可以通过一些市面上的插件去简化我们的工作。但是当市面上的插件无法满足我们的需求的时候,我们其实可以自己去尝试写一个插件解决自身和他人的困难。当别人夸你写的插件牛逼,心里岂不是美滋滋。
大多数的插件其实都是一个道理,依靠平台提供的 sdk 去做定制化的开发,如 chrome 插件。IntelliJ IDEA 的插件也是同理,我们也是依赖 IntelliJ 提供的 sdk 去进行一个插件的开发。首先我们需要的是下载 IntelliJ IDEA,下载安装就不多赘述,大家都会。下载地址:https://www.jetbrains.com/idea/
点击 File -> Project -> 选择 gradle -> 勾选上 Java 和 IntelliJ Platform Plugin 选项。
点击 next 后,填写GroupoId
、ArtifactId
和Version
点击 next 后设置 gradle 工程的构建,建议直接默认配置。
点击 next,填写好名称后,点击 finish 后等待完成项目的初始化工作。
初始化后的目录其实也很简单,src 目录为插件源代码目录,plugin.xml
记录了插件的一些配置以及 Action
的注册。
看一下 IDEA 默认生成的plugin.xml
-
<idea-plugin>
-
<id>com.mars.plugin</id>
-
<name>Plugin display name here</name>
-
<vendor email=
"support@yourcompany.com" url=
"http://www.yourcompany.com">YourCompany</vendor>
-
-
<description><![CDATA[
-
Enter short description
for your plugin here.<br>
-
<em>most HTML tags may be used</em>
-
]]></description>
-
-
<!-- please see http:
//www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
-
on how to target different products -->
-
<!-- uncomment to enable plugin in all products
-
<depends>com.intellij.modules.lang</depends>
-
-->
-
-
<extensions defaultExtensionNs=
"com.intellij">
-
<!-- Add your extensions here -->
-
</extensions>
-
-
<actions>
-
<!-- Add your actions here -->
-
</actions>
-
</idea-plugin>
介绍 plugin.xml
几个主要构成的元素
<id>
这个id是在jetbrains插件库中定位到你插件的唯一id
<name>
插件的名称
<description>
插件的功能描述
<change-notes>
插件的版本变更记录
<idea-version>
插件最低可兼容的idea版本号
<extensions>
扩展点集合,子元素<extension>
用于扩展其他插件功能或者idea平台的功能
<actions>
自定义动作的集合,子元素<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 就算是初始化完了,但是什么也没做,我们给他添加上展示系统弹框的功能。
-
@Override
-
public void actionPerformed(AnActionEvent e) {
-
Project project = e.getData(PlatformDataKeys.PROJECT);
-
Messages.showMessageDialog(project,
"say hello world ~",
"Info", Messages.getInformationIcon());
-
}
代码写完了,当然是要运行一下看看效果。
运行 点击 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。
全文完
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。