zoukankan      html  css  js  c++  java
  • IDEA插件开发笔记001环境搭建(使用Gradle插件方式)

    作者说明

    此文章为原创文章,在博客园发表的作者,和微信订阅号“勉以知 知为智”('Life_Tech_Thinking')均为作者本人。

    小记

    今天鼓捣了一天IDEA Community的插件开发环境,现在总结一些关键点

    阅读文档

    超级详细的开发文档IntelliJ Platform SDK DevGuide

    快速入门可以阅读Creating Your First Plugin

    注意事项 IDE Development Instances文档有一个重要说明,运行插件程序之后,他会启动之后的IDEA实例,这个实例需要运行在IDEA配套的JetBrains的Runtime。也就是 JBR。如果启动之后的Runtime不是JBR,就不太好,可能有问题。后面会重点讲如何解决这个问题。

    步骤

    安装Gradle

    Gradle有几个要素:

    GRADLE_USER_HOME系统环境变量,因为Gradle用到了Cache,这个Cache默认在 USER.DIR/cache目录,也就是在C盘,这对于Windows用户来说,这能忍?
    因此我指定这个变量GRADLE_USER_HOME=H:GradleData,这样每次Gradle下载的目录都在这个目录下,不会占用C盘空间。

    PATH 直接添加GRADLE安装路径的bin目录。

    gradle.properties这个文件是跟着GRADLE_USER_HOME走的,在GRADLE_USER_HOMEgradle.properties, 这个文件用于配置全局属性。

    Gradle使用代理开发IDEA插件,会下载IDEA的二进制发行包,以及他的源码,不设置代理,几乎不可能下载成功的。

    这里给出Gradle的代理配置,根据实际需要修改:

    systemProp.https.proxyHost=127.0.0.1
    systemProp.https.proxyPort=1080
    systemProp.https.nonProxyHosts=localhost
    systemProp.http.proxyHost=127.0.0.1
    systemProp.http.proxyPort=1080
    systemProp.http.nonProxyHosts=localhost
    

    安装IDEA

    电脑本身有IDEA的可以跳过,推荐使用 Jetbrains Tookbox安装任意版本的IDEA。

    根据IDEA的文档,IDEA本身构建于IntelliJ Platform,他自己其实也是IntelliJ Platform。因此如果不想下载额外的Platform SDK可以经过配置直接使用,避免在Gradle运行插件时下载。

    使用Jetbrains提供的官方Template

    打开intellij-platform-plugin-template项目,登录GitHub账号之后才会看到文档中所说的use this Template按钮。

    从IDEA中导入这个项目,如果要防止Gradle Wrapper自动运行,要提前设置 Gradle 使用安装好的Gradle,而不是用Gradle-Wrapper,否则要下载Gradle,网络不好的情况下又是一次折磨。

    打开项目之后,可以看到 Gradle的构建配置文件 build.gradle.kts

    // Configure gradle-intellij-plugin plugin.
    // Read more: https://github.com/JetBrains/gradle-intellij-plugin
    intellij {
        pluginName = pluginName
    //    version = platformVersion 这里不打开这个选项,否则Gradle会从网上下载IDEA,本地有不想下载的。
        type = platformType
        localPath = intelliJPath //这里的IntelliJPath变量需要仿照其他的变量进行声明,并且在 build.properties 中指定他的值。
    //    localSourcesPath = intelliJSourcePath
        downloadSources = platformDownloadSources.toBoolean()
        updateSinceUntilBuild = true
    
    //  Plugin Dependencies:
    //  https://www.jetbrains.org/intellij/sdk/docs/basics/plugin_structure/plugin_dependencies.html
    //
    //  setPlugins("java")
    }
    
    //这里是Gradle-IntelliJ插件的Task的配置
    tasks {
    
        runIde {
            jbrVersion("jbr-11_0_7b765.65")
        }
    
    }
    
    

    这里给出IDEA 文档中的Gradle Guide的配置链接。

    这里可以看到gradle-intellij-plugin的配置文件结构。

    在tasks节点中配置 runIde.jbrVersion 为("jbr-11_0_7b765.65"),这个是我多次尝试的结果,只有这样启动插件之后,启动实例才会使用对应的JBR,否则会使用 Oracle的JDK。

    这个版本的规则是什么?

    IDE Development Instances文档 中指出的地址中,可以看到Release notes。

    这里IDE使用的版本是 2020.1.4,那么这个版本就选择 20[201]4中括号对应的 201下方的最后一个版本:"11.0.7+10-b765.65"(可以在IDEA的 About看到这个版本代码), 那么点进去会看到下载链接(不要下载)。

    IntelliJ的JBR下载页面是对应上面的下载链接的, 可以看到文件名。

    jbr-11_0_7(-windows-x64)-b765.65.tar.gz 这个最终文件名去掉 jbr-11_0_7(-windows-x64)-b765.65括号中的平台号,得到jbrVersion=jbr-11_0_7b765.65

    经过尝试发现GRADLE是按照这个规则逆向计算出下载地址的。

    自己下载JBR是没用的,GRADLE还是会自己下载,他下载之后放进Cache才算完成。

    启动

    在IDEA 右侧的 Gradle选项卡 TAB,找到Task,RunIde 即可运行这个插件。

    另外一个重要的问题,Debug源码从哪里配置

    有人说可以从Github 找到Community IDEA的源码,可以切换到对应版本的TAG,例如 "201.8743.12",下载得到一个源码压缩包。这是IDEA 2020.1.4的对应版本。(此时已经有IDEA 2020.2了)

    这里给出一种更加完美的方法:
    https://www.jetbrains.com/intellij-repository/releases/ 这个网址给出了所有的IDEA二进制包,以及打包好的源码。下载ideaIC-sources.jar得到源码。

    页面上可以找到如下内容:

    201.8743.12	2020-07-21 05:47:47 MSK	201.8743.12	BUILD.txt idea-community-resources-sources.jar idea-community-resources.jar idea-community-resources.pom ideaIC-sources.jar ideaIC.pom ideaIC.zip ideaIU-teamcity.pom ideaIU-teamcity.zip ideaIU-annotations.zip ideaIU.pom ideaIU.zip intellij-core.pom intellij-core.zip jps-build-test.jar jps-build-test.pom jps-standalone.pom jps-standalone.zip ruby-test-framework.jar ruby-test-framework.pom
    

    在Project Structure中找到SDK,没有就添加一个IntelliJ Platform SDK, 这样就可以添加SourcePath,点击+选择刚刚下载好的源码,完美。

    总结

    这篇笔记给出了仅下载JBR+源码的配置方式,以及Gradle的简单配置,避免下载IDEA的二进制包(比较大)。

    重点讲述了怎么保证启动的IDEA实例使用正确版本的JBR。

    目的在于配置好之后,在符合IDEA规范和建议的前提下,能愉快得专注于插件开发。

  • 相关阅读:
    SQL Server 2017 左补齐
    Mac下面配置oh-my-ssh
    关于VSTS自动Build报错问题之Microsoft.Net.Compilers
    Angular5中提取公共组件之radio list
    Angular5中提取公共组件之checkbox list
    关于博客园开放API的授权问题解决
    记开发个人图书收藏清单小程序开发(十)DB开发——新增图书信息
    Keepalived + Nginx:负载均衡+高可用服务 --keepalived介绍及应用
    Nginx:综合架构负载均衡 -- nginx负载均衡企业实践应用
    Nginx:综合架构负载均衡 -- nginx负载均衡介绍部署及应用
  • 原文地址:https://www.cnblogs.com/slankka/p/13416565.html
Copyright © 2011-2022 走看看