【IDEA插件开发】快速入门系列01 开发一个简单的Idea插件

news2024/11/26 14:35:14

IDEA插件开发流程

IDEA插件开发官方文档

英文好的建议阅读官方文档
IDEA插件开发官方文档:https://plugins.jetbrains.com/docs/intellij/welcome.html

搭建IDEA插件开发环境

1.安装社区版IDEA

在这里我们需要下载IDEA社区版的历史版本。
历史版本的下载网址:https://www.jetbrains.com/idea/download/other.html

选择一个合适的版本下载
20230526162603

为什么要下载社区版?

IDEA 分为两个版本:
社区版(Community):完全免费,代码开源,但是缺少一些旗舰版中的高级特性
旗舰版(Ultimate):30天免费,支持全部功能,代码不开源
IDEA社区版源代码开源, 在开发插件的时候可以调试源代码。

如何选择下载的版本?

看你开发的插件想要兼容的最低版本是多少。比如我想兼容2018.1及以上的版本。对于更早的版本,无需兼容。那我便下载2018.1版本的IDEA。注意Community Edition这边的下载链接是社区版本的。
20230526172559

安装过程

打开安装包点Next

20230526182633

点击Browse选择IDEA社区版的安装路径,这里我们选择空间较多的D盘。点击Next继续安装

20230526182738

选择64bit创建64位桌面快捷方式,选择创建.java文件关联。然后点击Next安装。

20230526182823

这里选择快捷方式创建的目录,默认即可。点击Install,等待安装完成。

20230526182849

安装完成点Finish关闭安装包

20230526183028

Idea初始化配置

打开安装好的IDEA社区版,选择Do not import settings。不导入配置

20230526183106

接下来会有一个许可协议,拉到最下面后点击Accept接受协议,然后选择白色主题点击Next Default plugins。

20230526183241

继续点Next即可

20230526183433

最后进入到这个页面点击start using InteliJ IDEA

20230526183509

创建一个新项目

进入Idea之后,我们点击Create New Project创建一个新插件项目

20230527193643

进入创建项目页面之后选择InteliJ Platform Plugin,选中项目的SDK为InteliJ Platform Plugin SDK,然后点Next下一步。

20230529095229

提示我们没有JAVA的SDK,我们先点OK,待会进去指定下JAVA的SDK

20230529100705

指定下项目名称,这里我们演示创建插件,点击插件输出Hello。所以起名helloPlugin。

20230529100846

工程创建结束之后会进入plugin.xml配置文件界面,它是IDEA插件项目的核心配置文件

20230529101302

核心配置文件plugin.xml说明

<idea-plugin>
  <!-- 插件唯一 ID,由开发者自行创建 -->
  <id>com.your.company.unique.plugin.id</id>

  <!-- 插件在 IDE 界面上展示的名称 -->
  <name>Plugin display name here</name>

  <!-- 插件版本号,建议遵循语义化版本规范 -->
  <version>1.0</version>

  <!-- 插件开发者信息,包括邮箱和网址 -->
  <vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor>

  <!-- 插件描述,支持 HTML 标记 -->
  <description><![CDATA[
      Enter short description for your plugin here.<br>
      <em>most HTML tags may be used</em>
    ]]></description>

  <!-- 插件变更日志,支持 HTML 标记 -->
  <change-notes><![CDATA[
      Add change notes here.<br>
      <em>most HTML tags may be used</em>
    ]]>
  </change-notes>

  <!-- 指定插件支持的 IDE 版本范围,since-build 是起始版本号 -->
  <idea-version since-build="173.0"/>

  <!-- 插件依赖声明,可指定此插件需要依赖其他插件或模块 -->
  <!-- 注释掉以下行,可以启用该插件在所有产品上运行 -->
  <!-- <depends>com.intellij.modules.lang</depends> -->

  <!-- 插件扩展点声明,在这里可以声明自定义扩展点 -->
  <extensions defaultExtensionNs="com.intellij">
    <!-- Add your extensions here -->
  </extensions>

  <!-- 插件动作声明,在这里可以声明自定义动作 -->
  <actions>
    <!-- Add your actions here -->
  </actions>
</idea-plugin>

进入项目后我们需要设置下JAVA SDK,左上角File->Project Structure,在Project Settings里,点击New设置JAVA SDK的路径

20230529105903

选择JDK路径选择点击OK

20230529110030

接下来设置Platform SDK

20230529110204

选择IDEA社区版

