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的主要内容,如果未能解决你的问题,请参考以下文章
scala配置intellij IDEA15.0.3环境及hello world!
Go语言(IDEA下+Eclipse下)Hello World