idea插件开发入门

idea插件开发入门

天森爱自由 2020-05-24 20:23:10  3220  收藏 4

分类专栏: 编程语言 文章标签: idea插件

版权

前言:最近想研究一款自动在idea中定位缺陷及发送JIRA的快捷工具,方便提升报自动化脚本的bug的效率。因为idea插件学习是必不可少了,沉淀小结如下。

idea插件开发入门

  • 插件用途
  • 工程创建
  • 配置文件
  • Action实现
  • 开发语法
    • 常用对象
    • 常用方法
  • 运行效果
  • 打包及安装
  • 发布插件

插件用途

idea插件有很多用途,下面举几个常用的说明:
效率提升:JRebel for IntelliJ
一款热部署插件,只要不是修改了项目的配置文件,用它都可以实现热部署。
效率提升:Lombok plugin
开发神器,可以简化你的实体类,让你不再写get/set方法
效率提升:Mybatis plugin
可以在mapper接口中和mapper的xml文件中来回跳转,就想接口跳到实现类那样简单。
效率提升:GsonFormat
一键根据json文本生成java类,非常方便
改变用户界面:activate-power-mode
这是一款让你在编码的时候,增加酷炫动效。

工程创建

项目创建:
在这里插入图片描述

工程目录:
在这里插入图片描述

plugin.xml:里面定义了一些组件、事件等需要注册的内容

配置文件

在这里插入图片描述
重点:plugin.xml和build.gradle
id:表示当前插件的唯一id号
name:插件的名称
version:插件的版本号
vendor:填写开发人的邮箱,公司名称
description:插件的描述,如果将插件上传到IDEA的仓库后,在进行下载的时候就会显示该描述
idea-version:表示当前插件所支持的所有Intellij Idea 的版本
extensions:这里一般会放一些我们自己的扩展的东西,比如新增高亮显示,新增语言支持都是需要在这里进行扩展
actions:新增的Action类需要在这里注册,用于菜单栏扩展
Group:如果想定义一个跟Help同级的菜单,或者是定义包含多个子选项的菜单

在这里插入图片描述
配置gradle依赖

Action实现

  • actionPerformed(AnActionEvent e): 当用户点击IDE中对应Action的图标时会触发此方法,也就是说每选中一次触发一次。
  • update(AnActionEvent e):为了能在用户点击自定义插件对应的菜单项之前动态判断是否将插件项显示,只需重写update函数,在actionPerformed(AnActionEvent e) 之前触发。

举例:想知道点击菜单前就判断插件能否展示,就需要重写update方法,如:

 if (directory.getName().equals("contract"))
            e.getPresentation().setEnabledAndVisible(true);
        else
            e.getPresentation().setEnabledAndVisible(false);
    }
  • 1
  • 2
  • 3
  • 4
  • 5

开发语法

常用对象

PsiFile: 对应于应用中的文件,如.Java的文件或者是.xml的文件等;
PsiDirectory: 对应于应用中的目录
PsiJavaFile: 对应于Java源文件,如Test.java
PsiClass: 对应于某个类,其中一个文件中可能会有多个类;
PsiMethod: 对应于类中的某个方法
PsiField: 对应于类中的某个属性
PsiAnnotation: 对应于注解;

常用方法

获取当前项目:

Project project = anActionEvent.getProject();

获取当前的编辑器对象:

Editor editor = anActionEvent.getData(CommonDataKeys.EDITOR);

获取当前编辑的文件:

PsiFile psiFile = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());

// 如果是Java文件,可以转换成PsiJavaFile
PsiJavaFile javaFile = (PsiJavaFile)psiFile;

获取JavaFile中的Class:

// 一个文件中可能会定义有多个Class,因此返回的是一个数组
PsiClass[] classes = javaFile.getClasses();
PsiClass的常用方法:

获取所有属性:getFields、getAllFields
查找属性:findFieldByName(),其中第二个参数是是否查找父类的属性;
获取所有方法:getMethods/getAllMethods
查找方法:findMethodsByName

Import某个类:由于引入类操作是在File中进行的,因此在Class类上是没有办法导入的,如果已经获取到了javaFile对象,那么可以这样导入,否则需要先获取到Class所在的File后再进行导入:

javaFile.importClass(aClass);

根据文件名查找路径
FilenameIndex.getFilesByName()

根据class获取所在文件:

(PsiJavaFile) aClass.getContainingFile()

获取类所在包:

// 先获取到文件后再获取文件所在包
String daoPackage = ((PsiJavaFile) aClass.getContainingFile()).getPackageName();
创建文件(包含文件中的类):

javaFile = (PsiJavaFile) PsiFileFactory.getInstance(project).createFileFromText(“Test.java”, JavaFileType.INSTANCE, “public class Test {}”);

