idea插件开发---extensionpoints(代码片段)

流子 流子     2022-10-22     667

关键词:

通过在插件中定义扩展点,您可以允许其他插件扩展您的插件的功能。有两种类型的扩展点:

接口扩展点允许其他插件使用代码扩展您的插件。当您定义接口扩展点时,您指定了一个接口,其他插件将提供实现该接口的类。然后,您将能够在这些接口上调用方法。

Bean扩展点允许其他插件使用data扩展您的插件。您指定扩展类的完全限定名称,其他插件将提供将转换为该类实例的数据。

声明扩展点
您可以在插件配置文件plugin.xml的和部分中声明扩展和扩展点。

要在插件中声明扩展点,请在plugin.xml中添加一个部分。然后插入一个子元素,该子元素定义扩展点名称和允许扩展插件功能的 bean 类或接口的名称,分别在,和属性中。namebeanClassinterface

myPlugin /META-INF /plugin.xml

my.plugin
<extensionPoint
    name="myExtensionPoint2"
    interface="com.example.MyInterface"/>
该name属性为此扩展点分配一个唯一名称。使用扩展点所需的完全限定名称是通过前缀+ .:my.plugin.myExtensionPoint1和my.plugin.myExtensionPoint2.

该beanClass属性设置一个 bean 类,该类指定一个或多个使用该注解进行@Attribute注解的属性。请注意,bean 类不遵循 JavaBean 标准。

该interface属性设置了一个接口,该接口有助于扩展点的插件必须实现。

该area属性决定了扩展将被实例化的范围。由于扩展应该是无状态的,所以不建议使用非默认。必须是IDEA_APPLICATION应用程序(默认)、IDEA_PROJECT项目或IDEA_MODULE模块范围之一。

对扩展点有贡献的插件将从plugin.xml文件中读取这些属性。

请参阅捆绑插件 API 源部分,解释如何将扩展点源公开给其他插件。

样本
MyBeanClass为了澄清这一点,请考虑上述plugin.xml文件中使用的以下示例bean 类:

myPlugin /src /com /myplugin /MyBeanClass.java

public class MyBeanClass extends AbstractExtensionPointBean

@Attribute(“key”)
public String key;

@Attribute(“implementationClass”)
public String implementationClass;

public String getKey()
return key;

public String getClass()
return implementationClass;


有关如何提供智能完成/验证的信息,请参阅扩展属性代码洞察。

对于anotherPlugin中的上述扩展点用法,将如下所示(另请参见声明扩展):

anotherPlugin /META-INF /plugin.xml

another.plugin

my.plugin

<myExtensionPoint2
    implementation="another.MyInterfaceImpl"/>
使用扩展点 要在运行时引用所有已注册的扩展实例,请声明传入与其在 plugin.xml 中的声明ExtensionPointName匹配的完全限定名称。

myPlugin /src /com /myplugin /MyExtensionUsingService.java

public class MyExtensionUsingService

private static final ExtensionPointName EP_NAME =
ExtensionPointName.create(“my.plugin.myExtensionPoint1”);

public void useExtensions()
for (MyBeanClass extension : EP_NAME.getExtensionList())
String key = extension.getKey();
String clazz = extension.getClass();
// …



声明的装订线图标允许导航到plugin.xmlExtensionPointName中的相应声明。

动态扩展点
要支持动态插件(2020.1 及更高版本),扩展点必须遵守特定的使用规则:

每次使用都会枚举扩展,并且扩展实例不会存储在任何地方

或者,ExtensionPointListener可以执行数据结构的必要更新(通过注册ExtensionPointName.addExtensionPointListener())

匹配这些条件的扩展点可以通过在声明中添加来标记为动态的:dynamic=“true”

通过Plugin DevKit |突出显示所有非动态扩展点 插件描述符 | 在 IntelliJ IDEA 2020.1 或更高版本中提供Plugin.xml 动态插件验证检查。以前的版本还将该dynamic属性突出显示为“实验性”。

idea插件开发从0入门idea插件开发,idea插件开发教程,如何开发idea插件(代码片段)

idea插件介绍作为一枚程序员,平时最常用的ide就是IntelliJIDEA。平时会用到各种各样的插件,通过插件的使用,提高自己的开发效率。idea具有全局性,安装好插件后,对idea生效,所有的工程均能找到。idea... 查看详情

idea插件开发-helloworld

idea插件开发-helloworld1.本文环境2.新建插件项目build.gradle文件3.新建第一个action4.启动项目并验证插件1.本文环境idea版本=2021.2.2java版本=11电脑=macbook确认是否安装了下面插件:2.新建插件项目使用gradle创建选择位置新建成的项目结... 查看详情

实践idea插件开发(代码片段)

