前言
最近一直都在使用网络上的工具类,所以就想移植到IDEA中使用,也能顺带了解下IDEA插件大致的开发流程,网络上IDEA插件基础资料还是有很多,其他复杂功能则就需要查看官方文档和一些其他的开源项目。
跑通插件开发Demo
新建项目
填写工程名称,工程就可以直接创建成功,最好是选择java开发,kotlin我尝试的时候swing布局会报错
How to build a plugin for IntelliJ-based IDEs :插件教程
Fully-featured GitHub template:插件模版
plugin.xml
插件核心配置文件:
<idea-plugin>
<!-- 插件唯一id,不能和其他插件项目重复,所以推荐使用com.xxx.xxx的格式
插件不同版本之间不能更改,若没有指定,则与插件名称相同 -->
<id>com.your.company.unique.plugin.id</id>
<!-- 插件名称,别人在官方插件库搜索你的插件时使用的名称 -->
<name>Plugin display name here</name>
<!-- 插件版本号 -->
<version>1.0</version>
<!-- 供应商主页和email(不能使用默认值,必须修改成自己的)-->
<vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor>
<!-- 插件的描述 (不能使用默认值,必须修改成自己的。并且需要大于40个字符)-->
<description><![CDATA[
Enter short description for your plugin here.<br>
<em>most HTML tags may be used</em>
]]></description>
<!-- 插件版本变更信息,支持HTML标签;
将展示在 settings | Plugins 对话框和插件仓库的Web页面 -->
<change-notes><![CDATA[
Add change notes here.<br>
<em>most HTML tags may be used</em>
]]>
</change-notes>
<!-- 插件兼容IDEAbuild 号-->
<idea-version since-build="173.0"/>
<!-- 插件所依赖的其他插件的id -->
<depends>com.intellij.modules.platform</depends>
<extensions defaultExtensionNs="com.intellij">
<!-- 声明该插件对IDEA core或其他插件的扩展 -->
</extensions>
<!-- 编写插件动作 -->
<actions>
</actions>
</idea-plugin>
build.gradle
项目配置文件:
plugins {
id("java")
id("org.jetbrains.kotlin.jvm") version "1.6.20"
id("org.jetbrains.intellij") version "1.7.0"
id("org.jetbrains.changelog") version "1.3.0"
// Gradle Qodana Plugin
id("org.jetbrains.qodana") version "0.1.12"
}
/** 当前插件版本 **/
group = "com.example"
version = "1.0-SNAPSHOT"
/** 依赖库 **/
repositories {
mavenCentral()
}
/** 当前开发的IDEA版本 **/
intellij {
// 开发Android Studio 依赖设置,localPath.set与version.set不能同时存在,因为已经拿到版本信息
localPath.set("/Applications/Android Studio.app/Contents")
plugins.set(listOf("Kotlin","android","git4idea","java"))
// version.set("2022.2")
// type.set("IC") // Target IDE Platform
// // 开发依赖插件
// plugins.set(listOf(/* Plugin Dependencies */))
}
tasks {
// Set the JVM compatibility versions
withType<JavaCompile> {
sourceCompatibility = "11"
targetCompatibility = "11"
}
withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions.jvmTarget = "11"
}
patchPluginXml {
// 插件适用的IDEA版本范围
sinceBuild.set("213")
untilBuild.set("223.*")
// 版本更新记录
changeNotes.set("")
}
signPlugin {
certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))
privateKey.set(System.getenv("PRIVATE_KEY"))
password.set(System.getenv("PRIVATE_KEY_PASSWORD"))
}
publishPlugin {
token.set(System.getenv("PUBLISH_TOKEN"))
}
}
Action :动作
New -> Plugin DevKit -> Action
Action ID: 当前Action的唯一Id
Class Name:Action对应处理类的类名
Name:插件显示在菜单上的名称
Description:鼠标悬浮于按钮上时,界面底部显示的描述
Add to Group:功能按钮的添加位置、Action:设置Action在组中的位置、Anchor:相对于选中Action的前或后
生成的Action类
public class TestAction extends AnAction { @Override public void actionPerformed(AnActionEvent e) { // TODO: insert action logic here } }
自动生成对应Plugin配置信息
<action id="test" class="com.example.decrypt_idea_plugin.TestAction" text="测试" description="测试"> <add-to-group group-id="ToolsMenu" anchor="first"/> </action>
添加弹窗代码
import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.ui.Messages; public class TestAction extends AnAction { @Override public void actionPerformed(AnActionEvent e) { Messages.showInfoMessage("测试","测试弹窗"); } }
- 编译运行
点击右侧Gradle面板->Tasks->Intellij->runIde
,运行启动一个指定版本的idea
or
有个Run Plugin
则可以,直接点击run图标
- 点击菜单栏
Tools
,就能找到刚刚编写动作测试
,点击就会触发弹窗提示 - 打包插件并部署
点击右侧Gradle面板->Tasks->Intellij->buildPlugin
,编译产物左侧build->distributions
目录下
安装方式如下
版权属于:Monster_4y
本文链接:https://blog.zmonster.top/108.html
转载时须注明出处及本声明