获取当前文件所在包:

PsiDirectory containerDirectory = javaFile.getContainingDirectory();

创建子包(子目录):

parentDirectory.createSubdirectory(“test”);

将文件添加到包中去

psiDirectory.add(javaFile);

查找类:

PsiShortNamesCache shortNamesCache = PsiShortNamesCache.getInstance(project);
PsiClass[] classes = shortNamesCache.getClassesByName(“Test”, GlobalSearchScope.allScope(project));

运行效果

demo代码:

    @Override
    public void actionPerformed(AnActionEvent anActionEvent) {
        Messages.showMessageDialog("Hello World !", "Information", Messages.getInformationIcon());}
  • 1
  • 2
  • 3

在这里插入图片描述

打包及安装

在这里插入图片描述

发布插件

在这里插入图片描述
附录:Idea插件官方文档:
https://www.jetbrains.org/intellij/sdk/docs/tutorials/action_system/working_with_custom_actions.html

天森爱自由

关注

  • 0
  • 0
  • 4
  • 一键三连

打赏

文章很值,打赏犒劳作者一下

IntelliJ IDEA插件开发手册

10-07

IntelliJ IDEA插件开发手册 IntelliJ IDEA插件开发手册 IntelliJ IDEA插件开发手册

表情包

相关推荐

IntelliJ IDEA插件开发指南(一)_ExcellentYuXiao的专栏...

6-4

对于此,IDEA提供了API接口供开发者进行插件开发扩展,但目前来说,网上对于IDEA插件开发的文档大多讲的不是很清楚,自己最近也开发了一个IDEA插件,中间踩了不少坑,在此总结下。 一般来说,开发人员开发的IntelliJ平台插件主要分为如下几类...

Idea插件开发总结_hello world

6-8

1.插件原理 IDEA 提供了一个IntelliJ Platform SDK开发工具包,里面开放了各种API,可以基于这些API拓展定制出自己需要的功能。 其中最重要的是: 程序结构接口(PSI)。这是一组功能,可用于解析文件,构建代码的丰富句法和语义模型以及从此数据...

IDEA插件开发总结

icarusliu的专栏

 3808

前言 IDEA是一个非常强大的工具,对于提高编程效率有非常大的帮助。当然他也不是全能的,有时候的一些需求他可能并没有办法直接满足,这个时候一般就需要通过他的插件来完成了。 目前Idea已经有了非常多的插件可以使用,但有时候可能现有插件并不能满足自己的需求,我就遇到了两个,如生成Bean的Setter方法时,想要同时生成void类型的Setter以及返回Bean类型的Setter方法,并未找到好的插...

Intellij IDEA插件开发入门

weixin_30612769的博客

 627

现今的IDE尽管有如“洪水猛兽”般强大,但要知道再强大的IDE也没法提供给使用者想要的一切功能, 所以IDE一般都提供有API接口供开发者自行扩展。下面以Intellij IDEA 12下的插件开发为例,来看一下如何进一步增强IDE以适应开发者的需求。 1.创建Plugin工程 如果Module SDK中没有可选的SDK,那么点击New新添加一...

干货|IntelliJ IDEA插件开发_中兴开发者社区

6-14

今天他通过实战方式,为我们带来关于IDEA 插件开发全流程,希望给每个想要学习IDEA插件开发的朋友们提供些许帮助。 1.开发环境搭建 2.开发流程 2.1.开发插件访问入口(Action) (1)扩展抽象类AnAction ...

Intellij IDEA插件开发入门_西代零零发_idea 插件开发

6-9

所以IDE一般都提供有API接口供开发者自行扩展。下面以Intellij IDEA 12下的插件开发为例,来看一下如何进一步增强IDE以适应开发者的需求。 1.创建Plugin工程 如果Module SDK中没有可选的SDK,那么点击New新添加一个SDK,目录就选择Intellij...

IntelliJ IDEA插件开发入门教程(一)

csdn_xpw的博客

 2万+

插件开发环境配置 IDEA分为社区版(Community Edition)和旗舰版(Ultimate Edition) 社区版:完全免费,代码开源,但是缺少一些旗舰版中的高级特性。 旗舰版:30天免费,支持全部功能,代码不开源。 开发IDEA插件推荐使用社区版而不是旗舰版,因为社区版是开源的,在开发插件的时候,有源代码调试会比较方便。 插件开发详细步骤 1、下载ID

IntelliJ Idea 常用11款插件(提高开发效率),附优秀主题插件

weixin_44655599的博客

 5472

