前言

好久没写过博客了,笔者想写点新的东西,最近对JetBrains IDE插件开发感兴趣,虽然笔者从来没有学过,也不知道怎么开发,哈哈哈哈哈哈,

但是啊,不重要。

不会的东西问一问AI,或者自己探索一下。

慢慢来,不急。

准备

下载IDE

首先,要开发JetBrains IDE插件,需要一些参考

IntelliJ Platform SDK | IntelliJ Platform Plugin SDKhttps://plugins.jetbrains.com/docs/intellij/welcome.html上面网址是官网的教程,从其中的教程中可以发现如此信息

需要Java,Kotlin的环境,还需要一个IDE,需要一个IDE来开发IDE的插件。

哈哈哈哈哈哈,可以。

那么就下载IDEA,网址如下

下载 IntelliJ IDEAhttps://www.jetbrains.com/zh-cn/idea/download/?section=windows下载,安装后。

初始化项目

笔者首先新建一个Kotln项目,构建系统选择Gradle,名字任取

刚开始会下载一些东西,笔者也是第一次使用。

应该是下载相关依赖。

可以发现在Main.kt有一段默认代码

package org.example

//TIP 要<b>运行</b>代码,请按 <shortcut actionId="Run"/> 或
// 点击装订区域中的 <icon src="AllIcons.Actions.Execute"/> 图标。
fun main() {
    val name = "Kotlin"
    //TIP 当文本光标位于高亮显示的文本处时按 <shortcut actionId="ShowIntentionActions"/>
    // 查看 IntelliJ IDEA 建议如何修正。
    println("Hello, " + name + "!")

    for (i in 1..5) {
        //TIP 按 <shortcut actionId="Debug"/> 开始调试代码。我们已经设置了一个 <icon src="AllIcons.Debugger.Db_set_breakpoint"/> 断点
        // 但您始终可以通过按 <shortcut actionId="ToggleLineBreakpoint"/> 添加更多断点。
        println("i = $i")
    }
}

等下载完成相关依赖后,ctrl+shift+f10,运行代码,结果如下

没问题,可以运行。

这只是一个普通的kotil代码,进行初始化,笔者电脑上没有关于kotlin和Gradle的依赖。

看起来没问题。

安装插件的插件

接下来,需要安装一个插件——Plugin DevKit

安装插件来写插件。在插件市场里面搜索

初始化插件

回到新建项目对话框。

可以发现生成器下面多了一个“IDE 插件”选择,这应该就是初始化插件的模板。

点击,初始化项目,项目名就叫fitst

为什么叫这个,笔者其实想叫first,但是打错了,算了,不重要

其他的随便填。

出现了平台依赖项和插件依赖项,这些不知道是干什么的,先不管,什么都不选,直接创建。

看看文件,看看代码

创建之后,好像需要导入一些东西。

先不急

build.gradle.kt文件

import org.jetbrains.intellij.platform.gradle.TestFrameworkType

plugins {
    id("org.jetbrains.kotlin.jvm")
    id("org.jetbrains.changelog")
    id("org.jetbrains.intellij.platform")
}

// Read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html
dependencies {
    testImplementation(libs.junit)

    // IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html
    intellijPlatform {
        intellijIdea("2025.3.5")
        testFramework(TestFrameworkType.Platform)

        // Add plugin dependencies for compilation here, for example:
        // bundledPlugin("com.intellij.java")
    }
}

首先先import导入了一个TestFrameworkType,看来是与测试有关的东西。

然后下一行代码plugins,里面有三个id。

第一个id

    id("org.jetbrains.kotlin.jvm")

表示去下载并启用 "Kotlin JVM 编译插件",意思是让 Gradle "学会"编译 Kotlin

第二个id

    id("org.jetbrains.changelog")

表示JetBrains 官方的 Changelog(更新日志)管理插件,说白了就是一个日志插件

plugins不知道是什么,但是看里面的内容可以知道

第三个id

    id("org.jetbrains.intellij.platform")

表示让 Gradle 从"普通构建工具"变成"JetBrains 插件专用构建工具",说白了,就是写插件最关键的部分。无论是代码还是打包插件都需要,

哦,我明白了,plugin英文意思是插件的意思,

plugins的意思是导入其他插件,那三个id本质上都是其他的插件。

原来如下。

继续

dependencies {
    testImplementation(libs.junit)

    // IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html
    intellijPlatform {
        intellijIdea("2025.3.5")
        testFramework(TestFrameworkType.Platform)

        // Add plugin dependencies for compilation here, for example:
        // bundledPlugin("com.intellij.java")
    }
}