目录为什么开发idea插件?开发插件流程(最简单的使用场景)配置IntelliJPlatformPluginSDK创建一个插件项目启用PluginDevKit创建一个动作action打包插件安装插件  以前觉得开发idea的人真厉害啊,后来工作中用到各种插... 查看详情

idea工具java开发之常用插件mybatis插件idea安装插件方法

◆freemybatisplugin作用时进行代码跟踪;安装好之后代码上会出现绿色箭头点击就会进入相应的引用的位置上  一、安装插件   查看详情

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

这篇博客主要分享三方面的内容:1、idea插件开发的基础知识2、搭建一个简易的后台3、实现自己的一个简易插件大的团队协作,每个人都会有自己的一些心得体会或者自己写的方便使用的工具类,自定义view等,当一个新人入职... 查看详情

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

这篇博客主要分享三方面的内容:1、idea插件开发的基础知识2、搭建一个简易的后台3、实现自己的一个简易插件大的团队协作,每个人都会有自己的一些心得体会或者自己写的方便使用的工具类,自定义view等,当一个新人入职... 查看详情

idea插件开发(代码片段)

文章目录前言插件工程创建插件工程结构plugin.xmlPluginActionAction是什么创建Action注册Action快速创建Action运行插件打包插件安装插件PluginComponentsComponents类型创建Component获取Component实例持久化PropertiesComponentPersistentStateComponent注册持... 查看详情

idea插件开发(代码片段)

文章目录前言插件工程创建插件工程结构plugin.xmlPluginActionAction是什么创建Action注册Action快速创建Action运行插件打包插件安装插件PluginComponentsComponents类型创建Component获取Component实例持久化PropertiesComponentPersistentStateComponent注册持... 查看详情

idea插件开发-helloworld(代码片段)

idea插件开发-helloworld1.本文环境2.新建插件项目SDK切换build.gradle文件3.新建第一个action4.启动项目并验证插件爬坑1.本文环境idea版本=2021.2.2java版本=11电脑=macbookm1确认是否安装了下面插件:2.新建插件项目使用gradle创建... 查看详情

idea从零到精通08之idea常用插件提升开发效率

文章目录作者简介引言导航热门专栏推荐概述一、插件安装方式二、在Idea中无法直接安装插件三、常用插件1.ECTranslation2.GrepConsole3.CodeGlance4.NyanProgressBar5.PresentationAssistant6.SequenceDiagram7.AlibabaJavaCodingGuidelines8.RainbowBrackets9.Highl 查看详情

idea开发工具的插件开发(一)入门

...ew一个action文件,如下图操作说明:(1)groups表示自己的插件在对应的那个idea的菜单出现,例子中选择了Help,那么之后,插件开发完成后就可以去help中找到插件(2)后面的Actions和achor表示的具体位置(3)最下面的keyboardshortcut... 查看详情

强烈推荐16款idea插件,让你的开发速度飞起来!

...s)当前使用的IDEA版本是2020.1。随着IDEA版本的升级,有些插件不再支持,而有些插件变成了收费插件,这些插件将不再推荐。以下列举的,都是亲测可以在2020.1版本的IDEA中使用的插件。1google-java- 查看详情

强烈推荐16款idea插件,让你的开发速度飞起来!

...s)当前使用的IDEA版本是2020.1。随着IDEA版本的升级,有些插件不再支持,而有些插件变成了收费插件,这些插件将不再推荐。以下列举的,都是亲测可以在2020.1版本的IDEA中使用的插件。1google-java- 查看详情

Intellij idea 插件开发——热重载?

】Intellijidea插件开发——热重载?【英文标题】:Intellijideaplugindevelopment-hotreload?【发布时间】:2018-04-2119:50:47【问题描述】:我正在为intellijidea创建一些插件。每次我更改代码时,我都需要重新运行应用程序。有没有像热重载... 查看详情

idea插件开发---extensions

扩展是插件扩展IntelliJ平台功能的最常用方式,这种方式不像向菜单或工具栏添加操作那么简单。以下是使用扩展完成的一些最常见的任务:com.intellij.toolWindow扩展点允许插件添加工具窗口(显示在IDE用户界面两侧的... 查看详情

idea常用插件---提升开发效率究极利器

IDEA常用插件—提升开发效率究极利器IDEA版本2020.1以下按照★的个数来评分,满分五★一、外观美化MaterialThemeUI----个性化的字体、颜色,背景颜色★★★★★使用:在线安装好,然后看https://www.pianshen.com/article/71141808475... 查看详情

idea插件开发---services

服务getService()是当您的插件调用相应ComponentManager实例的方法时按需加载的插件组件(请参阅类型)。IntelliJ平台确保仅加载一个服务实例,即使它被多次调用。服务必须具有用于服务实例化的实现类。服务也可能有一... 查看详情

推荐10个nb的idea插件,开发效率至少提升一倍

分享一下好用的idea插件,亲测好用原创:https://zhuanlan.zhihu.com/p/141065556 查看详情