目录 一、插件安装方式 二、常用插件 1、Background Image Plus 2、Mybatis Log Plugin 3、Grep Console 4、CodeGlance  5、GenerateAllSetter 6、RestfulToolkit 7、Maven Helper  8、JRebel 9、 Json Parser 10、Translati...

IDEA 插件开发入门教程_weixin_33933118的博客

6-6

IntelliJ IDEA 是目前最好用的 JAVA 开发 IDE,它本身的功能已经非常强大了,但是每个人的需求不一样,有些需求 IDEA 本身无法满足,于是我们就需要自己开发插件来解决。工欲善其事,必先利其器,想要提高开发效率,我们可以借助 IDEA 提供的...

IDEA 插件开发入门教程_weixin_34210740的博客

6-17

IntelliJ IDEA 是目前最好用的 JAVA 开发 IDE,它本身的功能已经非常强大了,但是每个人的需求不一样,有些需求 IDEA 本身无法满足,于是我们就需要自己开发插件来解决。工欲善其事,必先利其器,想要提高开发效率,我们可以借助 IDEA 提供的...

idea 插件开发

零零落落的博客

 2286

idea开发插件有2种实现方式,1 devKit(不推荐,只是维护就项目时用到) 2 gradle 2 idea platform sdk https://www.jetbrains.org/intellij/sdk/docs/intro/welcome.html 在这里可以看到,像我们常见,用到 intelijj idea, pyCharm,webStorm 这些工具都是基于Intel...

Idea插件开发(二)——插件的创建打包及发布

zhulier1124的博客

 4436

Idea插件开发(一)——插件基础认识 Idea插件开发(二)——插件分类总结 Idea插件开发(三)——插件创建和发布 接下来直接上手开发,这里要注意我现在开发的时间是2020年中,使用的IntelliJ Idea版本为2020.1,这是一个大版本更新,IDEA居然开始官方支持中文了你敢信。因为目前官网推荐开发插件的是这个版本,所以开发时请注意尽量以官方推荐的版本为主。 开发准备 工欲善其事必先利其器,我们开发插件首先要准备好自己的开发工具: 为IntelliJ Platform开发插件可以使用【Int

IDEA 插件开发入门教程_阿里云云栖号

5-30

IntelliJ IDEA 是目前最好用的 JAVA 开发 IDE,它本身的功能已经非常强大了,但是每个人的需求不一样,有些需求 IDEA 本身无法满足,于是我们就需要自己开发插件来解决。工欲善其事,必先利其器,想要提高开发效率,我们可以借助 IDEA 提供的...

Intellij IDEA插件开发入门_GoodIdea

6-10

所以IDE一般都提供有API接口供开发者自行扩展。下面以Intellij IDEA 12下的插件开发为例,来看一下如何进一步增强IDE以适应开发者的需求。 1.创建Plugin工程 如果Module SDK中没有可选的SDK,那么点击New新添加一个SDK,目录就选择Intellij...

IntelliJ IDEA插件开发基础(中文)

01-12

IntelliJ IDEA插件开发基础(中文)。

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

zhulier1124的博客

 2828

Idea插件开发(一) 本篇文章基于IntelliJ Platform SDK DevGuide抽取主要部分内容。官方详细开发文档请移步官方文档 我们知道JetBrains有一大堆的开发工具,比如IntelliJ IDEA,从17年开发发现这个强大的IDE后我一直给身边的小伙伴安利它,各种人性化的操作让其他Java IDE望尘莫及,它的强大有一部分也来自于丰富的插件扩展支持,本文是本人开发插件后总结了一下经过翻译官方文档并且添油加醋而成,内容和原文档如有出入请留言告知,以下正文。 插件结构-Plugin S

你们要的Intellij IDEA 插件开发秘籍!

 8

https://cloud.tencent.com/developer/article/1348741

IntelliJ IDEA插件开发基础(中文).pdf

01-17

IntelliJ IDEA插件开发基础(中文).pdf

idea插件开发--知识分享插件开发

秦时明月

 31

这篇博客主要分享三方面的内容: 1、idea插件开发的基础知识 2、搭建一个简易的后台 3、实现自己的一个简易插件 最终效果: 1、新建一个插件工程:新建插件工程 2、插件工程可能出现的问题:插件工程可能出现的问题 3、搭建一个简易的后台 3.1、tomcat安装和环境配置 3.2、idea新建sprintboot+mybits项目 tomcat的安装是非常容易的,但是一个不了解后台的同学,要使用idea新建一个sprintboot+mybits项目可能比较麻烦 这里分享一下我的工程代码仅供参考 工程框架

Idea插件开发

qq_44775329的博客

 155

1、使用idea创建项目

Idea插件开发(三)——插件JSL的完整开发过程

zhulier1124的博客

 943

