idea插件开发- hello world

本文介绍了在IDEA上开发插件的步骤,包括环境配置、新建项目、创建Action以及解决运行时依赖问题。通过一个简单的HelloWorld动作,展示了如何显示对话框。在遇到NoClassDefFoundError时,添加了必要的模块依赖以解决错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.本文环境

idea 版本=2021.2.2
java 版本=11
电脑=macbook m1

在这里插入图片描述
确认是否安装了下面插件:
在这里插入图片描述

2.新建插件项目

使用gradle创建
在这里插入图片描述
选择位置
在这里插入图片描述
新建成的项目结构:
在这里插入图片描述

SDK切换

新建后项目使用的jdk11. 保持不变也能运行,但最好切换到插件SDK
方法如下
在这里插入图片描述
然后默认,选择jdk11
再在project settions 中选择新加的sdk
在这里插入图片描述

build.gradle文件

使用阿里云仓库

plugins {
    id 'org.jetbrains.intellij' version '1.9.0'
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    maven {
        url 'https://maven.aliyun.com/repository/public/'
    }
    mavenLocal()
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}

// See https://github.com/JetBrains/gradle-intellij-plugin/
intellij {
    version = '2021.2.2'
    plugins = ['com.intellij.java']
}
patchPluginXml {
    changeNotes = """
      Add change notes here.<br>
      <em>most HTML tags may be used</em>"""
}
test {
    useJUnitPlatform()
}

必须加上plugins = ['com.intellij.java'] 不然启动会报找不到类。

刷新依赖
在这里插入图片描述

3.新建第一个action

在这里插入图片描述

动作配置
在这里插入图片描述
这样就有了第一个动作类
在这里插入图片描述

动作类中实现第一个hello world

package com.demo;

import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.psi.PsiFile;

public class Action1 extends AnAction {

    @Override
    public void actionPerformed(AnActionEvent e) {
        //获取当前在操作的工程上下文
        Project project = e.getData(PlatformDataKeys.PROJECT);

        //获取当前操作的类文件
        PsiFile psiFile = e.getData(CommonDataKeys.PSI_FILE);
        //获取当前类文件的路径
        String classPath = psiFile.getVirtualFile().getPath();
        String title = "Hello World!";

        //显示对话框
        Messages.showMessageDialog(project, classPath, title, Messages.getInformationIcon());
    }
}

plugin.xml中会自动添加Action信息
在这里插入图片描述

<idea-plugin>
    <id>org.example.ide-plugin-demo2</id>
    <name>Plugin display name here</name>
    <vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor>

    <description><![CDATA[
    Enter short description for your plugin here.<br>
    <em>most HTML tags may be used</em>
    ]]></description>

    <!-- please see https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html
         on how to target different products -->
    <depends>com.intellij.modules.platform</depends>
    <depends>com.intellij.modules.lang</depends>
    <depends>com.intellij.modules.java</depends>

    <extensions defaultExtensionNs="com.intellij">
        <!-- Add your extensions here -->
    </extensions>

    <actions>
        <!-- Add your actions here -->
        <action id="action001" class="com.demo.Action1" text="动作1" description="第一个测试动作">
            <add-to-group group-id="GenerateGroup" anchor="first"/>
        </action>
    </actions>
</idea-plugin>

4.启动项目并验证插件

点启动按钮或runide都可以
在这里插入图片描述
运行后会重新运行一个ide
这个idea 里面默认就安装了我们开发的插件
在这里插入图片描述

新建或随便打开一个项目
然后验证插件是否可以用

类中鼠标右键,找到generate
在这里插入图片描述
找到我们自定义的动作
在这里插入图片描述
弹出了我们设置的弹出框
在这里插入图片描述
第一个插件,到此完成。

爬坑

若启动没问题,运行时报错

NoClassDefFoundError: com/intellij/psi/PsiJavaFile

有依赖,就是一直报找不到类。
报错是NoClassDefFoundError: com/intellij/psi/PsiJavaFile,找不到intellij平台的PsiJavaFile类。

这是一个intellij平台插件兼容性的问题。
笔者猜测IDEA 2020启动插件的时候,默认不再包含Java language PSI Model模块。

因此需要将模块依赖添加到插件的配置文件plugin.xml中,添加进去之后是这样的:

<depends>com.intellij.modules.platform</depends>
<depends>com.intellij.modules.lang</depends>
<depends>com.intellij.modules.java</depends>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值