IDEA插件开发之环境搭建过程图文详解
作者:sawi 发布时间:2022-01-17 14:04:08
基于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
的方式搭建比较全面。
搭建环境过程并不是一帆风顺,也花费了挺多挺多的时间,其他人得解答也只是片段,并不能完美解决我的问题,于是才有了这篇文章,后续打算开发一个自己的插件,来解决自己的问题,到时候再记录把。
来源:https://blog.csdn.net/sawiii/article/details/105952995


猜你喜欢
- @ConfigurationProperties注入创建一个新的模板此过程就不在这介绍了,在我SpringBoot专栏里有详细过程。⭐⭐⭐注
- Mybatis的缓存mybatis是一个查询数据库的封装框架,主要是封装提供灵活的增删改sql,开发中,service层能够通过mybati
- 使用第三方的vitamio插件实现简易的播放器。vitamio版本(5.2.3)官网地址:官网地址效果展示效果项目结构代码:MainActi
- 本文章向大家讲解java中时间的获取和格式化, 一. 获取当前系统时间和日期并格式化输出:import java.util.Dat
- 1、多态性多态性是面向对象的最后一个特征,它本身主要分为两个方面:方法的多态性:重载与覆写1 重载:同一个方法名称,根据参数类型以及个数完成
- 引言因为写了不少 Spring Security 文章的缘故,所以总是有小伙伴来问松哥:按钮级别的权限怎么实现?甚至有一些看过 vhr 的小
- 单例模式有一下特点:1、单例类只能有一个实例。2、单例类必须自己自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。单例模式确
- 一、为何要使用netty开发由于之前已经用Java中的socket写过一版简单的聊天室,这里就不再对聊天室的具体架构进行细致的介绍了,主要关
- 多进程如果需要的时候,app可以创建多进程。在进程里面各类组件元素的清单文件条目 、 、 和— 均支持 android:process 属性
- 本文主要介绍了c# 使用线程对串口serialPort进行收发数据,分享给大家,具体如下:一共写了四种方法,窗体界面都是一样的:方法一:us
- 泛型 一般 出现在集合中,迭代器中 也会出现!泛型 是为了 提高代码的 安全性。 泛型 确保数据类型的唯一性。在我们常用的容器中
- 1. 使用Files.list()迭代目录及其子目录文件Files.list()可以迭代目录及其子目录文件Files.list(Paths.
- 1、Java数组介绍在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型(Object类型数组除外)。①、数组的声明
- 一、概述在上一篇的叙述中,我们通过图层的方式完成了图片颜色的填充(详情请戳:Android不规则图像填充颜色小游戏),不过在着色游戏中更多的
- 前言众所周知,encache是现在最流行的java开源缓存框架,配置简单,结构清晰,功能强大。通过注解 @Cacheable 可以快速添加方
- 方式一:在gradle.properties中写入:#测试环境ENV_TEST=test#开发环境ENV_DEV=dev#生产环境ENV_O
- SnackBar是DesignSupportLibrary中的一个重要的控件,用于在界面下面提示一些关键信息,跟Toast不同的地方是Sna
- 使用HTTPclient访问url获得数据最近项目上有个小功能需要调用第三方的http接口取数据,用到了HTTPclient,算是做个笔记吧
- 本文实例为大家分享了java实现点击按钮事件弹出子窗口的具体代码,供大家参考,具体内容如下要求:1、在父窗口中添加一个按钮2、点击按钮弹出子
- 简介happens-before是JMM的核心概念。理解happens-before是了解JMM的关键。1、设计意图JMM的设计需要考虑两个