基于IDEA24.1开发自定义插件

最近想接触idea插件开发相关的内容,但发现网上很多文章都比较过时了,并不适用于高版本的idea和jdk,踩了一些坑后,写一篇文章总结一下高版本idea开发插件的步骤吧。

开发环境

  • 软件版本:JetBrain IDEA 2024.01

  • JDK版本:JDK17
    需要注意的是,从IDEA2022.2开始,就要求用户必须要有Java17及以上的版本才可以进行插件的开发。如果你不清楚自己的idea做插件开发所要求的最低jdk版本,可以参考官网文档的介绍:IDEA版本和JDK版本的对应关系,需要注意的是,如果只是做普通开发的话,那么并没有对idea的版本要求,按实际项目来就行。

步骤1、安装Plugin Devkit

图片

 步骤2、新建插件项目

图片

步骤3、打开项目

        我们可以看到,项目刚创建出来的时候,并没有我们熟悉的pom.xml文件,这是因为idea已经默认采用gradle来作为项目构建工具了,如果想要切换成maven来构建项目的话,按官网的说法也是可以的,但这里暂且不说。笔者大概看了一下,如果不涉及比较复杂的开发的话,项目中自带的构建脚本还是可以看得懂的。

<!-- Plugin Configuration File. Read more: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html -->
<idea-plugin>
    <!-- 插件id,不可重复,必须唯一。插件的升级后续也是依赖插件id来进行识别的 -->
    <id>com.myIdeaPlugins</id>

    <!--  插件名称 -->
    <name>MyIdeaPlugins</name>

    <!-- 插件开发人员,这里写一下开发者的个人信息. -->
    <vendor email="support@yourcompany.com" url="https://www.yourcompany.com">YourCompany</vendor>

    <!--  插件描述,这里一般是写插件的功能介绍啥的 -->
    <description><![CDATA[
    Enter short description for your plugin here.<br>
    <em>most HTML tags may be used</em>
  ]]></description>

    <!--  插件依赖,这里我们默认引用idea自带的依赖即可  -->
    <depends>com.intellij.modules.platform</depends>

    <!-- 定义拓展点,比较少用到,一般是用于你去拓展其他人插件功能拓展点,或者是你的插件扩展了 IntelliJ 平台核心功能才会配置到这里 -->
    <extensions defaultExtensionNs="com.intellij">
    </extensions>
</idea-plugin>

图片

步骤4、将build.gradle.kts文件的kts后缀去掉,稍微改一下原有文件的内容。调整后的文件内容如下

原文件:build.gradle.kts

// 项目依赖的插件,默认会依赖kotlin,但我们这里是直接用java来开发插件的,所以这里依赖我们可以去掉
plugins {
    id("java")
    id("org.jetbrains.kotlin.jvm") version "1.8.21"
    id("org.jetbrains.intellij") version "1.13.3"
}

// 插件的一些基本信息,按实际情况填就行,不是很重要
group = "com"
version = "1.0-SNAPSHOT"

// 插件等依赖的下载地址,默认会去中央仓库下载,这里我们一般是会改为直接去idea官网下载或者是用其他镜像
repositories {
    mavenCentral()
}

// 这里是很重要的配置,定义了gradle构建时依赖的idea版本,我们进行插件调试的时候,会使用这里定义的idea版本来进行测试的。
intellij {
    version.set("2022.2.6")
    type.set("IC") // Target IDE Platform

    plugins.set(listOf(/* Plugin Dependencies */))
}

// 定义构建的任务,主要是改一下编译的jdk版本,插件适用的idea版本等信息
tasks {
    // Set the JVM compatibility versions
    withType<JavaCompile> {
        sourceCompatibility = "17"
        targetCompatibility = "17"
    }
    withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
        kotlinOptions.jvmTarget = "17"
    }

    patchPluginXml {
        sinceBuild.set("222")
        untilBuild.set("232.*")
    }

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

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

修改后文件:build.gradle

// 项目依赖的插件,默认会依赖kotlin,但我们这里是直接用java来开发插件的,所以这里依赖我们可以去掉plugins {    id("java")    id("org.jetbrains.intellij") version "1.17.3"}// 插件的一些基本信息,按实际情况填就行,不是很重要group = "com"version = "1.0-SNAPSHOT"// 插件等依赖的下载地址,默认会去中央仓库下载,这里我们一般是会改为直接去idea官网下载或者是用其他镜像repositories {    mavenCentral()}// 这里是很重要的配置,定义了gradle构建时依赖的idea版本,// 我们进行插件调试的时候,会使用这里定义的idea版本来进行测试的intellij {    version.set("2023.2.6")}//定义构建的任务,主要是改一下编译的jdk版本,插件适用的idea版本等信息tasks.withType(JavaCompile) {    options.encoding = 'UTF-8'    options.compilerArgs += ['-Xlint:unchecked', '-Xlint:deprecation', '-parameters']}patchPluginXml {        sinceBuild.set("222")        untilBuild.set("242.*")    }signPlugin {        certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))        privateKey.set(System.getenv("PRIVATE_KEY"))        password.set(System.getenv("PRIVATE_KEY_PASSWORD"))    }publishPlugin {        token.set(System.getenv("PUBLISH_TOKEN"))    }

步骤5、去掉settings.gradle.kts文件的后缀

步骤6、删除src目录下的kotlin目录,新建java目录

最终项目架构如下

图片

步骤7、开始编码

新建一个action文件

图片

图片

简单写个demo,用来获取项目名字

package com.myideaplugins;import com.intellij.openapi.actionSystem.AnAction;import com.intellij.openapi.actionSystem.AnActionEvent;import com.intellij.openapi.project.Project;import com.intellij.openapi.ui.Messages;public class showProjectName extends AnAction {    @Override    public void actionPerformed(AnActionEvent e) {        Project project =e.getProject();        Messages.showMessageDialog("项目名字",project.getName(),Messages.getInformationIcon());}

    保存后打包

图片

首次启动项目,会根据我们之前在build.gradle文件中配置的idea版本去网上下载对应的安装包,可能耗时会有点久。下载成功后,会打开一个新的idea,打开后我们随便选择某个项目或者新建一个项目就行。

图片

图片

步骤8、打包按照

插件的构建

当自己的插件测试好了之后,希望打包出来,可以通过buildPlugin来打包我们的插件

图片

插件构建

构建好后我们可以在build/lib目录下面找到我们的jar包,拿到后后续可以直接在idea上面进行离线安装

图片

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值