【Idea插件开发】-Intellij-plugin-helloworld

写在前面

  本篇文章以Intellij-plugin-hellowworld为例,给出一个Idea插件开发的基本步骤。



一、场景描述

  我们的微服务很多,30+靠上,服务之间的调用是通过feign,有时候看代码,找到feign之后还需要找到对应服务的controller,也是很耗时间的。能不能开发一个插件像MyBatisX的mapper和dao跳转一样,答案是显而易见的。但是,在Marketplace上找了很多,没有找到能用的。

为了提高团队效率,于是乎,自己开发了一个,效果还不错。本篇文章给出一个最简单的IDEA插件开发示例。


二、Intellij-plugin-helloworld

1.环境说明

名称说明
IntelliJ IDEA2023.3.1 (Ultimate Edition)

2.必备条件

JDK的版本必须是17以后(IDE Plugin projects require a minimum of Java 17)
Gradle项目,默认是基于kotlin(我们给修改成Java)

2.1 下载Oracle JDK 17,安装并配置

下载安装, Oracle JDK 17 下载地址

2.1.1 导入SDKs

在这里插入图片描述
导入完成后,有2个地方需要配置一下。

2.1.2 Build Gradle Gradle JVM

在这里插入图片描述

2.1.3 Module Module SDK

在这里插入图片描述

2.2 安装Plugin DevKit 插件新建项目

在这里插入图片描述

此时新建项目,Generators中会出现IDE Plugin(我们可以基于它来创建插件项目)
说明:默认创建的项目是Kotlin(我们接下来将其修改为Java版本)

在这里插入图片描述
去除build.gradle.kts 和 settings.gradle.kts 文件的.kts后缀
修改包名src/main/kotlin为java

在这里插入图片描述

build.gradle的内容进行修改:

//import javax.tools.JavaCompiler

plugins {
  id("java")
//  id("org.jetbrains.kotlin.jvm") version "1.9.20"
  id("org.jetbrains.intellij") version "1.16.0"
}

group = "cn.thinkinjava"
version = "1.0.0"

repositories {
  mavenCentral()
}

// Configure Gradle IntelliJ Plugin
// Read more: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
intellij {
//  version.set("2023.1.5")
//  type.set("IC") // Target IDE Platform

  version = "2023.3"
  type = "IC"
  plugins = [/* Plugin Dependencies */]
  updateSinceUntilBuild = false
}

tasks.withType(JavaCompile.class).configureEach(task -> {
  task.getOptions().setEncoding("UTF-8")
  sourceCompatibility = "17"
  targetCompatibility = "17"
})

tasks.patchPluginXml {
  // 注意这个版本号不能高于上面intellij的version,否则runIde会报错
  sinceBuild.set("231")
  untilBuild.set("241.*")
}

tasks.signPlugin {
  certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))
  privateKey.set(System.getenv("PRIVATE_KEY"))
  password.set(System.getenv("PRIVATE_KEY_PASSWORD"))
}

tasks.publishPlugin {
  token.set(System.getenv("PUBLISH_TOKEN"))
}

修改完成后,点击右侧Gradle小图标,重新加载。

2.3 Reload All Gradle Project

在这里插入图片描述

> Task :prepareKotlinBuildScriptModel UP-TO-DATE
Download https://cache-redirector.jetbrains.com/www.jetbrains.com/intellij-repository/releases/com/jetbrains/intellij/idea/ideaIC/2023.3/ideaIC-2023.3.zip, took 2 m 25 s 40 ms
Download https://cache-redirector.jetbrains.com/www.jetbrains.com/intellij-repository/releases/com/jetbrains/intellij/idea/ideaIC/2023.3/ideaIC-2023.3-sources.jar, took 1 m 41 s 815 ms
Download https://cache-redirector.jetbrains.com/intellij-jbr/jbr_jcef-17.0.9-windows-x64-b1087.7.tar.gz, took 45 s 106 ms

BUILD SUCCESSFUL in 5m 55s

2.4 配置Intellij Platform Plugin SDK

Intelli Platform Plugin SDK是Intellij平台插件的SDK,是基于JDK之上运行的,类似开发Android应用需要Android SDK。

操作:File-》Project Structure
Add Intellij Platform Plugin SDK… -》选择IDEA的安装目录-》JDK选择17

在这里插入图片描述

在这里插入图片描述

2.5 下载Intellij Platform Plugin SDK源码并关联

源码下载地址

在这里插入图片描述
关联后,build.gradle文件中的代码可以通过ctrl + 光标进行显示

在这里插入图片描述

3.开发HelloWorld

需求:我们创建一个Action,名为 show hello world,放在 Help -》About的后面
点击时,弹出Hello world!

3.1 创建Action

在这里插入图片描述
在这里插入图片描述
点击OK,IDEA会自动创建一个Action动作的Java类和该插件对应的配置

编写代码如下:

HelloWorldAction.java

public class HelloWorldAction extends AnAction {

    @Override
    public void actionPerformed(AnActionEvent e) {
        String message = "Hello world!";
        Messages.showInfoMessage(e.getProject(), message, "Title");
    }
}

plugin.xml

<idea-plugin>
<id>cn.thinkinjava.intellij-plugin-helloword</id>
  <name>helloword</name>
  <vendor email="" url="https://github.com/qiuxianbao">thinkinjava</vendor>     
<description></description>
  <depends>com.intellij.modules.platform</depends>
  <extensions defaultExtensionNs="com.intellij"></extensions>

  <actions>
    <action id="cn.thinkinjava.intellijpluginhelloword" class="cn.thinkinjava.intellijpluginhelloword.HelloWorldAction"
            text="show Hello world">
      <add-to-group group-id="HelpMenu" anchor="after" relative-to-action="About"/>
    </action>
  </actions>

</idea-plugin>

3.2 测试Action

Tasks-》intellij -》runIde
在这里插入图片描述
右键run,会弹出一个新的idea(该idea中Plugins中即有helloworld插件)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.3 打包插件

插件传播和发布都需要打包,打包后会获得一个zip包
执行buildPlugin,

在distributions中即有一个intellij-plugin-hellowworld-1.0.0.zip的插件
在这里插入图片描述

在这里插入图片描述


三、参考资料

idea 插件开发之 HelloWorld
Idea插件开发-开发自己的第一款idea插件
Creating a Plugin Gradle Project


写在后面

  如果本文内容对您有价值或者有启发的话,欢迎点赞、关注、评论和转发。您的反馈和陪伴将促进我们共同进步和成长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值