首先dependencies 是依赖的意思。

那个下面应该就是导入的依赖了。

testImplementation(libs.junit)

显然,这个是导入junit这个测试依赖。libs 是 Gradle 的版本目录。

从版本目录里面导入的。

可以在目录gradle里面发现libs.version.toml文件

可以发现其中有junit

原来如此。

接下来就是intellijPlatform。

intellijIdea("2025.3.5")

这个的意思是使用idea2025.3.5版本的意思

        testFramework(TestFrameworkType.Platform)

这个应该也是和测试有关,不重要。

settings.gradle.kt

import org.jetbrains.intellij.platform.gradle.extensions.intellijPlatform

rootProject.name = "fitst"

pluginManagement {
    plugins {
        id("org.jetbrains.kotlin.jvm") version "2.2.20"
        id("org.jetbrains.changelog") version "2.5.0"
    }
}

plugins {
    id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
    id("org.jetbrains.intellij.platform.settings") version "2.16.0"
}

@Suppress("UnstableApiUsage")
dependencyResolutionManagement {
    // Configure all projects' repositories
    repositories {
        mavenCentral()

        // IntelliJ Platform Gradle Plugin Repositories Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-repositories-extension.html
        intellijPlatform {
            defaultRepositories()
        }
    }
}

这个settings.gradle.kts是项目的全局配置文件,管的是整个项目层面的事,

类似rust项目里面的里面的cargo.toml,或者javascript的package.json文件。

首先

import org.jetbrains.intellij.platform.gradle.extensions.intellijPlatform

这个import导入了intellijPlatform,应该和写jetbrain插件相关

rootProject.name = "fitst"

项目名叫fitst

pluginManagement {
    plugins {
        id("org.jetbrains.kotlin.jvm") version "2.2.20"
        id("org.jetbrains.changelog") version "2.5.0"
    }
}

现在很容易理解了,有两个插件和对应的版本

这个pluginManagement,统一管整个项目的插件版本,所有子模块,比如上面的build.grad

le.kt,引用同一个插件时,不用再写版本

说白了,这个pluginManagement下的插件是全局的插件。

plugins {
    id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
    id("org.jetbrains.intellij.platform.settings") version "2.16.0"
}

这里面也导入了两个插件和相关的版本,那么这些插件就是给settings.gradle.kts 这个文件本身

使用的,具体有什么作用,有点麻烦,不管了,总之,导入局部的插件。

foojay-resolver-convention 是自动下载JDK的

intellij.platform.settings 应该是和jetbarin配置有关

继续

@Suppress("UnstableApiUsage")
dependencyResolutionManagement {
    // Configure all projects' repositories
    repositories {
        mavenCentral()

        // IntelliJ Platform Gradle Plugin Repositories Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-repositories-extension.html
        intellijPlatform {
            defaultRepositories()
        }
    }
}

第一行,

@Suppress("UnstableApiUsage")

这是一个kotlin注解,

注解 · Kotlin 官方文档 中文版https://book.kotlincn.net/text/annotations.html后面再说,笔者没学过kotlin。哈哈哈哈

如果把这个注解删除,idea就会出现警告

'repositories(org.gradle.api.Action<? super org.gradle.api.artifacts.dsl.RepositoryHandler>)' 使用 @Incubating 标记为不稳定

说明这个注解的作用就是忽视这个警告,静默警告

接下来意思就很简单了,就是下载依赖的地址了

repositories 是 Gradle 的"购物清单地址栏":通用库去 Maven 中央仓库找,JetBrains 平台专属的东西去 JetBrains 自己的仓库找。

说白了,下载依赖的配置。

启动项目

过了不知道多久,终于把全部的依赖都安装好了,

如果安装失败,可能搜索网络问题。笔者也没办法。

什么代码都不改。直接点击最上面的Run Plugin

又下载一些东西

等一段时间。

可以发现出现了新的idea

这个idea的版本的是2025.3.5,说明启动没什么问题。

笔者启动之后,会出现一些警告,感觉不是很重要,不管了。

还有一个错误。笔者换一个idea,2025.2.1,还是又警告,算了

没有错误,也行。

用测试的idea打开一个项目,打开之后

在侧边栏,有一个My Tool Window,

点击,展开,出现一行文字和一个按钮Shuffle

点击按钮,出现一个随机数字。

总结

感觉有点麻烦,后面再说,具体的代码,人晕了,没搞过kotlin和gradle那些

需要消化一下内容

就这样。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