从零开始写一个IDEA插件(二)—— 环境准备

开发环境

上篇文章从零开始写一个IDEA插件(一)------ 前言我们讲了我们要做一个怎么样的插件,这里我们就正常开始进入插件的开发阶段,首先主要准备我们插件开发的基本环境,了解一些基本的配置,并且可以让我们的项目正常的编译和运行起来。

首先我们使用的IDEA版本是当前最新版本2023.2.1(Build #IU-232.9559.62),使用的JDK版本是20.0.2

从IDEA版本2022.2开始,已经开始依赖JAVA17了

新建Plugin项目

打开IDEA,File -> New -> Project,选择IDEA Plugin,开始创建一个插件项目:

注意:JDK版本必须选择17以上,否则无法创建项目

项目创建成功之后,我们会发现它默认创建的是一个kotlin项目,gradle的配置也是kotlin方式的配置,我们可以把它改回来:

  • src/main目录下新建一个java文件,再将kotlin目录删除
  • 复制一份build.gradle.kts,将它改名为build.gradle,里面的配置格式也修正一下,可以先删除一些不必要的配置

最终的目录结构如下:

build.gradle配置如下:

json 复制代码
//必要插件,java 和 intellij
plugins {
    id "java"
    id "org.jetbrains.intellij" version "1.15.0"
}

group  "com.dadada.plugin"
version "1.0-SNAPSHOT"

//指定仓库
repositories {
    mavenCentral()
}

intellij {
    //version属性是一定要指定的,这个属性主要用来指定构建插件时使用的IDEA版本,如果太低,那么你在插件使用了一些版本才有的特性,就会构建失败,反之一样。
    version = "2022.2.5"
    //依赖的IDEA的具体发行版本,可以不用指定,默认就是IC,即社区版本(IntelliJ IDEA Community Edition)
    type = "IC" 

    //localPath可以指定你本地的IDEA版本作为依赖,这样就不用下载了, 这个和version不能同时存在
    //localPath = ""
}

tasks {

    //这里的参数会在构建时, 替换掉plugin.xml中对应的属性
    patchPluginXml {
        sinceBuild = "222"
        untilBuild = "232.*"
    }

}

里面比较重要的是plugins的配置,以及intellij模块的配置,正常来说,如果我们是配置的version,那么在构建项目时会比较慢,因为它需要去下载对应版本的IDEA用于构建项目。如果一下无法下载下来,我们可以选择不指定version,而是使用localPath指定本地的IDEA目录来用于项目的构建。

patchPluginXml可以在编译时替换掉我们plugin.xml中的配置,这样就可以不用去改对应的配置了。

plugin.xml配置

项目中还有一个比较重要的配置是resources/META-INF/plugin.xml,这里面包括一些插件的基础信息配置,以及我们后面需要配置的扩展点都需要通过它来进行:

xml 复制代码
<idea-plugin>
    <!-- 插件的唯一标识,整个插件市场唯一,发布后就不能改了 -->
    <id>com.dadada.plugin.http-plugin</id>

    <!-- 插件名称 -->
    <name>HttpRunner</name>

    <!-- 插件作者信息 -->
    <vendor email="dadada@yourcompany.com" url="https://www.dadada.com">哒哒哒打代码</vendor>


    <!-- 插件的描述,在插件发布后会在插件首页显示 -->
    <description><![CDATA[
      <p>这是一个HTTP插件,可以解析SpringMVC接口并且自动生成参数,支持本地调用</p>
  ]]></description>

    <!-- 插件的依赖配置, 任何插件都应该配置platform, 才可以使用一些基本的功能 -->
    <depends>com.intellij.modules.platform</depends>

    <!--插件扩展点配置, 后面我们的一些扩展会在这里配置 -->
    <extensions defaultExtensionNs="com.intellij">
        
    <!-- 插件的兼容版本,这里使用的是build number -->
    <idea-version since-build="203" until-build="232.*"/>

    </extensions>
</idea-plugin>
  • id是这个插件的唯一标识,发布后就没办法更改了,而且如果和现有的插件市场中的id有冲突的话也是没办法发布的。
  • 插件描述中可以使用html代码来进行美化。
  • com.intellij.modules.platform这个依赖是一定需要配置的,我们需要用到的一些很基础的功能,比如消息、主题、UI、Action等等,都依赖于它。
  • extensions主要用于配置一些扩展点,比如一些service通知配置等等。
  • idea-version指定的是我们插件的兼容版本,注意这里使用的是build number,而不是它的发行版本号,具体对应关系可以看IntelliJ Platform Based Products of Recent IDE Versions

这样一个最基础的插件项目就准备好了,这时候我们右上角选择Run Plugin

然后运行,应该是可以正常编译并且启动了一个新的IDEA,但是我们的项目中没有写任何代码,所以仅仅只是启动了一个简单的IDEA而已。

总结

这篇文章主要是准备我们的插件开发环境,进行了一些基础的配置,并且说明了每项配置的作用,并且可以正常将项目编译和运行,下篇文章就开始进行代码的开发了,我们会先开始我们的工具栏界面(也就是toolWindow)开发。

如果这些内容对你有一点小小的作用,赞和关注随便点点,谢谢!

相关推荐
什么想法都无3 分钟前
stream
java·java stream
m0_748233644 分钟前
WebService简介
java
love静思冥想5 分钟前
Stream `Collectors.toList()` 和 `Stream.toList()` 的区别(Java)
java·stream
编码浪子22 分钟前
构建一个rust生产应用读书笔记7-确认邮件2
开发语言·后端·rust
Ch.yang24 分钟前
【Spring】 Bean 注入 HttpServletRequest 能保证线程安全的原理
java·spring·代理模式
web1508509664125 分钟前
基于Mysql、JavaScript、PHP、ajax开发的MBTI性格测试网站(前端+后端)
java
昙鱼33 分钟前
springboot创建web项目
java·前端·spring boot·后端·spring·maven
eternal__day33 分钟前
数据结构(哈希表(中)纯概念版)
java·数据结构·算法·哈希算法·推荐算法
天之涯上上37 分钟前
JAVA开发 在 Spring Boot 中集成 Swagger
java·开发语言·spring boot
2402_8575834939 分钟前
“协同过滤技术实战”:网上书城系统的设计与实现
java·开发语言·vue.js·科技·mfc