手把手制作一个IDEA插件(Demo搭建篇)

2023-10-29

新建IDEA插件

  • File --> new --> Project--> Intellij PlatForm Plugin-->Next-->填好项目名OK

编写插件

  • 新建工程后在src下建个java文件, 如下
  • 代码如下
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.ui.Messages;

public class HelloIDEA extends AnAction {
    @Override
    public void actionPerformed(AnActionEvent anActionEvent) {
        // 弹窗显示消息
        Messages.showMessageDialog("Hello world", "ShuoGG Say", Messages.getInformationIcon());
    }
}
复制代码

修改plugin.xml

  • plugin.xml在META-INF目录下
  • name为插件名, action用定义插件的input和output, 等实现效果再回过头来看这参数就很清楚了

打包插件

  • 打包后生成一个jar包, 这就是我们的插件

安装插件

  • 选择刚打包好的jar来安装
  • 装完打勾重启IDEA

插件效果

  • 到window菜单的第一栏就会看到HelloIDEA一项, 其实就是对应之前xml下action的group-id="WindowMenu" anchor="first"
  • 点击后就会弹出, 完毕收工!

工程源码及参考

转载于:https://juejin.im/post/5bd28e5751882527344754b3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手制作一个IDEA插件(Demo搭建篇) 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • 功能强大,但因安全隐患被企业禁用的Python内置函数

    功能强大 但却因安全隐患被企业禁用的Python内置函数 eval 函数是Python的内置函数 功能非常强大 但是存在不小的安全隐患 有些企业或项目出于安全考虑 禁止使用eval 函数 会在一些安全相关的扫描校验中进行识别和拦截 杜绝使用
  • 【嵌入式】虚拟机未能将管道连接到虚拟机: 系统找不到指定的文件

    这两天虚拟机莫名奇妙的爆出这个错误 在升级win11过后解决嘞这个问题 但是win11确实不好用最后退回win10这个问题又出现了 这里记录一下我的解决办法 设置为管理员运行程序 然后遇到新的报错了 进入控制面板选择C 2015修复环境 到
  • React性能提升

    了解react如何提升性能将有助于我们更好的编写代码 个人认为react中很多的性能优化 其实都是围绕着react的核心diff算法来展开的 通过优化 减少diff算法中一些不必要的步骤 从而来提高性能 下面是我平时开发总结出来的一些经验
  • QT控件之(TableView)中设置为不可编辑状态

    加入以下一句代码 ui gt tableView gt setEditTriggers QAbstractItemView NoEditTriggers
  • 【H.264/AVC视频编解码技术详解】二十三、帧间预测编码(1):帧间预测编码的基本原理

    H 264 AVC视频编解码技术详解 视频教程已经在 CSDN学院 上线 视频中详述了H 264的背景 标准协议和实现 并通过一个实战工程的形式对H 264的标准进行解析和实现 欢迎观看 纸上得来终觉浅 绝知此事要躬行 只有自己按照标准文档
  • STM32初始化USART后只发送了一个0x00,而无法发送其他数据的解决方法

    GPIO InitTypeDef GPIO InitStructure USART InitTypeDef USART InitStructure RCC APB2PeriphClockCmd RCC APB2Periph GPIOB EN
  • Tornado入门教程

    Overview FriendFeed是一款使用 Python 编写的 相对简单的 非阻塞式 Web 服务器 其应用程序使用的 Web 框架看起来有些像 web py 或者 Google 的 webapp 不过为了能有效利用非阻塞式服务器环
  • 【数据结构与算法】顺序表精讲

    所属专栏 数据结构与算法 前期内容 绪论1 抽象数据类型 绪论2 时间复杂度与空间复杂度 与时间复杂度相关的OJ面试题 抽象数据类型的实现 目录 1 1线性表的定义和特点 1 2案例引入 eg 图书信息管理系统 1 3线性表的类型定义 基本
  • code-server安装使用

    code server是一款基于VSCode的在线编辑器 它提供了一个web话的在线IDE 服务端上运行code server 可以理解为一个在远程服务器上运行的VS Code 客户端就可以使用浏览器打开vscode vscode上的资源都
  • 软件工程实训day01-mybatis

    本次实训环境 jdk 1 8 编辑器 eclipse 数据库 mysql SQLyog 实训所得结果 使用mybatis进行简单增删改查操作 代码上传gitee 创建数据库 DROP TABLE IF EXISTS computers CR
  • 非管理员用户添加右键菜单(管理员也适用)

    目录 背景 解决办法 总结 把其他教程中的HKEY CLASSES ROOT替换为HKEY CURRENT USER SOFTWARE Classes即可 背景 网上大多数教程添加右键菜单的方法都需要管理员权限 公司电脑处于信息安全角度 大
  • Jenkins自动化打包上传到Fir报Can not found mapping or dysm file in的解决方案

    在踩了几个坑以后 Jenkins自动打包终于成功了 就想着自动上传到Fir 自动生成二维码 便于下载安装 在网上找到了一个Fir插件 安装成功以后再次打包发现报Can not found mapping or dysm file in 在网
  • 使用JDK开发WebService-客户端建立

    一 序言 上篇 我已经写了一个简单的WebService服务器 看起来貌似不错 但我们真正的目的是想通过编程的方式来访问服务器 而不是通过eclipse带的Web Service浏览器来访问 服务器我们是一行行代码敲出来的 客户端同样我们也
  • vue 创建一个登录界面

    vue创建一个登录界面 1 创建登录界面和主页 2 配置路由 3 配置main js 4 配置App vue 5 登录页面 6 主页面 用到的组件 参考链接 1 创建登录界面和主页 打开搭建好的vue项目 在components文件夹下面新
  • 电信光猫改桥接模式

    如果只是改桥接 可以试试下面这两个地址 http 192 168 1 1 bridge route gchhttp 192 168 1 1 8080 bridge route gch 转载于 https www cnblogs com De
  • Java对象拷贝时根据枚举自动转换属性值

    问题描述 在copyProperties A B 拷贝对象时 需要将A type Integer 拷贝到B type String 但是A type是类型的数字编码 B type是类型的描述 通过给B type加一个注解指定枚举类 实现在拷
  • 全面认识二极管,一篇文章就够了

    电子设计基础元器件 二极管 小小二极管 大大用途 矜辰所致 目录 前言 一 二极管基础知识 1 1 什么是二极管 1 2 二极管的组成 1 3 二极管的原理 二 二极管特性 2 1 伏安特性曲线图 2 2 温度的影响 2 3 关于击穿 三
  • Flink大数据平台下的WordCount案例

    WordCount是大数据处理领域中的经典案例 它用于统计给定文本中各个单词出现的频次 在本文中 我们将介绍如何在macOS系统下使用Apache Flink框架来实现WordCount案例 我们将提供相应的源代码 并逐步解释实现过程 首先
  • 路由器上端口转发_如何在路由器上转发端口

    路由器上端口转发 Although modern routers handle most functions automatically some applications will require you to manually forw
  • 手把手制作一个IDEA插件(Demo搭建篇)

    新建IDEA插件 File gt new gt Project gt Intellij PlatForm Plugin gt Next gt 填好项目名OK 编写插件 新建工程后在src下建个java文件 如下 代码如下 import co