首页 > 其他分享 >idea插件开发(1)-第一个Idea插件

idea插件开发(1)-第一个Idea插件

时间:2023-10-04 12:06:40浏览次数:42  
标签:idea 插件 intellij Idea Gradle com IntelliJ


idea插件开发和传统的java项目不太一样,开发前有三个限制:

  • Gradle:类似maven的构建工具,建议采用V8.1+版本;
  • javaSDK:正常要求java11或java17版本;
  • Intellij Platform SDK:需要注意这是插件开发的sdk,不是javaSDK。建议下载JetBrains Runtime version 17.0.6

一、开发前准备知识

1、What's Intellij

intellij-community源码,任何人都可以使用。但基于此平台开发的软件比如idea、phpStorem可能是收费的。

2、环境要求

         idea插件开发的硬性开发环境只有两个:Intellij platformSDK和Gradle。使用IntelliJ idea创建插件项目的过程中提示下载哪个版本的SDK,但为了清楚此处还是要着重描述一下:

  • Gradle:建议采用8.1+版本,不同的IntelliJ idea对集成的Gradle的版本要求不同,不同的Gradle对javaSDK的版本要求也不同,在官网上有对应的关系表,详细可以查看Compatibility Matrix
  • PlatformSDK:建议采用JetBrains Runtime version 17.0.6版本,注意和Gradle兼容即可,也可以采用其它版本的SDK,比如Amazon Corretto 11.0.16.1等;

3、Idea插件类型

      用IDEA创建插件时,共有两个选项:plugin和theme,但按插件的实际用途可细分为如下几类,除UI Themes外全部属于plugin范畴。

  • UI Themes(UI主题)
  • Custom language support (自定义编程语言支持,如Kotlin)
  • Framework integration (框架集成,例如Spring属于此类)
  • Tool integration (工具集成整合,如Maven、Gradle、Git)
  • User interface add-ons (用户界面组件,例如Random Background)

4、必须要掌握的编程技术

  • Java 或 Kotlin:掌握其中一种语言即可
  • Gradle构建工具:掌握简单的配置即可,不需要学习Groovy编程
  • Swing:整个IDEA界面组件用的都是Swing,不能使用AWT

5、可参考的文档

        Idea开发网上可参考的文档非常少,唯一可依赖的就是官方文档和研读Github上一些开源插件的源码,下面列出了开发idea插件要经常用到的几个网址。

二、Idea中创建ide插件工程

1、创建插件工程

1、新建 工程,选择【文件】-【新建】-【项目】,在弹出窗口选择IDE插件。如下图所示:

idea插件开发(1)-第一个Idea插件_intellij

idea插件开发(1)-第一个Idea插件_插件开发_02编辑

【注意事项】:JDK处一定要选择合适版本的jdk,可在JDK选择下拉选框中选择需要的版本进行下载。如果Intellij idea是2020.3+版本要求最低java11,Intellij idea是2022.2+版本要求最低java17。

2、设置 项目,选择【文件】 -【项目结构】,设置SDK和编译版本,如下图所示:

idea插件开发(1)-第一个Idea插件_Gradle_03

idea插件开发(1)-第一个Idea插件_intellij_04编辑

【注意事项】:此处的语言级别和SDK并不需要一一匹配,但建议选择匹配的级别,这样可以在后续编译代码过程中减少一些没必要的麻烦。

3、设置 Gradle,选择【首选项】-【构建、执行、部署】-【构建工具】-【Gradle】,修改下图红框内的默认内容为下图所示:

idea插件开发(1)-第一个Idea插件_java_05

idea插件开发(1)-第一个Idea插件_java_06编辑

4、创建好后项目目录大概如下图所示(各个配置文件的配置方法会在下一章节中进行详细讲解,本地只是选保证插件可以正常运行):

 

idea插件开发(1)-第一个Idea插件_ide_07

idea插件开发(1)-第一个Idea插件_java_08编辑

