当前位置: 首页 > news >正文

idea插件开发之hello idea plugin

写在前面

最近一直想研究下自定义idea插件的内容,这样如果是想要什么插件,但又一时找不到合适的,就可以自己来搞啦!这不终于有时间来研究下,但过程可谓是一波三折,再一次切身体验了下万事开头难。那么,为了能让有这方面需求的小伙伴,少走弯路,直通罗马,就考虑写一篇入门的文章,我们共同学习,共同进步!!!

1:环境准备

这里列举下我本地的开发环境,这样当你遇到问题时,可以从这方面来找下原因:

idea:2019-IntelliJ IDEA 2019.3.1 (Ultimate Edition),开始使用2021.1版本各种问题
gradle:5.2.1 另外注意给gradle配置jdk11,后面会讲到,开始我配置了8,不行,9也不行/(ㄒoㄒ)/~~
win10
jdk8:项目开发的话,就是用了jdk8

1.1:配置gradle

在这里 下载5.2.1版本,解压到一个目录:
在这里插入图片描述
然后在init.d目录创建init.gradle,并写如下内容:

allprojects {repositories {mavenLocal()maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }mavenCentral()}buildscript { repositories { maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }}}
}

然后配置环境变量:
在这里插入图片描述
配置idea:
在这里插入图片描述
注意4,一定要选择11,一定要选择11,一定要选择11。

2:hello idea plugin

这里我们实现这样的效果,在File下增加一个按钮,点击弹出个框,像这样:
在这里插入图片描述
首先创建项目:
在这里插入图片描述
在这里插入图片描述
录入项目信息就和普通项目一样了。接着finish,等待加载完毕,需要再来修改gradle的配置:
在这里插入图片描述
然后还需要修改build.gradle中的org.jetbrains.intellij版本为0.6.3:
在这里插入图片描述
接着reimport:
在这里插入图片描述
成功后:
在这里插入图片描述
jdea插件,按钮和定义以及响应的事件是通过action来实现的,所以我们需要来定义一个action:
在这里插入图片描述
接着录入相关内容:
在这里插入图片描述
此时会在plugin.xml中生成Action以及按钮相关的信息:
在这里插入图片描述
并生成action java类:
在这里插入图片描述
我们添加一行代码,弹出hello idea plugin:
在这里插入图片描述
接着点击,左上角的执行:
在这里插入图片描述
成功后,会打开一个新的idea,因为是测试插件使用的,所以是全新初始设置的idea,不会影响现有的:
在这里插入图片描述
接着就按照正常使用idea的操作来使用,就行了:
在这里插入图片描述
点击:
在这里插入图片描述

2.1:gradle命令行方式运行

另外也可以直接通过gradle命令行的方式来运行:
在这里插入图片描述

3:打包并加载插件到idea中使用

打jar包:
在这里插入图片描述
生成的jar包:
在这里插入图片描述
然后就可以通过磁盘安装的方式,安装插件到你的idea中了:
在这里插入图片描述在这里插入图片描述
再重启下idea就可以了:
在这里插入图片描述
在这里插入图片描述
因为还没有发布到市场,所以此时还不能通过市场搜索的方式来找到我们的插件。

4:通过模板方式创建插件项目

前面分析的是通过gradle的方式来创建插件项目,当然这也是idea官方推荐的方式,因为管理依赖和管理项目更加方便(和我们开发普通的项目用maven一个道理),完整起见,再来看下通过模板方式如何创建项目,差别主要在创建项目和导出项目,首先看创建项目:
在这里插入图片描述
比如我们开发了一个Action,用来弹出类信息工程信息:
在这里插入图片描述
之后,发布项目是:
在这里插入图片描述
运行和gradle方式类似,如下:
在这里插入图片描述
在这里插入图片描述

写在后面

参考文章列表

开源镜像站 。

IDEA如何配置 Gradle(详细版) 。

IDEA 插件开发入门 。

