目录
为什么开发idea插件?
开发插件流程(最简单的使用场景)
配置 IntelliJ Platform Plugin SDK
创建一个插件项目
启用 Plugin DevKit
创建一个动作action
打包插件
安装插件
以前觉得开发idea的人真厉害啊,后来工作中用到各种插件,也不禁感叹,这些插件又是个什么玩意,是谁开发的啊,真厉害啊~
如今,领导安排,我也要改公司的插件了~~~
目前已有插件并不能真的完全满足自己的需求。举个简单的栗子,比如,tomcat部署应用后,我想清除weapps下的应用,怎么办?
环境准备:jdk11、idea
IntelliJ Platform Plugin SDK 就是开发 IntelliJ 平台插件的SDK, 是基于 JDK 之上运行的
3、创建好 IntelliJ Platform Plugin SDK 后,选择左侧栏 Project Settings 下的 Projects,在 Project SDK 下选择刚创建的 IntelliJ Platform Plugin SDK。
工程创建成功,工程目录如下,plugin.xml是核心配置文件:
核心配置(plugin.xml)文件说明 :
com.your.company.unique.plugin.id
CJPlugin
1.0
YourCompany
most HTML tags may be used
]]>
most HTML tags may be used
]]>
com.intellij.modules.platform
复制代码
Plugin DevKit 是 IntelliJ 的一个插件,它使用 IntelliJ IDEA 自己的构建系统来为开发 IDEA 插件提供支持。开发 IDEA 插件之前需要安装并启用 Plugin DevKit 。
打开 IDEA,导航到 Settings | Plugins,若插件列表中没有 Plugin DevKit,点击 Install JetBrains plugin,搜索并安装。
action创建完成后,会自动在plugin.xml配置文件中生成配置
编写action
package com.cjian.ideaplugin;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
/**
* @Author: cjian
* @Date: 2022/9/22 19:43
* @Des:
*/
public class ClearAction extends AnAction {
private static final String MESSAGE = "Sure to clear hot deploy?";
@Override
public void actionPerformed(AnActionEvent event) {
// TODO: insert action logic here
Project project = event.getData(PlatformDataKeys.PROJECT);
int txt = Messages.showOkCancelDialog(MESSAGE, "Clear hotDeploy", Messages.getOkButton(), Messages.getCancelButton(), Messages.getInformationIcon());
Messages.showMessageDialog(project, String.valueOf(txt), "Result", Messages.getInformationIcon());
}
}
和我正常调试java代码一样,也可以在需要的位置打上断点,这里就不演示了,我们直接看打包
如果插件没有依赖任何 library,插件会被打包成一个 .jar
,否则会被打包成一个 .zip
,zip 中包含了所有的插件依赖
jar类型的插件包:
PluginDemo.jar/ com/foo/... ... ... META-INF/ plugin.xml
zip类型的插件包:
PluginDemo.zip/ lib/ libfoo.jar libbar.jar PluginDemo.jar/ com/foo/... ... ... META-INF/ plugin.xml
安装和使用都是一样的
效果:
到这里也算是知道插件是个啥了,也算是一个特殊的“项目”~