Idea插件开发(一)——插件的分类及基础认识

Idea插件开发(一)——插件的分类及基础认识
Idea插件开发(二)——插件的创建打包及发布
Idea插件开发(三)——插件JSL的完整开发过程

本篇文章基于IntelliJ Platform SDK DevGuide抽取主要部分内容。官方详细开发文档请移步官方文档
我们知道JetBrains有一大堆的开发工具,比如IntelliJ IDEA,从17年开发发现这个强大的IDE后我就果断抛弃了Eclipse,然后不断给身边的小伙伴安利它,各种人性化的操作让其他Java IDE望尘莫及,它的强大有一部分也来自于丰富的插件扩展支持,本文是我不断摸索翻译官方文档自己开发完插件后总结而成,原文档有些描述生硬的地方我做了解释,如有较大出入请留言告知,以下正文。


注意:在插件开发前务必仔细阅读相关文档,大致了解插件开发的流程并且对插件开发有一个基本的认知后再着手开发将会事半功倍!(亲身体会)


为什么开发插件

使用IntelliJ Idea已经有三年多了,可以说插件大大提升了开发的效率,当然还是会遇到一些困难,所以便萌生了自己开发插件的想法,在经历一番波折后总算在插件市场发布了自己的第一个插件,可以说在这个过程中不断地受到挫折然后又不遗余力的解决问题,通过翻看官方文档翻译理解、在论坛扒帖子、Google等等,让我对写代码又有了激情,一遍一遍改代码、改注释,在提交插件之后就会有一种满足感和成就感,这就是为什么我要做这件事情。因为我已经厌倦了每天CRUD的日子,这种重复劳动让写代码变得了无生趣,我相信同为coder的我们一定能感同身受,所以我希望自己能在业余时间做些感兴趣的事情,至少让时间变得有一些意义吧。

插件的分类

首先我们要知道IntelliJ Platform支持的插件是比较通用的,很多能够在IntelliJ IDEA上运行的插件不仅能够在其他JetBrains家族IDE上运行,同时还能在Android Studio上运行,这也是为什么官方推荐使用开源版本的IntelliJ IDEA Community Edition作为指定的SDK版本,这样开发的插件通用性非常强,下图是JetBrains官方插件存储库的主页,可以看到插件数量最多的是IDEA,其次是Android Studio。
Idea插件开发(一)——插件的分类及基础认识_第1张图片
其次我们要知道插件是分很多种类的,比如ignore(git忽略提交)、lombok(简化java bean代码)、mybatis log plugin(mybatis控制台sql)、GsonFormat(json格式化)、Alibaba Java Coding Guidelines(阿里巴巴代码检查)、Codota(开源仓库拉取相同代码片段)、还有一些代码自动生成插件、切换idea背景图片的插件等这里就不一一列举了,这些应该可以说时非常常见的了,至少我用Idea做Java开发时必装这些插件,插件大致可以分为系统类、美化类、辅助类。

  • 系统类的如一些获取内存、CPU参数、JVM基本信息等
  • 辅助类的比如代码自动生成、代码检查等
  • 美化类的比如背景图片修改、console日志颜色突出等

官方文档中提到最常见的插件类型包括:自定义语言支持、框架整合、工具整合、用户界面附加组件。

其实仔细看官方提供的组件接口就基本能划分出插件的种类,官方也在插件搜索筛选中提供了很多选项:
Idea插件开发(一)——插件的分类及基础认识_第2张图片

插件结构-Plugin Structure

接下来我们通过官方对插件开发的介绍分类进行具体的介绍,内容包括以下几点:

  • 插件内容Plugin Content
  • 插件类加载器Plugin Class Loaders
  • 插件动作(交互)Plugin Actions
  • 插件扩展Plugin Extensions
  • 插件服务Plugin Services
  • 插件监听器Plugin Listeners
  • 插件扩展点Plugin Extension Points
  • 插件组件Plugin Components
  • 插件配置文件Plugin Configuration File
  • 插件徽标(图标)Plugin Logo (Icon)
  • 插件依赖Plugin Dependencies
插件内容

插件最终将以jar包的形式发布,该jar包必须包含以下内容:

  • the configuration file (META-INF/plugin.xml) (Plugin Configuration File)
  • the classes that implement the plugin functionality
  • recommended: plugin logo file(s) (META-INF/pluginIcon*.svg) (Plugin Logo)

总结一下就是三点:配置文件plugin.xml、插件功能类、插件图标

无依赖插件

└── plugins
    └── sample.jar
        ├── com/foo/...
        │   ...
        │   ...
        └── META-INF
            ├── plugin.xml
            ├── pluginIcon.svg
            └── pluginIcon_dark.svg

具有依赖项的插件
插件的.jar文件/lib与所有必需的捆绑库一起放置在插件的“根”文件夹下的文件夹中。
/lib文件夹中的所有jar都会自动添加到类路径中

└── plugins
    └── sample
        └── lib
            ├── lib_foo.jar
            ├── lib_bar.jar
            │   ...
            │   ...
            └── sample.jar
                ├── com/fo

你可能感兴趣的:(工具,java,intellij,IDEA,jpa)