IDEA插件开发之环境搭建过程图文详解

 更新时间:2020年05月06日 17:25:26   作者:sawi  
这篇文章主要介绍了IDEA插件开发之环境搭建过程,本文通过图文并茂实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

基于IntelliJ Platform Plugin搭建

环境步骤

File->New->Project
选择IntelliJ Platform Plugin

在这里插入图片描述

如果你这里没有SDK环境,则添加一个SDK环境,选择自己的idea的安装的根目录即可

展示效果

在这里插入图片描述

基于Gradle搭建环境步骤

File->New->Project
选择Gradle

在这里插入图片描述

next

在这里插入图片描述

进来以后大概是这样的一个界面,然后gradle会自动build项目,下载相关的依赖。(可能会失败)

在这里插入图片描述

遇到的问题一,依赖ideaIC-2020.1.1.zip文件

build过程中下载ideaIC-2020.1.1.zip文件(根据不同的idea插件开发版本这个文件也会随之改变的),但是这个文件超特么的大500多M🙂🙂🙂,大不是问题,但是太慢了,我中途还出超时出错过,因此不我希望你们也遇到这个问题,错误大概是这样的

A problem occurred configuring root project 'myplugin2'.
> Could not resolve all files for configuration ':detachedConfiguration1'.
   > Could not download ideaIC-2020.1.1.zip (com.jetbrains.intellij.idea:ideaIC:2020.1.1)
      > Could not get resource 'https://cache-redirector.jetbrains.com/www.jetbrains.com/intellij-repository/releases/com/jetbrains/intellij/idea/ideaIC/2020.1.1/ideaIC-2020.1.1.zip'.
         > Read timed out

但是,这个等待的时间不是白白的浪费了,至少我知道错误在哪,下载什么文件失败的,原来是下载这个路径下的这个zip文件(而且通过这个URL也知道了jetbrains的release版本仓库在哪个位置了),于是ctrl+c 这个url,默默打开我的迅雷X,开启了立即下载模式

在这里插入图片描述

等下载完成大概是这样的,507 MB (532,523,505 字节),果然厉害,这个就是IDEA2020.1.1的社区版!

在这里插入图片描述

但是问题来了我下载下来的文件放在哪呢,gradle的自动编译才能用我的这个zip包呢?
于是牵扯到了gradle的本地缓存了。

打开系统盘下当前用户的.gradle目录,进入.gradle\caches\modules-2\files-2.1目录,即为缓存文件的目录。但是我怎么知道是哪个具体的目录下呢?这个时候又是上面这个报错的url的地方,仔细看com/jetbrains/intellij/idea/ideaIC/2020.1.1/ideaIC-2020.1.1.zip这一段,这不就知道是哪个目录了,于是进入到.gradle\caches\modules-2\files-2.1\com.jetbrains.intellij.idea\ideaIC\2020.1.1目录,再一看他是这样的ff8c1b826417ce9d8a537b41e64d0253be9dbac0目录名称(你的可能不是这样的),我去,这个应该是加密过的,但是是什么加密呢?,经过了解知道了这个是SHA1加密,且是对文件进行SHA1的加密生成的唯一字符串,但是windows上没有这个命令,在线SHA1也太麻烦了,还要上传文件,于是想到了Java的API,还有就是通过git hash命令行来实现。

在这里插入图片描述

把我们的文件ideaIC-2020.1.1.zip先临时拷贝到这个目录。运行sha1sum.exe ideaIC-2020.1.1.zip命令,生成唯一的唯一字符串(用来校验文件的完整性),这样就拿到这个640aff4c23a001e5595ee654670d774e9efcd118目录名

在这里插入图片描述

接下来在2020.1.1目录下,新建目录640aff4c23a001e5595ee654670d774e9efcd118,将ideaIC-2020.1.1.zip移动进去即可。这样就完成了手动导入依赖的过程😎😎😎遇到的问题二,gradle build过程中堆栈溢出。

描述如下

A build operation failed.
 Java heap space >
  Java heap space

解决方法,在IDEA项目根目录下,新建文件gradle.properties,添加如下内容,变更gradle Jvm参数

org.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m

然后就开开心心手动构建环境即可完成。

总结

搭建IDEA插件开发环境方式很多,看个人开发喜好,官方建议使用gradle的方式搭建比较全面。
搭建环境过程并不是一帆风顺,也花费了挺多挺多的时间,其他人得解答也只是片段,并不能完美解决我的问题,于是才有了这篇文章,后续打算开发一个自己的插件,来解决自己的问题,到时候再记录把。

到此这篇关于IDEA插件开发之环境搭建过程图文详解的文章就介绍到这了,更多相关IDEA插件开发环境搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot创建Docker镜像的方法步骤

    SpringBoot创建Docker镜像的方法步骤

    这篇文章主要介绍了SpringBoot创建Docker镜像的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Java解决同时出库入库订单号自动获取问题解决

    Java解决同时出库入库订单号自动获取问题解决

    在Java中,处理多线程环境下的订单号生成问题可以采用多种策略,如使用AtomicLong保证线程安全,通过定义订单号生成器并利用线程模拟出库和入库操作,每个线程从订单号生成器中获取唯一订单号,感兴趣的朋友一起看看吧
    2024-09-09
  • 彻底搞懂Java多线程(一)

    彻底搞懂Java多线程(一)

    这篇文章主要给大家介绍了关于Java面试题之多线程和高并发的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2021-07-07
  • SpringBoot集成ShardingSphere实现数据库分表

    SpringBoot集成ShardingSphere实现数据库分表

    ShardingSphere 是一个开源的分布式数据库中间件,旨在为应用提供数据库分片、读写分离、分布式事务等功能,下面我们来看看SpringBoot如何集成ShardingSphere实现数据库分表吧
    2024-12-12
  • Mybatis plus的自动填充与乐观锁的实例详解(springboot)

    Mybatis plus的自动填充与乐观锁的实例详解(springboot)

    这篇文章主要介绍了Mybatis plus的自动填充与乐观锁的实例详解(springboot),本文给大家介绍的非常详细对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Java桶排序之基数排序详解

    Java桶排序之基数排序详解

    这篇文章主要为大家介绍了Java桶排序之基数排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 在idea中利用maven实现多环境配置自动打包的流程步骤

    在idea中利用maven实现多环境配置自动打包的流程步骤

    这篇文章主要介绍了在idea中利用maven实现多环境配置自动打包的流程步骤,文中通过图文和代码示例介绍的非常详细,对大家的学习或工作有一定帮助,需要的朋友可以参考下
    2024-11-11
  • maven配置阿里云仓库的实现方法(2022年)

    maven配置阿里云仓库的实现方法(2022年)

    本文主要介绍了maven配置阿里云仓库的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Java EE过滤器优先级控制的实例解读

    Java EE过滤器优先级控制的实例解读

    通过使用@Priority注解,可以控制JavaEE应用中过滤器的执行顺序,在上面的示例中,我们通过设置不同的优先级,实现了TimeFilter和LogFilter的执行顺序控制
    2025-02-02
  • Spring AspectJ 实现AOP的方法你了解吗

    Spring AspectJ 实现AOP的方法你了解吗

    这篇文章主要为大家介绍了Spring AspectJ 实现AOP的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01

最新评论