【注意事项】:最新版本的idea创建的源码路径是src/main/kotlin,如果用java开发的话只需用重构功能把kotlin改名为java即可。

2、创建第一个Action文件

        ide插件定义的点击事件称为Action,需要继承AnAction类。本例会在Idea的【工具】菜单栏中添加一个名为【通知】的新菜单,点击后以气泡的方式弹出一句提示语。选择【文件】-【新建】-【Plugin DevKit】-【Action】,会显示如下设置页面,熟悉开发后不需要用此向导;

idea插件开发(1)-第一个Idea插件_插件开发_09

idea插件开发(1)-第一个Idea插件_插件开发_10编辑

  • 操作ID:整个插件范围内全局唯一;
  • 类名:插件的java类的名称或全路径;
  • 名称:显示在菜单栏上的名称;
  • 描述:随便写,主要是为了方便记忆,和插件最终显示无关;
  • 添加到组--组:插件要添加到哪个菜单里,因为我们是在【工具】栏中添加,所以选择【ToolsMenu】;
  • 添加到组--操作:组中已有的菜单,和定位标记一起来确定新创建的菜单的显示位置,这里选择【SmartSearchActoin】
  • 添加到组-定位标记:插件在菜单中的显示位置;

       以上设置好后,在名为【FirstTest.java】类中添加如下代码实现:

import com.intellij.notification.Notification;
import com.intellij.notification.NotificationDisplayType;
import com.intellij.notification.NotificationGroup;
import com.intellij.notification.Notifications;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.ui.MessageType;

public class FirstTest extends AnAction {

    @Override
    public void actionPerformed(AnActionEvent e) {
        // TODO: insert action logic here
        NotificationGroup notificationGroup = new NotificationGroup("testid", NotificationDisplayType.BALLOON, false);
        /**
         * content :  通知内容
         * type  :通知的类型,warning,info,error
         */
        Notification notification = notificationGroup.createNotification("测试通知", MessageType.INFO);
        Notifications.Bus.notify(notification);

    }
}

idea插件开发(1)-第一个Idea插件_Gradle_11

        至此,一个简单的idea插件就制作完成了。

3、编译运行插件

 1、编译,点击右侧Gradle图标,然后双击【Tasks】-【build】-【build】,因为要下载相应的依赖jar包,此处可能会执行十几分钟。

idea插件开发(1)-第一个Idea插件_插件开发_12

idea插件开发(1)-第一个Idea插件_java_13编辑

 2、运行,点击右侧Gradle图标,然后双击【Tasks】-【intellij】-【runIde】,此处会重启一个新的idea窗口专门用于测试插件,支持调试。

idea插件开发(1)-第一个Idea插件_ide_14

idea插件开发(1)-第一个Idea插件_Gradle_15编辑

3、测试,稍等几秒会打开一个新的idea做为测试环境(开发的插件会自动安装在新的idea中),新建一个测试project,然后打开【Tools】菜单栏,会看到一个名为【通知】的菜单,点击后会在右下角弹出一句提示,如下图所示:

idea插件开发(1)-第一个Idea插件_java_16

idea插件开发(1)-第一个Idea插件_java_17编辑

4、本地发布

        另一种测试方式就是本地打包,然后集成到开发的idea, 方法是先打包:

idea插件开发(1)-第一个Idea插件_Gradle_18

idea插件开发(1)-第一个Idea插件_intellij_19编辑

         再从本地磁盘安装

idea插件开发(1)-第一个Idea插件_java_20

idea插件开发(1)-第一个Idea插件_java_21编辑

        然后重启idea。

三、打包发布插件到应用市场

        发布过程参考官方文档即可:

1、给插件签名

2、发布插件

四、更好的学习插件开发

        下面标红的为重点内容

1、官方文档

第一部分 — plugins

        描述如何创建可以扩展 IntelliJ 平台的插件。包括有关如何设置项目、注册扩展点、针对 IntelliJ 平台的特定版本以及如何打包、部署和测试插件的详细信息。

