我这个人没事就喜爱举荐一些好用的 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.html
on 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
第二步,配置 Action 相干信息比方展现名称。
创立实现之后,咱们的 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 {
@Override
public 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