idea插件开发- hello world

Posted 阿拉的梦想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了idea插件开发- hello world相关的知识,希望对你有一定的参考价值。

idea插件开发- hello world

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>

以上是关于idea插件开发- hello world的主要内容,如果未能解决你的问题,请参考以下文章

idea插件开发- hello world

scala配置intellij IDEA15.0.3环境及hello world!

Spring Boot Hello World

Go语言(IDEA下+Eclipse下)Hello World

spring Boot学习入门篇-idea开发简单的hello world实例

JAVA开发工具,“保姆级”的IDEA下载和使用安装教程,敲出第一个程序Hello,World