第二部分——Base Platform

        描述架构的基础层,它提供许多功能和实用程序,例如组件模型、用户界面、文档和编辑器、虚拟文件系统、设置、线程和后台任务。基础平台层主要包括不针对语言特性或解析的 IntelliJ 平台的功能。

第三部分——Project Model

        记录项目模型,它表示当前加载项目的文件和配置,以及用于构建项目的构建系统。

第四部分——PSI

        程序结构接口 (PSI) 为许多不同的文件类型构建句法和语义模型。本节介绍如何使用 PSI、导航和操作语法树,还介绍了强大的引用系统,它允许语法树节点引用语义模型中的项目。它还详细说明了 PSI 如何创建和使用索引。

第五部分——Features

        描述如何扩展使用 PSI 层的各种功能并与之交互,例如代码完成、导航、Alt+Enter项目、意图、重构等。另请参阅下面的自定义语言部分,了解仅在添加对新语言的支持时适用的特定于语言的功能。

第六部分——Testing

        描述用于编写涵盖插件功能的自动化测试的可用基础设施。

第七部分 — Custom Languages

        插件经常扩展对现有语言的支持,例如向 Java 文件添加检查。本节介绍如何向 IntelliJ 平台添加对默认不支持的新语言的支持,创建解析器、句法和语义模型,以及构建在其上的所有功能。

第八部分 — Product Specific

        IntelliJ 平台中的许多功能与语言和产品无关。例如,代码检查在 Java 中的工作方式与在 Ruby 中的工作方式相同;只是语法树和语义信息不同。本节介绍特定于产品的功能,例如特定的项目模型差异以及如何在插件中定位它们。

第九部分 — Custom IDEs

        记录如何使用 IntelliJ 平台创建新的自定义 IDE,而不是现有产品(例如 WebStorm 或 Android Studio)的插件。

第十部分——Themes

        描述如何为基于 IntelliJ 平台的 IDE 创建主题。包括有关如何在 JetBrains Marketplace 上设置、自定义、构建和发布主题项目的详细信息。

附录I——Resources

        指向有用资源的链接、词汇表扩展点和侦听器列表、有关如何探索 IntelliJ 平台 API学习资源的提示。

附录 II — API and Compatibility

        有关验证插件兼容性的信息和向后不兼容的API 更改列表,以及IntelliJ 平台每个主要版本中的显着更改和新功能。

附录 III — 工具

       Gradle IntelliJ 插件等常用工具的参考和使用指南。

2、插件开发需要关注的idea文件路径

        如果是单独安装的软件,则目录结构如下:

Configuration (idea.config.path):~/Library/Application Support/JetBrains/IntelliJIdea2022.2

Plugins (idea.plugins.path): ~/Library/Application Support/JetBrains/IntelliJIdea2022.2/plugins

System (idea.system.path): ~/Library/Caches/JetBrains/IntelliJIdea2022.2

Logs (idea.log.path): ~/Library/Logs/JetBrains/IntelliJIdea2022.2

        如果是通过Jetllij Toolbox App安装的idea,则目录结构如下:

Configuration (idea.config.path): ~/Library/Application Support/JetBrains/IntelliJIdea2022.2

Plugins (idea.plugins.path): ~/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U

System (idea.system.path): ~/Library/Caches/JetBrains/IntelliJIdea2022.2

Logs (idea.log.path): ~/Library/Logs/JetBrains/IntelliJIdea2022.2 



标签:idea,插件,intellij,Idea,Gradle,com,IntelliJ
From: https://blog.51cto.com/arch/7701412

