前言
插件上传地址
https://plugins.jetbrains.com/
JDK要求必须11以上,我这里使用的是17。
下载JDK17
https://www.oracle.com/cn/java/technologies/downloads/#jdk17-windows
安装后确认下版本
1 | java --version |
环境变量中的JAVA_HOME
也要设置为JDK17的路径。
创建项目
创建项目
项目打开后点击plugin.xml配置插件的基本信息
如下
1 | <idea-plugin> |
注意
插件如果要上传到IDEA上描述不能用中文,如果自己导入是可以中文的。
报错
Could not resolve org.jetbrains.intellij.plugins:gradle-intellij-plugin:1.8.0
环境变量中的JAVA_HOME
也要设置为JDK17的路径。
我们安装这个插件方便插件的开发
这里我就手动创建了。
示例
简单提示
这里我们只是简单的在右下角弹出通知显示项目根目录
CreateVueCompAction.java
1 | import com.intellij.notification.Notification; |
当然也可以弹窗显示
1 | Messages.showMessageDialog(e.getProject().getBasePath(), "Project BasePath", Messages.getInformationIcon()); |
在plugin.xml的根节点下添加
1 | <actions> |
也可以在代码文件夹上点击鼠标右键,选择 New
=> Plugin DevKit
=> Action
如果没有的话,那么可能需要在先在IDEA中装个 Plugin DevKit插件。
获取选中的文件夹
1 | import com.intellij.openapi.actionSystem.AnAction; |
文件创建及写入
1 | import com.intellij.openapi.actionSystem.AnAction; |
生成Vue文件
1 | import cn.psvmc.vuecomp.utils.ZFreeMarkerUtils; |
对应的模板文件
ts_vue.ftl
1 | <template> |
style.ftl
1 | .${fileName} { |
使用的时候,先创建我们的组件文件夹,比如MainView,右键点击创建Vue组件/页面
,就会在这个文件夹中创建跟文件夹同名的两个文件。
设置图标
在 IDEA 插件开发中,设置 action 的图标主要涉及到以下几个步骤:
准备图标文件:
确保你有一个图标文件,通常是 PNG 格式,SVG也可以。尺寸为 16x16 像素,不要太大,会把菜单撑变形。
将图标文件放入资源目录:
将图标文件放在插件项目的 resources
目录下,通常路径为 src/main/resources/icons/
。
修改 plugin.xml 文件:
打开 plugin.xml
文件,找到或添加 actions
节点,并在其中定义你的 action。要指定图标,使用 icon
属性。下面是一个示例配置:
1 | <actions> |
在这个例子中,icon
属性的值是图标文件的路径,相对于 resources
目录。
插件本身的图标可以替换resources/META-INF/pluginIcon.svg
文件,大小为40x40
。
配置存储和读取
工具类
1 | import com.intellij.openapi.application.ApplicationManager; |
plugin.xml
中根节点内添加
1 | <extensions defaultExtensionNs="com.intellij"> |
你可以这样使用 PluginSettings
工具类来读取或保存配置:
读取配置
1 | PluginSettings settings = PluginSettings.getInstance(); |
修改配置
1 | PluginSettings settings = PluginSettings.getInstance(); |
说明
@State
注解:指定了保存配置的文件名称(PluginSettings.xml
),可以根据需要调整。PersistentStateComponent
接口:提供了存储和加载状态的方法getState
和loadState
,这些方法会由 IntelliJ IDEA 自动调用。- 工具类方法
getInstance
:使用ServiceManager.getService
获取PluginSettings
实例,这是获取配置信息的一种标准方法。
环境配置
构建配置
gradle\wrapper\gradle-wrapper.properties
1 | #Wed Mar 20 15:45:42 HKT 2024 |
settings.gradle.kts
1 | rootProject.name = "VueComp" |
build.gradle.kts
1 | plugins { |
注意相比于自动生成项目的配置,这里更改了如下几点:
镜像库
1 | repositories { |
编码
要设置编码,否则中文会乱码。
1 | withType<JavaCompile> { |
项目本身也设置为UTF-8
插件版本设置
调试IDEA版本
intellij
中版本设置的时调试时使用的IDEA版本,他会自动下载
1 | intellij { |
运行的时候会自动下载该版本的IDEA来运行我们的插件。
我们平常使用的是IU
版本。
IC
版本是社区版本,是不用激活的,方便我们测试。
过程中有三个文件都不小,比较费时:
- IDEA下载的过程比较费时,得耐心等待。
对应IDEA版本的so文件。
运行过程中还会下载
jbr_jcef
也是比较慢。https://cache-redirector.jetbrains.com/intellij-jbr/jbr_jcef-11_0_14_1-windows-x64-b1751.46.tar.gz
注意
如果下载太慢可以本地下载
下载后修改配置
1 | intellij { |
注意
调试的版本要和依赖版本匹配,不能随意更改。
插件支持IDEA版本
这个版本是我们插件支持的最低和最高版本
1 | patchPluginXml { |
这个版本可以在IDEA的 Help
=> About
查看
Java版本设置
还有这个版本要和对应IDEA依赖的Java版本一致,可以和我们插件项目依赖的Java版本不一致,我就是用的JDK17,而这里配置的11,可以正常编译运行。
1 | withType<JavaCompile> { |
更换gradle版本
默认的7.5我在构建的时候报错,所以就更换为7.6版本了。
gradle-wrapper.properties
1 | #Wed Mar 20 15:45:42 HKT 2024 |
镜像地址
https://mirrors.cloud.tencent.com/gradle/
构建报错
Caused by: java.lang.NullPointerException: getHeaderField(“Location”) must not be null
这个错误不影响。
FreeMarker使用
build.gradle.kts中添加
1 | dependencies { |
resources/templates/template.ftl
1 | # This is an example template |
工具类
1 | import freemarker.template.Configuration; |
打包
Gradle中通过Tasks/build/build
来打包我们的插件。
构建好后我们可以在build/distributions
目录下面找到我们的zip包,拿到后直接在idea上面进行离线安装即可。
注意
网上有说用
intellij/buildPlugin
打包,这是不对的,这样打的是Jar包,我们代码中引用的模板文件不会打进去,就不能正常使用。
插件上传
插件上传地址
https://plugins.jetbrains.com/
上传后需要两日进行审核。
我的插件的地址:
https://plugins.jetbrains.com/plugin/25038-vuecomp?noRedirect=true
下载地址