0.新建插件工程

官方推荐使用gradle方式创建

 选择InteliJ Platform Plugin

1.ideaIC下载不成功

开发idea插件时依赖idea community版本,即ideaIC作为library。相当于你开发springboot程序需要各种spring的依赖一样。由于idea插件开发官方推荐gradle方式创建项目,但gradle拉去ideaIC依赖时常常拉取不成功,因此需要手动下载ideaIC依赖并添加到本地。

https://cache-redirector.jetbrains.com/www.jetbrains.com/intellij-repository/releases/com/jetbrains/intellij/idea/ideaIC/2021.2.1/ideaIC-2021.2.1.zip

这个地址即表明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'
}

对应issue:No value has been specified for property 'compilerClassPathFromMaven' in task ':instrumentCode' · Issue #752 · JetBrains/gradle-intellij-plugin · GitHub

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。

 JDK-8220723

注意现有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插件编译支持版本参考

IntelliJ Release repository

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相关的一些配置文件夹。整个删掉,然后重新打开项目。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