相关文章

  • Jenkins List Git Branches插件 构建选择指定git分支
    ListGitBranchesParameter|JenkinspluginAddsabilitytochoosefromgitrepositoryrevisionsortagshttps://plugins.jenkins.io/list-git-branches-parameter/1、安装组件  ListGitBranches2、验证功能1)新建任务 2)新增构建参数 3)选择git仓库我这里选择gitee,其他......
  • IDEA安装教程
    首先先下载一个压缩包,里面安装包破译插件都有。通过百度网盘分享的文件:JetBrain…zip链接:https://pan.baidu.com/s/1mBQUacDIf39AJtR-wGZ-bw提取码:P95C复制这段内容打开「百度网盘APP即可获取」鼠标右击【IntelliJIDEA2022】压缩包(win11及以上系统需先点击“显示更......
  • Better Input:VSCode插件开发指南
    更好的阅读体验?0.准备工作先安装(更新)node.js和nmpnode更新去Node.js官网下载最新版本,然后重新安装在原来的安装路径下(第一次下载可只进行第三步)node-v查看当前版本是否是最新版本wherenode查看之前的安装路径去Node.js官网下载LTS版本执行node-v查看现......
  • mysql在安装group_replication插件时,报错ERROR 1126"can't open share library xxxx g
    问题描述:mysql在安装group_replication插件时,报错ERROR1126"can'topensharelibraryxxxxgroup_replication.so",如下所示:数据库:MySQL8.0.27系统:rhel7.31、问题重现mysql>INSTALLPLUGINgroup_replicationSONAME'group_replication.so';ERROR1126(HY0......
  • jenkins教程:Publish Over SSH插件远程ssh执行命令
    PublishOverSSHjenkins构建完成后需要一键发布,结构如下A服务器svnB服务器jenkinsC服务器应用服务器B从A拉取代码后打包成war,然后向C服务器拷贝war包这里解决的就是远程拷贝问题1.首先安装jenkinsSSH插件打开Jenkins的“系统管理>管理插件”,选择“可选插件”,在输入框中输入“......
  • CAD快捷键命令大全:加载插件、图层管理器及变动快捷键
    1:cad加载插件快捷键命令cad加载插件快捷键命令在AutoCAD(2016)中,通过快捷键命令"ap"可以加载插件。加载方法:打开CAD,输入加载插件快捷键命令"ap",回车。进入插件加载对话框。选择永久性加载来一次性加载插件,不需二次加载。点击添加,找到插件位置,选中插件,点击打开。添加进来后,点击关闭......
  • 打造个人的代码编辑器,27 个实用的 Visual Studio Code 扩展插件,让工作效率翻倍
    打造个人的代码编辑器,27个实用的VisualStudioCode扩展插件,让工作效率翻倍。VisualStudioCode(VSCode)是一个知名且评价很高的代码编辑器,具有大量功能和扩展以增强开发体验。使用VSCode的主要好处之一是它的灵活性,允许开发人员根据他们的特定需求对其进行自定义。此外,V......
  • 支持复制粘贴进行翻译的chrome浏览器插件
    下载安装https://chrome.google.com/webstore/detail/translator-dictionary-acc/bebmphofpgkhclocdbgomhnjcpelbenh/related?hl=zh-CN界面设置常用语言历史记录......
  • VScode中下载了插件但是无法找到SSH Target连接服务器的解决方法(CANNOT find SSH Targ
    VSCode版本vscodeversion:(version1.82)已下载扩展installedextensions:Remote-SSHv0.106.4Remote-SSH:EditingConfigurationFilesv0.86.0RemoteDevelopmentv0.24.0WSLv0.81.3几天前我从pycharm转战vscode,在连接服务器时遇到了一些问题。根据一些较为古早的......
  • 浏览器内视频播放插件以edge为例
    针对浏览器内视频播放的扩展目录针对浏览器内视频播放的扩展插件介绍Tampermonkey增强脚本脚本使用场景安装教程插件介绍Tampermonkey是一款免费的浏览器扩展和最为流行的用户脚本管理器。虽然有些受支持的浏览器拥有原生的用户脚本支持,但Tampermonkey将在用户脚本管......