本文概要
- Java 环境
- gradle安装
- 第一个IDEA插件开发
- 总结
1. Java 环境
自行安装 jdk 11 Java 环境。
2. gradle安装
依据 IDEA 插件开发官方文档,gradle是创建 IntelliJ 平台插件的首选解决方案。 gradle安装网上有很多的示例,在此不在赘述,此处贴上一个windows安装gradle教程,其他操作系统参考或者自行搜索。
3. 第一个IDEA插件开发
gradle安装完毕就可以开始开发我们的插件啦。
step.1 新建项目
- 官方2020 年 9 月 18 日提示,IntelliJ 项目的源代码最近迁移到了 Java 11。所以基于 IntelliJ 的 IDE 的 2020.3 版本的所有插件都需要 Java 11 才能启动。官方提示博客链接
- Java 环境勾选。
- IntelliJ Platform Plugin 插件需要勾选,个人理解为 IDEA 插件开发的 SDK,只不过是通过 Gradle 管理的。
- next
- 项目名
- finish
step.2 项目结构
plugin-demo01
├── build.gradle
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
├── main
│ ├── java
│ └── resources
│ └── META-INF
│ └── plugin.xml
- build.gradle: 默认的 IntelliJ 平台build.gradle文件
plugins {
id 'java'
id 'org.jetbrains.intellij' version '1.5.3'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
// See https://github.com/JetBrains/gradle-intellij-plugin/
intellij {
version '2020.2.3'
}
patchPluginXml {
changeNotes """
Add change notes here.<br>
<em>most HTML tags may be used</em>"""
}
说明:
- plugins 申明了两个gradle插件:Gradle Java插件 & gradle -intellij-plugin
- group: gradle 的 GroupId 值
- version: gradle 的 版本值
- repositories: gradle 仓库
- dependencies: gradle 依赖
- 文件中唯一的注释是指向 gradle-intellij-plugin 的 README.md 的链接,这是其配置 DSL 的参考。
- Setup DSL 属性的值 intellij.version 指定用于构建插件的 IntelliJ 平台的版本。它默认为用于运行新建项目向导的 IntelliJ IDEA 版本。
- Patching DSL 属性的 patchPluginXml.changeNotes 值设置为占位符文本。
-
Gradle Wrapper 文件 Gradle Wrapper 文件,特别是gradle-wrapper.properties文件,它指定了用于构建插件的 Gradle 版本。如果需要,IntelliJ IDEA Gradle 插件会下载此文件中指定的 Gradle 版本。
-
settings.gradle rootProject.name 配置了项目名。
-
plugin.xml 插件配置文件,具体后面再描述。
step.3 修改配置文件 plugin.xml
<idea-plugin>
<id>org.example.plugin-demo01</id>
<name>demo01</name>
<vendor email="abc@qq.com" url="http://www.zheteng.icu">none</vendor>
<description><![CDATA[ Enter short description for your plugin here ]]></description>
<!-- please see https://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
on how to target different products -->
<depends>com.intellij.modules.platform</depends>
<extensions defaultExtensionNs="com.intellij">
<!-- Add your extensions here -->
</extensions>
<actions>
<!-- Add your actions here -->
</actions>
</idea-plugin>
- 修改 name,配置成插件名称
- 配置 e-mail 和官网地址以及公司名。
- description 功能简介
step.4 创建一个工具窗口ToolWindow
- 创建 ToolWindowFactory 并重写 createToolWindowContent 方法
package icu.zhenteng;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowFactory;
import org.jetbrains.annotations.NotNull;
/**
* @author yangpeng
* @version 1.0.0
* @date 2022年05月19日
*/
public class MyToolWindowFactory implements ToolWindowFactory {
@Override
public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
}
}
- 创建 ToolWindow
点击 OK 即创建一个 GUI Form
-
命名默认 JPanel
-
绘制 "Hello World"
- 重写 MyToolWindow 方法
package icu.zhenteng;
import com.intellij.openapi.wm.ToolWindow;
import javax.swing.*;
/**
* @author yangpeng
* @version 1.0.0
* @date 2022年05月19日
*/
public class MyToolWindow {
private JPanel rootPanel;
private JTextPane helloWorldTextPane;
public MyToolWindow(ToolWindow toolWindow){
}
public JPanel getContent(){
return rootPanel;
}
}
- 重写 ToolWindowFactory.createToolWindowContent 方法
@Override
public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
MyToolWindow myToolWindow = new MyToolWindow(toolWindow);
ContentFactory contentFactory = ContentFactory.SERVICE.getInstance();
Content content = contentFactory.createContent(myToolWindow.getContent(), "", false);
toolWindow.getContentManager().addContent(content);
}
- 在 plugin.xml 中注册 ToolWindow
<extensions defaultExtensionNs="com.intellij">
<toolWindow factoryClass="icu.zhenteng.MyToolWindowFactory" id="hello"/>
</extensions>
step.5 运行插件
4. 总结
IDEA 个人开发插件是觉得写接口文档非常的麻烦,所以想通过自己开发插件将 javadoc 文档转化成接口文档,免去手写文档的痛苦。其实 github 上已经有好多个非常不错的文档生成插件,只是自己也想学习插件的开发,所以就有了这个文章。