0.新建插件工程
官方推荐使用gradle方式创建
选择InteliJ Platform Plugin
1.ideaIC下载不成功
开发idea插件时依赖idea community版本,即ideaIC作为library。相当于你开发springboot程序需要各种spring的依赖一样。由于idea插件开发官方推荐gradle方式创建项目,但gradle拉去ideaIC依赖时常常拉取不成功,因此需要手动下载ideaIC依赖并添加到本地。
这个地址即表明ideaIC-2021.2.1版本依赖,根据你开发插件所依赖ideaIC版本不同这里的数字要变更。并且要和你的biuld.gradle中的版本相匹配
intellij { version = '2021.2.1' plugins = ['com.intellij.java'] updateSinceUntilBuild = false sameSinceUntilBuild = false }
下载好zip包,放到本地gradle仓库,如果没有修改过通常在%USER%/.gradle/caches/modules-2/files-2.1
例如ideaIC的路径就是com/jetbrains/intellij/idea/ideaIC/2021.2.1。
将下载下来的zip包计算hash,用gitbash工具sha1sum.exe ideaIC-2021.2.1.zip计算出hash值,并创建以这个hash值命名的文件夹,然后gradle reload就不会再去下载而是直接用本地缓存。
2.gradle build失败
No value has been specified for property 'compilerClassPathFromMaven' in task ':instrumentCode'
这个错误是由于idea插件gradle-intellij-plugin版本问题导致,将build.gradle中版本减低到1.1.3一下可以解决。
plugins { id 'org.jetbrains.intellij' version '1.1.2' id 'java' }
3.Execution failed for task ':instrumentCode'.
Could not resolve all files for configuration ':detachedConfiguration3'.
3.1handshake failed
升级你gradle使用的JDK吧,因为gradle 高版本需要jdk11以上,但jdk11.0.2 ssl链接有bug。
注意现有idea运行版本是java11所以升级是指升级jdk11的版本,而不是升级到jdk16或17,如果升级高了之后,因为idea plugin 使用了jdk11的ssl链接,可能会导致你run idel 无法运行,因为class 版本太高,11需要的class版本是55。而openjdk不维护11的高版本jdk所以需要使用其他厂商的jdk,如IBM,ECLIPSE等,如:Archive | Adoptium
3.2 gradle bug
通常还会看到错误类似问题1中无法下载pom或者jar包,这时可以尝试在gradle-wrapper.properties文件中修改gradle版本,如:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
当你的idea中gradle选项use gradle from 选择了gradle-wrpper.properties才会使用这个版本。而且有时候因为gradle版本问题会发现整个intelij插件相关的都拉不下来而且版本号都是一样的如:Could not resolve com.jetbrains.intellij.java:java-gui-forms-compiler:212.5080.55.
这种情况通常不是网络问题,而是编译版本不一致。有两种解决办法
一、use gradle from 选择 wrapper task in gradle build script
二、build.gradle中指定instrumentCode的编译版本配置
tasks { instrumentCode { compilerVersion = "212.5080.55" } }
这里的版本根据你报错的依赖的版本而定。
iintelij插件编译支持版本参考
3.3 intellij plugin bug
intellij gradle插件有拉取依赖bug参考第2部分解决办法,此时可能需要升级插件版本而不是降级
总结:通过gradle插件构建intellij插件的方式需要反复调整你的gradle版本,jdk版本,ideaIC版本,intellij构建插件版本
4 gradle 依赖拉取失败
idea拉取gradle依赖时如果使用上述方式都不能拉取到intellij相关依赖,但非intellij依赖又能拉到。
此时可能时因为idea gradle相关插件bug,如gradle view等。此时,在插件列表中找到非idea原生gradle相关插件,然后reload gradle项目。如果还不能成功,找到项目文件夹下的 .idea文件夹,这个文件夹时这个项目idea相关的一些配置文件夹。整个删掉,然后重新打开项目。