Intelij开发idea插件从开发到发布的完整详细教程附带源码demo 。

IDEA插件开发 。

相关文章:

idea插件开发之hello idea plugin

写在前面 最近一直想研究下自定义idea插件的内容,这样如果是想要什么插件,但又一时找不到合适的,就可以自己来搞啦!这不终于有时间来研究下,但过程可谓是一波三折,再一次切身体验了下万事开头难。那么&…...

Sm4【国密4加密解密】

当我们开发金融、国企、政府信息系统时,不仅要符合网络安全的等保二级、等保三级,还要求符合国密的安全要求,等保测评已经实行很久了,而国密测评近两年才刚开始。那什么是密码/国密?什么是密评?本文就关于密…...

git如果将多次提交压缩成一次

将N个提交压缩到单个提交中有两种方式: git reset git reset的本意是版本回退,回退时可以选择保留commit提交。我们基于git reset的作用,结合新建分支,可以实现多次commit提交的合并。这个不需要vim编辑,很少有冲突。…...

android用Retrofit进行网络请求和解析

Retrofit 的原理 Retrofit的核心原理包括动态代理与Service Method的构建、注解解析与请求配置、网络请求执行与响应处理等。它是一个类型安全的HTTP客户端,用于Android和Java平台,通过将HTTP API转化为Java接口的方式,简化了网络请求的编写…...

list容器的基本使用

目录 前言一,list的介绍二,list的基本使用2.1 list的构造2.2 list迭代器的使用2.3 list的头插,头删,尾插和尾删2.4 list的插入和删除2.5 list 的 resize/swap/clear 前言 list中的接口比较多,与string和vector类似&am…...

34万汉语词语成语反义词ACCESS\EXCEL数据库

反义词就是两个意思相反的词,包括:绝对反义词和相对反义词。分为成对的意义相反、互相对立的词。如:真——假,动——静,拥护——反对。这类反义词所表达的概念意义互相排斥。或成对的经常处于并举、对待位置的词。如&a…...

yum方式更新Jenkins

目的 使用yum方式更新Jenkins。 步骤 查看最新可用版本 $ yum list jenkins Last metadata expiration check: 0:03:44 ago on Fri Jun 14 06:10:01 2024. Installed Packages jenkins.noarch 2.452.1-1.1 jenkins Available Pa…...

欢乐钓鱼大师保姆级教程,云手机辅助攻略解析!

在这份攻略中,我们将为大家详细介绍如何在《欢乐钓鱼大师》中快速提升钓鱼技能和游戏进展,避免常见的新手误区和不必要的资源浪费。无论是钓鱼点的选择、装备的合理使用还是技能的优化,我们都会一一为您详细解析,帮助您成为一名优…...

数据结构:手撕代码——顺序表

目录 1.线性表 2.顺序表 2.1顺序表的概念 2.2动态顺序表实现 2.2-1 动态顺序表实现思路 2.2-2 动态顺序表的初始化 2.2-3动态顺序表的插入 检查空间 尾插 头插 中间插入 2.2-4 动态顺序表的删除 尾删 头删 中间删除 2.2. 5 动态顺序表查找与打印、销毁 查找 …...

jenkins使用注意问题

1.在编写流水线时并不知道当前处在哪个目录,导致名使用不当,以及文件位置不清楚 流水线任务默认路径是,test4_mvn为jenkins任务名 [Pipeline] sh (hide)pwd /var/jenkins_home/workspace/test4_mvn maven任务也是,看来是一样的…...

Kaggle -- Titanic - Machine Learning from Disaster

