介绍
Demo说明
本文基于maven项目开发,idea版本为2022.3以上,jdk为1.8
本文在Tools插件之上进行开发
Tools插件说明
Tools插件是一个Idea插件,此插件提供统一Spi规范,极大的降低了idea插件的开发难度,并提供开发者模块,可以极大的为开发者开发此插件提供便利
Tools插件安装需要idea2022.3以上版本
- 插件下载连接:
https://download.csdn.net/download/qq_42413011/89702325
- sdk下载连接:
https://download.csdn.net/download/qq_42413011/89702330
- pojo-serializer插件:
https://gitee.com/myprofile/pojo-serializer
正文
创建项目
pom文件和sdk设置
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lhstack</groupId>
<artifactId>tools-plugin-example</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>sdk</groupId>
<artifactId>sdk</artifactId>
<version>0.0.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/sdk-1.0.0.jar</systemPath>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>sdk:sdk</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
创建PluginImpl
PluginImpl
package com.lhstack.aaa;
import com.lhstack.tools.plugins.IPlugin;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.util.Objects;
public class PluginImpl implements IPlugin {
@Override
public JComponent createPanel(String projectHash) {
return new JLabel("Demo", JLabel.CENTER);
}
@Override
public Icon pluginIcon() {
try {
return new ImageIcon(ImageIO.read(Objects.requireNonNull(PluginImpl.class.getClassLoader().getResourceAsStream("DEMO-48x48.png"))));
} catch (Throwable e) {
throw new RuntimeException(e);
}
}
@Override
public Icon pluginTabIcon() {
try {
return new ImageIcon(ImageIO.read(Objects.requireNonNull(PluginImpl.class.getClassLoader().getResourceAsStream("DEMO-16x16.png"))));
} catch (Throwable e) {
throw new RuntimeException(e);
}
}
@Override
public String pluginName() {
return "Demo";
}
@Override
public String pluginDesc() {
return "这是一个Demo插件描述";
}
@Override
public String pluginVersion() {
return "0.0.1";
}
}
META-INF/ToolsPlugin.txt
com.lhstack.PluginImpl
使用Tools插件的开发模块运行项目
编译项目,这两个位置都可以编译
运行
打包插件并安装
通过拖动或者点击按钮进行安装
双击插件
右键插件tab
新窗口打开
卸载插件
插件icon