Idea插件开发(一)——插件的分类及基础认识 Idea插件开发(二)——插件的创建打包及发布 Idea插件开发(三)——插件JSL的完整开发过程 上篇主要介绍了通过两种模式创建、打包、发布插件,本篇我将记录自己写的插件 JSL 完整的开发过程,插件开发也遵从软件开发流程,同样拥有开发周期和迭代升级的维护周期,当然这完全取决于开发者。 JSL(Jpa Sql Log) 插件开源地址 Jpa Sql Log:https://github.com/jwwam/jpa-sql-log 插件功能描述 这是我开

CSDN开发者助手,常用网站自动整合,多种工具一键调用

CSDN开发者助手由CSDN官方开发,集成一键呼出搜索、万能快捷工具、个性化新标签页和官方免广告四大功能。帮助您提升10倍开发效率!

idea java 插件开发_Intellij IDEA插件开发入门详解

weixin_32797081的博客

 78

现今的IDE尽管有如“洪水猛兽”般强大,但要知道再强大的IDE也没法提供给使用者想要的一切功能,所以IDE一般都提供有API接口供开发者自行扩展。下面以Intellij IDEA 12下的插件开发为例,来看一下如何进一步增强IDE以适应开发者的需求。1.创建Plugin工程如果Module SDK中没有可选的SDK,那么点击New新添加一个SDK,目录就选择Intellij的安装位置即可。创建出的...

c语言数组练习题及答案

12-16

这东西对基础不扎实的同学最好,基础好的也可以来看看. 这东西对基础不扎实的同学最好,基础好的也可以来看看.

C#WinForm获取子窗口返回值

04-10

C#WinForm获取子窗口返回值 及窗口取消的处理

子窗体传值回主窗体显示

03-16

可执行的一个初学者小程序,初学者新学“委托”语法练习。关于在一个主窗体中打开一个子窗体。然后在子窗体输入信息。并能返回到主窗体中显示

C# 子窗体传值给父窗体

04-21

C# 子窗体传值给父窗体

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

  • 关于我们
  • 招贤纳士
  • 广告服务
  • 开发助手
  • 400-660-0108
  • [email protected]
  • 在线客服
  • 工作时间 8:30-22:00
  • 公安备案号11010502030143
  • 京ICP备19004658号
  • 京网文〔2020〕1039-165号
  • 经营性网站备案信息
  • 北京互联网违法和不良信息举报中心
  • 网络110报警服务
  • 中国互联网举报中心
  • 家长监护
  • Chrome商店下载
  • ©1999-2021北京创新乐知网络技术有限公司
  • 版权与免责声明
  • 版权申诉
  • 出版物许可证
  • 营业执照

天森爱自由

码龄5年 暂无认证

35

原创

9万+

周排名

8万+

总排名

10万+

访问

等级

1276

积分

39

粉丝

20

获赞

9

评论

88

收藏

持之以恒

勤写标兵Lv1

私信

关注

热门文章

  • 每天一个adb命令:pm 命令详解  17940
  • Appium-java API详解  12421
  • Jmeter访问HTTPS请求  11532
  • 每天一个adb命令:am 命令详解  8399
  • TestNG使用总结  5605

分类专栏

  • git2篇
  • 读书笔记4篇
  • 性能测试2篇
  • mac工具3篇
  • linux1篇
  • adb9篇
  • junit2篇
  • testng1篇
  • 接口测试2篇
  • python3篇
  • appium3篇
  • 编程语言7篇

最新评论

  • Jmeter访问HTTPS请求

    五毒兽: 写的啥玩意儿啊?Chrome中导入该域名证书,在更多工具-设置-管理证书的地方,找到该证书 也看到啥证书啊

  • 流式断言器AssertJ入门介绍

    eBusinessMan1993: good

  • 流式断言器AssertJ入门介绍

    范学博 回复 嫩草终结者: 奥奥奥,晓得啦

  • 流式断言器AssertJ入门介绍

    嫩草终结者 回复 范学博: import static org.assertj.core.api.Assertions.* 引入这个以后,就有assertThat方法了,不需要自己写

  • 流式断言器AssertJ入门介绍

    范学博: assertThat是个方法吗,需要自己写吗?

最新文章

  • 接口测试那些事儿
  • spring boot深入及启动原理探究
  • 常用HTML标签简介

2020年3篇

2018年6篇

2017年16篇

2016年16篇

目录

  1. idea插件开发入门
  2. 插件用途
  3. 工程创建
  4. 配置文件
  5. Action实现
  6. 开发语法
    1. 常用对象
    2. 常用方法
  7. 运行效果
  8. 打包及安装
  9. 发布插件

举报

你可能感兴趣的:(intellij,idea,java)