新手kaggle之旅:1 . 泰坦尼克号 使用一个简单的决策树进行模型构建,达到75.8%的准确率(有点低,但是刚开始) 完整代码如下: import pandas as pd import numpy as npdf pd.read_csv("train.csv&quo…...

蓝牙音频解码芯片TD5163介绍,支持红外遥控—拓达半导体

蓝牙芯片TD5163A是一颗支持红外遥控、FM功能和IIS音频输出的蓝牙音频解码芯片,此颗芯片的亮点在于同时支持真立体声&单声道、TWS功能、PWM、音乐频谱和串口AT指令控制等功能,芯片在支持蓝牙无损音乐播放的同时,还支持简单明了的串口发送A…...

windows 下 docker 入门

这里只是具体过程,有不清楚的欢迎随时讨论 1、安装docker ,除了下一步,好像也没有其他操作了 2、安装好docker后,默认是运行在linux 下的,这时我们需要切换到windows 环境下, 操作:在右下角d…...

《别让“想太多”挡了你的骑行路,对比一下更丝滑》

在探索骑行的世界时,我们往往会被一些先入为主的想法所束缚。本文将带你对比骑行与其他运动和生活方式,揭示那些阻碍你爱上骑行的认知误区。 一、年龄不是界限:骑行与跑步的比较与跑步相比,骑行同样适合所有年龄段,但它…...

hadoop和hbase对应版本关系

https://hbase.apache.org/book.html#configuration...

现代X86汇编-C和ASM混合编程举例

端午假期安装好了vs c2022,并写了个简单的汇编代码,证明MASM真的可以运行。今天需要搞一个实实在在的C和ASM混合编程的例子,因为用纯汇编的求伯君写WPS的时代一去不复返了。个别关键函数用汇编,充分发挥CPU的特色功能,偶尔还是需要…...

485. 最大连续 1 的个数

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。 示例 1: 输入:nums [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.示例 2: 输入:nums […...

席卷的B站《植物大战僵尸杂交版》V2.0.88整合包,PC和手机可用,含通关存档和视频教程!

今天给大家安利一款席卷B站,火爆全网的游戏——《植物大战僵尸杂交版》2.0.88整合包。 这个是网络上现存植物大战僵尸杂交版的最全整合,包含了修改工具,超强通关存档和高清工具。工具包有安装视频教程,支持手机版和pc多端使用&am…...

液晶拼接屏企业应该采取哪些措施来提升整体竞争力和市场地位呢?

步入智能科技时代以来,商显行业面对着各式各样的挑战,人工智能、AI大模型等整合中,液晶拼接屏企业应该采取哪些措施以提升整体竞争力和市场地位。下面小编个人观点简单说一下;下是一些关键的措施: 首先,加…...

PHP在线生成查询产品防伪证书系统源码

源码介绍 PHP在线生成查询产品防伪证书系统源码,源码自带90套授权证书模板,带PSD公章模板,证书PSD源文件。 环境要求:PHPMYSQL,PHP 版本请使用PHP5.1 ~5.3。 图片截图 源码安装说明 1.上传所有文件至你的空间服务器…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)&#xff…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

Linux中INADDR_ANY详解

在Linux网络编程中&#xff0c;INADDR_ANY 是一个特殊的IPv4地址常量&#xff08;定义在 <netinet/in.h> 头文件中&#xff09;&#xff0c;用于表示绑定到所有可用网络接口的地址。它是服务器程序中的常见用法&#xff0c;允许套接字监听所有本地IP地址上的连接请求。 关…...

无头浏览器技术:Python爬虫如何精准模拟搜索点击

1. 无头浏览器技术概述 1.1 什么是无头浏览器&#xff1f; 无头浏览器是一种没有图形用户界面&#xff08;GUI&#xff09;的浏览器&#xff0c;它通过程序控制浏览器内核&#xff08;如Chromium、Firefox&#xff09;执行页面加载、JavaScript渲染、表单提交等操作。由于不渲…...

触发DMA传输错误中断问题排查

在STM32项目中&#xff0c;集成BLE模块后触发DMA传输错误中断&#xff08;DMA2_Stream1_IRQHandler进入错误流程&#xff09;&#xff0c;但单独运行BLE模块时正常&#xff0c;表明问题可能源于原有线程与BLE模块的交互冲突。以下是逐步排查与解决方案&#xff1a; 一、问题根源…...