目录
配置 IntelliJ Platform Plugin SDK
以前觉得开发idea的人真厉害啊,后来工作中用到各种插件,也不禁感叹,这些插件又是个什么玩意,是谁开发的啊,真厉害啊~
如今,领导安排,我也要改公司的插件了~~~
为什么开发idea插件?
目前已有插件并不能真的完全满足自己的需求。举个简单的栗子,比如,tomcat部署应用后,我想清除weapps下的应用,怎么办?
开发插件流程(最简单的使用场景)
环境准备:jdk11、idea
配置 IntelliJ Platform Plugin SDK
IntelliJ Platform Plugin SDK 就是开发 IntelliJ 平台插件的SDK, 是基于 JDK 之上运行的
- 导航到 File ->Project Structure,选择对话框左侧栏 Platform Settings 下的 SDKs
- 点击 + 按钮,先选择 JDK,指定 JDK 的路径;再创建 IntelliJ Platform Plugin SDK,指定 home path 为 IDEA 的安装路径,如图
3、创建好 IntelliJ Platform Plugin SDK 后,选择左侧栏 Project Settings 下的 Projects,在 Project SDK 下选择刚创建的 IntelliJ Platform Plugin SDK。
创建一个插件项目
工程创建成功,工程目录如下,plugin.xml是核心配置文件:
核心配置(plugin.xml)文件说明 :
<idea-plugin>
<!-- 插件唯一id,不能和其他插件项目重复,所以推荐使用com.xxx.xxx的格式
插件不同版本之间不能更改,若没有指定,则与插件名称相同 -->
<id>com.your.company.unique.plugin.id</id>
<!-- 插件名称,别人在官方插件库搜索你的插件时使用的名称 -->
<name>CJPlugin</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>
复制代码
启用 Plugin DevKit
Plugin DevKit 是 IntelliJ 的一个插件,它使用 IntelliJ IDEA 自己的构建系统来为开发 IDEA 插件提供支持。开发 IDEA 插件之前需要安装并启用 Plugin DevKit 。
打开 IDEA,导航到 Settings | Plugins,若插件列表中没有 Plugin DevKit,点击 Install JetBrains plugin,搜索并安装。
创建一个动作action
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
安装和使用都是一样的
安装插件
安装完后,重启idea
效果:
到这里也算是知道插件是个啥了,也算是一个特殊的“项目”~