20230529110258

将IDEA社区版Platform SDK与JDK8绑定

20230529110335

设置完成之后点击Apply

20230529110528

创建动作

项目配置完之后,需要为插件创建一个Action,Action指的是插件使用者如何访问到该插件。

20230529110632

接下来填写插件相关参数,点击OK

20230529111203

默认会生成一个继承AnAction的java类,该类重写了actionPerformed方法,该方法会在插件的action被点击时调用,我们在actionPerformed方法中编写一个弹出框。

20230529113004

运行和调试插件

插件编写好之后,我们点击右上角的运行按钮,运行该插件。插件运行会帮我们打开一个新的IDEA项目。

20230529113133

我们在新的项目中选中Tools下面的第一个Action按钮。此处插件出现的位置取决与创建Action的group和Anchor

20230529113621

点击action,查看运行结果

20230529113721

部署插件

调试好插件之后,点击Build-> PrePare Plugin Module ‘xxx’ For Deployment,即可编译插件。
编译好之后会生成一个jar包。

20230529113914

我们可以将编译好的jar包发给其他人,直接将jar包拖进Idea中即可安装

20230529114318

发布插件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/585723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自学黑客?一般人我劝你还是算了吧

博主本人 18年就读于一所普通的本科学校&#xff0c;21年 6 月在三年经验的时候顺利通过校招实习面试进入大厂&#xff0c;现就职于某大厂安全联合实验室。 我为啥说自学黑客&网络安全&#xff0c;一般人我还是劝你算了吧。因为我就是那个不一般的人。 首先我谈下对黑客&am…

Java日期时间调整的几种方式

一、Calendar类 我们现在已经能够格式化并创建一个日期对象了&#xff0c;但是我们如何才能设置和获取日期数据的特定部分呢&#xff0c;比如说小时&#xff0c;日&#xff0c;或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类。 Calendar类的…

六、基本数据类型

数据类型 一、基本数据类型 以下是go中可用的基本数据类型 1.1 布尔型bool 布尔型的值只可以是常量 true 或者 false。一个简单的例子&#xff1a;var b bool true 1.2 数值型 1、整数型 int8 有符号 8 位整型 (-128 到 127) 长度&#xff1a;8bit int16 有符号 16 位整…

jmeter接口工具使用详解之基础介绍

目录 一、优点 二、安装及下载 三、基础构成 jmeter是一款优秀的开源性能测试工具&#xff0c; 一、优点 1、开源工具&#xff0c;可扩展性非常好 2、高可扩展性&#xff0c;用户可自定义调试相关模块代码 3、精心简单的GUI设计&#xff0c;小巧灵活 4、完全的可移植性…

电子科技大学编译原理复习笔记(五):词法分析

目录 前言 重点一览 词法分析概述 词法分析的功能 词法分析器的输出形式 词法分析器的结构 状态转换图 状态转换图的构造 词法分析器的设计 基本结构 内容 符号表 目的 组成 在词法分析中的作用 符号表的一般形式 常用的符号表结构 总结与补充 为何分离词法…

小学百分数思维导图怎么画?这样制作不出错

百分数是数学中的一个重要概念&#xff0c;它用于表示一个数在另一个数中所占的比例。在日常生活中&#xff0c;我们经常使用百分数进行计算和比较。而百分数思维导图是一种图形化的表示方法&#xff0c;用于展示数值之间的比例关系。它通过将数值转化为百分数的形式&#xff0…

python学习——描述统计df.describe

文章目录 1 描述统计1.1 查看常见统计量 describe1.2 一般对数值型数据统计1.2.1 基于非空数值统计sum\mean\max\min\var\std1.2.2 每一列中最大值的行索引 idxmax1.2.3 每一行中最大值的列索引 idxmax&#xff08;axis 1&#xff09;1.2.4 非空的数量 count() 1.3 一般对字符…

Sugar BI 预测服务:快速通过机器学习,进行数据预测分析

什么是预测服务&#xff1f; 机器学习是一门关于数据学习的科学技术&#xff0c;它能帮助机器从现有的复杂数据中学习规律&#xff0c;以预测未来的行为结果和趋势。 Sugar BI 作为对数据进行分析的可视化平台&#xff0c;也支持用户对自己的数据使用机器学习算法进行探索试分…

赛灵思 ZYNQ UltraScale+ MPSoC Petalinux驱动开发:Linux字符驱动开发

