前言
好久没写过博客了,笔者想写点新的东西,最近对JetBrains IDE插件开发感兴趣,虽然笔者从来没有学过,也不知道怎么开发,哈哈哈哈哈哈,
但是啊,不重要。
不会的东西问一问AI,或者自己探索一下。
慢慢来,不急。
准备
下载IDE
首先,要开发JetBrains IDE插件,需要一些参考
IntelliJ Platform SDK | IntelliJ Platform Plugin SDK
https://plugins.jetbrains.com/docs/intellij/welcome.html上面网址是官网的教程,从其中的教程中可以发现如此信息

需要Java,Kotlin的环境,还需要一个IDE,需要一个IDE来开发IDE的插件。
哈哈哈哈哈哈,可以。
那么就下载IDEA,网址如下
下载 IntelliJ IDEA
https://www.jetbrains.com/zh-cn/idea/download/?section=windows下载,安装后。
初始化项目
笔者首先新建一个Kotln项目,构建系统选择Gradle,名字任取

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

应该是下载相关依赖。
可以发现在Main.kt有一段默认代码
Kotlin
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文件
Kotlin
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
Kotlin
id("org.jetbrains.kotlin.jvm")
表示去下载并启用 "Kotlin JVM 编译插件",意思是让 Gradle "学会"编译 Kotlin
第二个id
Kotlin
id("org.jetbrains.changelog")
表示JetBrains 官方的 Changelog(更新日志)管理插件,说白了就是一个日志插件
plugins不知道是什么,但是看里面的内容可以知道
第三个id
Kotlin
id("org.jetbrains.intellij.platform")
表示**让 Gradle 从"普通构建工具"变成"JetBrains 插件专用构建工具",**说白了,就是写插件最关键的部分。无论是代码还是打包插件都需要,
哦,我明白了,plugin英文意思是插件的意思,
plugins的意思是导入其他插件,那三个id本质上都是其他的插件。
原来如下。
继续
Kotlin
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。
Kotlin
intellijIdea("2025.3.5")
这个的意思是使用idea2025.3.5版本的意思
Kotlin
testFramework(TestFrameworkType.Platform)
这个应该也是和测试有关,不重要。
settings.gradle.kt
Kotlin
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文件。
首先
Kotlin
import org.jetbrains.intellij.platform.gradle.extensions.intellijPlatform
这个import导入了intellijPlatform,应该和写jetbrain插件相关
Kotlin
rootProject.name = "fitst"
项目名叫fitst
Kotlin
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下的插件是全局的插件。
Kotlin
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配置有关
继续
Kotlin
@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()
}
}
}
第一行,
Kotlin
@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那些
需要消化一下内容
就这样。