idea插件开发(二)经验分享

一、引言

        在开发合并检查插件的时候,作者也遇到了不少问题,主要是自己摸索,没有其他人的经验。不过这种从0到1的技术研究对个人还是有好处的,就像作者之前自己捣鼓了一个微信小程序和到huggingface研究AI一样,虽然很麻烦,但是可以说很少有东西作者自己研究不了的。

        言归正传,接下来分享一些作者觉得会绕弯路的经验。

二、经验

1、环境

        idea的插件基本都是用Gradle进行开发的,主要是官方支持还有方便,社区也很活跃。IntelliJ IDEA对Gradle有良好的支持和集成。使用Gradle进行构建,可以方便地在IDE中进行项目配置、依赖管理和任务执行。

        在idea的file-project structure里面,需要下载并且设置IntelliJ IDEA IU的sdk

2、build.gradle 

        build.gradle用于定义项目的构建脚本。它包含了项目的构建逻辑、依赖管理、任务定义等信息

        Plugins用于扩展 Gradle 的功能。例如,java 插件用于构建 Java 项目,org.jetbrains.intellij 插件用于构建 IntelliJ IDEA 插件。

        repositories 块用于定义项目依赖的仓库位置。通过配置 repositories,Gradle 可以从指定的仓库中解析和下载项目所需的依赖项。flatDir指定打包放的目录,mavenCentral 是 Maven 中央仓库

        sourceSets 块用于定义项目的源代码和资源文件的位置

        allprojects 块用于配置所有子项目的通用设置

    intellij 块用于配置 IntelliJ IDEA 插件开发的相关设置,version 指定版本后,Gradle 会下载并使用该版本的 IntelliJ IDEA 进行构建和运行,下载的时间会比较长而且不能中断,要是断了还得重头再来。type 用于指定 IntelliJ IDEA 的类型。常见的类型包括:

  • 'IC':IntelliJ IDEA Community Edition(社区版)
  • 'IU':IntelliJ IDEA Ultimate Edition(旗舰版)

        patchPluginXml 块用于配置和修改 IntelliJ IDEA 插件的 plugin.xml 文件,changeNotes 用于指定插件的变更日志或发布说明,sinceBuild 用于指定插件兼容的最低 IntelliJ IDEA 构建版本,untilBuild 用于指定插件兼容的最高 IntelliJ IDEA 构建版本

        这个兼容版本作者看的挺奇怪的,231.*应该就是指2023第一期的任意小版本

plugins {
    id 'java'
    id 'org.jetbrains.intellij' version '1.12.0'
}


group 'com.merge.check.designer'
version '1.0.2'

sourceCompatibility = 1.8

repositories {
    flatDir {
        dirs 'libs'
    }
    mavenCentral()
    maven {
        url "https://oss.sonatype.org/content/repositories/snapshots/"
    }
}

sourceSets.main.resources {
    srcDirs = ['src/main/java', 'src/main/resources']
    include '**/*.xml'
    include '**/*.png'
    include '**/*.ico'
    include '**/*.gif'
}

allprojects {

    dependencies {
        implementation fileTree(dir: 'libs', includes: ['*.jar'])
    }
}

// See https://github.com/JetBrains/gradle-intellij-plugin/
intellij {
    version = '2022.3'
    type = 'IU'
    plugins = ['java','Git4Idea']
}
patchPluginXml {
    changeNotes = """
      <em>1.0.0 首发版本</em><br>
      1. 首发版本 <br>
      
      """

    sinceBuild = '162.*'
    untilBuild = '231.*'
}

3、plugin.xml

        plugin.xml 定义插件的元数据、依赖、兼容性、描述、变更日志、扩展点、组件和资源绑定等信息,基本上插件的按钮、实现功能、切入、监听都需要在这里进行定义。

        比如这样就是实现监听vfs的文件监听

<applicationListeners>
        <listener class="com.merge.check.idea.plugin.listener.ChangeListener"
                  topic="com.intellij.openapi.vfs.newvfs.BulkFileListener"/>
    </applicationListeners>

4、gradle-wrapper.properties

        这个文件就是用来设置gradle版本的

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

5、上传

        做好的插件始终是要上传插件市场的,毕竟手动安装比较麻烦,很难推广

        在jetBrains注册,点击自己的账号,然后点击upload plugin,就可以上传了,上传之后会有一个自动检测,一般是要描述符合规范,还有不能使用一些过期方法

        后面会有工作人员邮件联系,一般是要求放开源码给他检测,还有对功能描述做进一步的要求,人工审核都比较麻烦,要打回来几次

        My profile | JetBrains Marketplace

三、总结

        没有做过的读者可以试试,也许会火呢,不会做但是有想法的也可以给作者提提意见,作者去实现

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖当当技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值