目录 赛灵思 ZYNQ UltraScale MPSoC&#xff1a;Linux字符驱动开发1、Linux驱动程序简介2、Linux字符设备开发步骤2.1、系统调用2.2、驱动模块的加载与卸载2.2.1、驱动加载/卸载方式&#xff1a;2.2.2、驱动注册函数和卸载注册函数2.2.3、字符设备注册与注销2.2.4、实现设备操作…

遥感云大数据在灾害、水体与湿地领域典型案例实践及GPT模型应用

近年来遥感技术得到了突飞猛进的发展&#xff0c;航天、航空、临近空间等多遥感平台不断增加&#xff0c;数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量猛增&#xff0c;遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

GRPC C++ windows下的简易安装方法

最近因为想给Llama.cpp加一个grpc入口&#xff0c;折腾了一圈GRPC运行时的安装&#xff0c;起初参考GRPC官方的Build from source&#xff0c;未果。 主要原因是基于cmake的安装和调用遭遇到几次大的问题。 一是vscode编译器集成的问题&#xff0c;二是cmake的find_package的…

C++入门--初步认识类和对象

0.前言 前面几章&#xff0c;我们一起学习了C和C语言的不同之处&#xff0c;已经算是半只脚迈入了C的“门槛”&#xff0c;本章让我们继续学习C的类和对象。 1.面向对过程和面向对象的初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&…

【网络协议详解】——电子邮件系统协议(学习笔记)

目录 &#x1f552; 1. 电子邮件系统概述&#x1f552; 2. 简单邮件传送协议SMTP&#x1f552; 3. SMTP协议的命令和响应&#x1f558; 3.1 命令&#x1f564; 3.1.1 HELO&#x1f564; 3.1.2 MAIL FROM&#x1f564; 3.1.3 RCPT TO&#x1f564; 3.1.4 DATA&#x1f564; 3.1.…

【软件设计与体系结构】 软件体系结构风格

软件体系结构&#xff08;Software Architecture&#xff09; 软件体系结构&#xff08;Software Architecture&#xff09;包括构成系统的设计元素的描述、 设计元素 之间的交互、 设计元素的组合模式以及在这些模式中的约束。 定义 软件体系结构表示系统的框架结构&#xf…

IIC接口

一、IIC总线简介 IIC总线是由飞利浦公司推出的一种串行、同步、半双工通信协议。它由两条线组成&#xff0c;时钟线&#xff08;SCL&#xff09;和数据线&#xff08;SDA&#xff09;。主机产生通信用的时钟&#xff0c;可以产生起始信号和结束信号来开始或者结束一次通信。 …

OFGF光流引导特征:用于视频动作识别的快速且稳健的运动表示【含源码】

论文地址:https://openaccess.thecvf.com/content_cvpr_2018/papers/Sun_Optical_Flow_Guided_CVPR_2018_paper.pdf 这个 repo 包含论文的实现代码: Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition,Shuyang Sun,Zh…

基于MATLAB的数字滤波器语音信号去噪

文章目录 一、滤波器的种类及简介二、设计流程三、滤波器设计实现与结果仿真参考文献基于MATLAB的FPR滤波器设计源代码 本课程设计通过分析FIR滤波器的基本原理&#xff0c;在MATLAB环境下利用窗函数法设计出FIR滤波器,实现FIR滤波器的仿真。首先是采集一段语音信号&#xff0c…

C++高级数据结构——ST表(倍增表)

从上次写文章到现在已经27天了&#xff0c;将近一个月蒟蒻没有更新了。 最近学的ST表太难理解了&#xff0c;再加上忙&#xff0c;一直没时间…… ----------------------------------------------------------------------------------------------------------------------…

Tarball管理

文章目录 Tarball管理Tarball安装的基本步骤一般 Tarball 软件安装的建议事项 Tarball管理 从源代码的说明我们知道制作一个二进制程序需要很多东西&#xff0c;这包括下面这些基础的软件。 gcc或cc等C语言编译器make及autoconfig等软件需要内核提供的Library以及相关的inclu…

win11使用命令行建立wifi热点,并可以设定名称密码等

主要是想自动化的实现打开wifi热点,ssid和wifi密码可控!手机设定比较简单,但是用程序行来设定还真是比较麻烦。 查了一下,有人使用netsh 无法解决,也就是说无法使用如下命令启动移动热点: netsh wlan set hostednetwork mode=allow ssid=wifi888 key=88888888 netsh wl…