使用DevKit开发插件

搭建开发环境

步骤

使用下面的步骤列表来确保您已经准备好开发您的自定义插件。

  • 在您的计算机上下载IntelliJ IDEA CE源代码。IntelliJ IDEA CE源码并不是插件开发的必要条件,但是使用它可以使的插件的调试更加容易。有关详细说明,请参阅 Getting IntelliJ IDEA Community Edition Source Code 部分的Check Out And Build Community Edition。请注意,下载源码这一步并不是开发插件所必需的。
  • 必须在IntelliJ IDEA中启用DevKit插件。
  • 必须为您的IDEA配置IntelliJ Platform SDK。有关更多信息,请参见下面。

配置IntelliJ平台SDK

为配置插件开发环境,请执行以下操作:

  • 单击 File | Project Structure ,在打开的窗口下创建新的 * IntelliJ Platform SDK* :

  • 指定 IntelliJ IDEA Community Edition 的安装文件夹作为主目录。

警告: 您可以使用 IntelliJ IDEA Ultimate 作为替代方案,但只能用Community Edition版本调试核心代码。

选择1.8作为默认的Java SDK版本。有关创建1.8版本的JSDK说明,请参阅IntelliJ构建配置的 [Check Out And Build Community Edition](```Check Out And Build Community Edition``) 部分。

  • 在SDK设置的Sourcepath选项中,单击Add按钮:

指定IntelliJ IDEA Community Edition版的源代码目录:

  • 指定SandboxHome目录。
    Sandbox Home目录存储了IDE开发实例的设置。下面显示的是MacOSX上用户默认的 Sandbox Home 目录。任何目录都可以作为 Sandbox Home 的路径。可以使用省略号按钮(如下所示)自定义位置。

有关默认 Sandbox Home 主目录位置和内容的详细信息,请参阅IDE Development Instances

创建插件工程

本节将说明如何使用New Project向导从头创建一个新的插件项目。通常,您可以选择导入现有项目或导入外部模块项目。您还可以向现有的 IntelliJ Platform 项目添加一个新的插件模块。有关详细信息,请参阅IntelliJ IDEA Web Help

创建IntelliJ平台插件项目

  • 在主菜单上,选择 File | New | Project ,然后 New Project 向导将会启动。

  • 设置 * IntelliJ Platform Plugin* 项目类型
  • 单击 Next
  • 设置所需的项目名称
  • 单击 Finish 生成项目结构文件
  • 如果需要自定义项目设置,请打开 File | Project Structure

创建IntelliJ平台插件模块

  • 选择 File | New | Module ,然后选择 IntelliJ Platform Plugin 模块类型。

  • 输入您想要的插件名。
  • 转到 File | Project Structure ,选择新创建的 IntelliJ Platform SDK 作为插件模块的默认SDK:

创建Action

您的插件可以通过向菜单和工具栏添加新的选项来自定义IntelliJ平台的UI。IntelliJ平台提供了AnAction类,每次选择菜单项或单击工具栏按钮时都会调用它的 actionPerformed方法。

要在 IntelliJ Platform 中创建自定义操作,您需要执行两个基本步骤:

  • 在您的插件中,定义一个将自己的选项添加到菜单和工具栏中的行为或一些列行为。
  • 注册您的行为。

本主题概述上述步骤。如需详细资料及示例,请参阅IntelliJ Platform Action System

定义Actions

Action是从AnAction类派生的类。要定义您的操作,在您的插件中,创建一个从 AnAction类派生的Java类。在这个类中,当选择菜单项或工具栏按钮时会调用重写的 actionPerformed方法。
为了了解这个过程,请参照以下从AnAction类派生的TextBox类的代码片段:

public class TextBoxes extends AnAction {
    // If you register the action from Java code, this constructor is used to set the menu item name
    // (optionally, you can specify the menu description and an icon to display next to the menu item).
    // You can omit this constructor when registering the action in the plugin.xml file.
    public TextBoxes() {
        // Set the menu item name.
        super("Text _Boxes");
        // Set the menu item name, description and icon.
        // super("Text _Boxes","Item description",IconLoader.getIcon("/Mypackage/icon.png"));
    }

    public void actionPerformed(AnActionEvent event) {
        Project project = event.getData(PlatformDataKeys.PROJECT);
        String txt= Messages.showInputDialog(project, "What is your name?", "Input your name", Messages.getQuestionIcon());
        Messages.showMessageDialog(project, "Hello, " + txt + "!\n I am glad to see you.", "Information", Messages.getInformationIcon());
    }
}

注意,可以随意的从AnAction类派生出一组类。在这种情况下,您的插件将定义一系列的行为操作。

注册Actions

一旦定义了行为操作或者行为操作系统,就必须注册它们来指定与操作相关联的菜单项或工具栏按钮。您可以按照下列任意一个方法进行注册操作:

  • plugin.xml文件的 <action>部分中注册操作。
  • 从Java代码进行注册操作。

本节提供了一些示例来说明如何进行注册操作。有关更多信息,请参见IntelliJ Platform Action System

在plugin.xml文件中注册Actions

要注册您的操作,请对您的IDEA项目的plugin.xml文件的 <actions>部分进行适当的更改。以下的plugin.xml文件代码片段演示的是如何将菜单组(选项)添加到主菜单中。单击此项使您可以访问 Sample Menu | Text Boxes and Sample Menu | Show Dialog 菜单命令:

<actions>
  <group id="MyPlugin.SampleMenu" text="_Sample Menu" description="Sample menu">
    <add-to-group group-id="MainMenu" anchor="last"  />
       <action id="Myplugin.Textboxes" class="Mypackage.TextBoxes" text="Text _Boxes" description="A test menu item" />
       <action id="Myplugin.Dialogs" class="Mypackage.MyShowDialog" text="Show _Dialog" description="A test menu item" />
  </group>
</actions>

这个plugin.xml文件的代码片段只演示了您可以在中使用的部分元素来注册您的操作。有关用于注册操作的所有元素的信息,请参阅ntelliJ Platform Action System

从Java代码中注册Actions

或者,您可以通过Java代码注册您的操作。有关说明如何从Java代码注册操作的更多信息和示例,请参见IntelliJ Platform Action System

快捷创建Actions

IntelliJ平台提供了 New Action 向导,该向导提供了一些必需的基础操作简化创建Action的方法。它可以帮助您声明Action类,并自动对plugin.xml文件的 <action>部分进行适当的更改。
但是请注意,只能使用该向导向主菜单或工具栏上的现有菜单组添加新操作。如果要创建新的菜单组,然后向此组添加操作,请按照本文档前面的说明进行操作。

使用New Action向导创建并注册Action

  • 在项目中您目标包的上下文菜单上单击 New 或按 Alt + Insert
  • New 菜单上,单击 Action

  • 在新打开的 New Action 页面上,填写以下字段,然后单击OK:

    • Action ID :输入Action的唯一ID。推荐格式:PluginName.ID
    • Class Name :输入要创建的Action类的名称。
    • Name :输入与Action关联的菜单项名称或工具栏按钮的提示。
    • Description :输入Action的描述信息。当聚焦到该Action时您的IDEA会展示此描述。
    • Add to Group 区域中的 GroupsActionsAnchor 选项下,可以指定要添加的新的菜单组,以及相对于其他现有菜单的位置进行创建。
    • Keyboard Shortcuts 区域中,可以为Action指定第一和第二快捷键。

    以上操作完成后,IntelliJ平台将生成一个具有指定类名的 .java文件,并在plugin.xml文件中注册新创建的Action,然后会向模块树视图添加一个节点,并在编辑器中打开新创建的Action文件。

更多信息

有关操作的更多信息,请查看action system documentationactions tutorial

运行和调试插件

您可以直接从IntelliJ IDEA运行和调试插件。您需要配置一个特殊的配置文件(插件运行/调试配置)来指定插件模块,VM 参数和其他特定的选项。当您运行这样的配置文件时,它会启动一个安装了您的插件的IDE。

有关如何更改运行/调试配置文件的信息,请参阅Run/Debug ConfigurationRun/Debug Configuration: Plugin

使用IntelliJ IDEA的调试器,您可以找到运行时错误和异常的来源。

调试插件

  • 在主菜单选择 Run | Debug ,或者按下 Shift+ F9

运行插件

  • 在主菜单选择 Run | Run ,或者按下 Shift+ F10

部署插件

在使用自定义插件之前,需要先通过:构建、安装,然后使用插件管理器启用来部署。

部署插件:

  • 通过调用 Build | Build ProjectBuild | Build Module 来创建您的项目。
  • 准备部署插件。在主菜单中选择 Build | Prepare Plugin Module for Deployment

  • 如果该插件模块不依赖于任何第三方库,那么将创建一个.jar的插件包。否则,将创建一个.zip的压缩文件,它包括项目设置中指定的所有插件库。

  • 从磁盘安装新创建的压缩文件或者jar文件。下文的 editor_basics代码示例将压缩文件/jar文件的插件导入到 editor_basics项目文件夹中:

  • 重新启动IDE,使得插件生效。

使用

当您的插件开发完后,您可以将其发布到插件仓库,以便其他用户可以安装它。您可以选择将其发布到 JetBrains Plugin Repository或其他自定义插件仓库中。

发布到JetBrains Plugin Repository

要将您的插件上传到JetBrains Plugin Repository,您必须先使用您的个人JetBrains帐户登录。

注册JetBrains账户

  • 打开JetBrains Account Center,然后单击 Create Account
  • 在打开的页面中填写 Create JetBrains 表单中的所有字段,然后单击 Register

将插件上传到JetBrains Plugin Repository

  • 使用您个人的JetBrains帐户登录到JetBrains Plugin Repository
  • 在打开的网页上单击 Add new plugin
  • 再打开的 Add new plugin 表单中填写完相应信息,然后单击 Add the plugin 按钮来上传您的插件。

发布到自定义插件仓库

如果计划将插件发布到除 JetBrains Plugin Repository 以外的仓库中,请参阅 Publishing to Custom Plugin Repositories 的文档。

发布了40 篇原创文章 · 获赞 47 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/u010976213/article/details/86539301
今日推荐