IDEA插件版本升级和兼容新版本idea

1.关于IDEA插件的版本设置问题

打开jetbrains插件市场,随意打开一个插件详情页面的Versions菜单,我们可以看见一个插件包不同时期发布的不同版本(Versions),并且每个版本包含了可兼容IDEA或PyCharm的版本范围(Compatibility Range)和更新时间(Update Date)(如下图所示,图例参考链接:https://plugins.jetbrains.com/plugin/20956-huawei-cloud-codearts-check/versions)。

于用户视角而言,只要依据idea或PyCharm版本下载对应的插件版本即可,如果用户直接从IDEA/PyCharm的Settings->Plugins->Marketplace直接搜索下载,用户甚至无需考虑版本和兼容性问题。

而对于插件开发者视角,插件的版本和对IDEA各版本的可兼容则是不可避免的需要考虑的问题,那么插件的版本和可兼容范围是如何设置的呢?

【插件版本设置】

有的插件工程包含build.gradle,有的不包含build.gradle,所以设置版本和兼容idea范围的方式略有不同。

(1)工程中不包含build.gradle:

plugin.xml 文件中添加<version></version> 标签,用以设置版本号;设置<idea-version since-build="起始版本" until-build="终止版本"/>定插件兼容范围,until-build可选。

(2)工程中包含build.gradle

build.gradle文件中设置 version定版本号(此处示例为groovy和kotlin两种设置方式);设置sincBuild、untilBuild 定插件兼容范围,untilBuild 可选。

【插件可兼容范围】

当然,一个idea插件要兼容不同版本idea不是仅仅改变一个数字参数那么简单,要保证插件能在对应版本的IDEA上能够正确运行,还需要兼顾插件对于idea版本的兼容性

因为IDEA插件开发所使用的基础依赖都来自于idea的com.intellij

所以逻辑上来说,只要插件所引用的来自于com.intellij的API(内源API)存在于某版本的IDEA内,插件就可以适配于该IDEA版本,如果插件所引用内源API在新版本IDEA中被弃用或者替换,则插件不适用于新版本IDEA。

除此之外,IDEA编译所需的JDK、gradle版本的变化也会影响插件对idea版本的兼容性。

举两个栗子:

  • 例1:新版本IDEA弃用旧API使得插件不适用于新版本IDEA:某插件CodeArts Check 在本地debug使用idea2021.1版本及之前版本启动插件时没有问题,使用idea2021.2及之后版本启动则报错(报错信息如下所示)。是因为插件中调用的com.intellij.ide.plugins.cl.PluginClassLoader 类在2021.2版本中已经被弃用,应该要用替换类com.intellij.ide.plugins.cl.PluginAwareClassLoader替换,才能适用idea2021.2及之后版本。

 ·

  • 例2:新版本IDEA只支持更高版本gradle和jdk使得插件不适用于新版本IDEA:某插件CodeArts Check 在兼容2023.1 IDEA时debug和编译报错(报错信息如下所示),无法启动。是因为2023.1 IDEA支持编译的gradle和jdk版本已升级为gradle7.4和jdk17,所以低版本的gradle、jdk无法编译。

gradle版本不匹配,编译报错:

jdk版本不匹配,启动报错:

因此,每次IDEA出现新版时,需要在jetbrains官网查看新版本IDEA是否有jdk和gradle依赖的硬性要求,或者有api需要替换,以便插件兼容新版本IDEA,并且为了更大范围兼容IDEA版本,往往一个版本的插件需要发布多个包,区分适配哪个版本范围的IDEA插件。

其他参考:

idea最新变化:https://www.jetbrains.com/zh-cn/idea/whatsnew/

idea版本更新通知:https://www.jetbrains.com/zh-cn/idea/download/other.html

内部api迁移:https://plugins.jetbrains.com/docs/intellij/api-internal.html#intellij-platform 

插件API变化:https://plugins.jetbrains.com/docs/intellij/api-notable.html

不兼容API更改:https://plugins.jetbrains.com/docs/intellij/api-changes-list.html 

验证插件兼容性: https://plugins.jetbrains.com/docs/intellij/verifying-plugin-compatibility.html#obsolete-api

2.关于IDEA插件设置无限兼容版本

IDEA插件兼容新版本idea有两个方案:

无限兼容:每次都只发布一个版本来适配和兼容所有版本IDEA

有限兼容:每次发多个版本来适配和兼容不同版本的IDEA(CodeArts Check 插件也采取一次发布多个版本包的方案来兼容不同版本IDEA)

3.关于IDEA插件设置无限兼容版本和有限兼容版本的优缺点总结

无限兼容版本:有限兼容版本:
优点

新版本IDEA出现时,无需重新发版适配,可以直接安装

可适配的idea版本,插件功能均不会报错,可以保证插件功能不受内部api更新迭代影响。
缺点如果使用到的内部api,在新版本idea中被弃用,则插件功能不齐全,即使可以按装也依旧会报错新版本idea发版时,插件无法立刻兼容新版本,需要开发人员适配后发新版本兼容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/131842.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【面试经典150 | 哈希表】有效的字母异位词

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;排序方法二&#xff1a;哈希数组 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于…

Python:如何在一个月内学会爬取大规模数据

Python爬虫为什么受欢迎 如果你仔细观察&#xff0c;就不难发现&#xff0c;懂爬虫、学习爬虫的人越来越多&#xff0c;一方面&#xff0c;互联网可以获取的数据越来越多&#xff0c;另一方面&#xff0c;像 Python这样的编程语言提供越来越多的优秀工具&#xff0c;让爬虫变得…

Android笔记(二):JetPack Compose定义移动界面概述

一、JetPack Compose组件概述 JetPack Compose是Google公司在2021年正式推出的声明式UI工具包。Compose库用于开发原生Android应用界面。它取代传统XML文件配置界面&#xff0c;不需要界面编辑工具&#xff0c;而是采用强大Kotlin API以及函数搭建移动应用界面&#xff0c;代码…

华为云云耀云服务器L实例评测 | 实例使用教学之综合导览

华为云云耀云服务器L实例评测 &#xff5c; 实例使用教学之综合导览 实例使用教学实例场景体验实例性能评测实例评测使用介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什么华为云云耀云…

深度学习简述

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

nodejs+vue家教管理系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1nodejs简介 4 2.2 express框架介绍 6 2.3 B/S结构 4 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性…

# 解析Pikachu靶场:一个安全研究的练习场

引言 Pikachu靶场是一个非常流行的安全研究和渗透测试练习平台。这个环境包括多个安全漏洞&#xff0c;从基础的到高级的&#xff0c;供安全研究人员和渗透测试者进行实验和学习。在这篇博客中&#xff0c;我们将探讨Pikachu靶场的基本概念&#xff0c;功能&#xff0c;以及如…

【Unity3D赛车游戏制作】设置面板搭建——UGUI复合控件

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

stm32 hal库 st7789 1.54寸lcd

文章目录 前言一、软件spi1.cubemx配置2.源码文件 二、硬件spi1.cubemx配置2.源码文件3.小小修改 总结 前言 1.54寸lcd 240*240 一、软件spi 1.cubemx配置 一定要注意把这几个东西上拉。 使用c8 2.源码文件 我使用的是中景园的源码&#xff0c;他本来是是标准库的稍微修改…

原理:用UE5制作一个2D游戏

选中资产图片右键--Sprite Actions--Apply Paper2D Texture Settings 制作场景 把它丢到场景里&#xff0c;并把坐标归零 创建图块集tileset 打开新建的tile set&#xff0c;根据最小图块设置最小尺寸单元 选择需要的图块单元&#xff0c;add box 对新建的tile set右键创建til…

elasticsearch 8.5.3问题记录

一&#xff1a;解决 elasticsearch 高版本 warning: ignoring JAVA_HOMEC:\Program Files\Java\jdk-11&#xff1b; using bundled JDK if defined JAVA_HOME (set JAVA_HOME%JAVA_HOME%; )示例版本Elasticsearch 8.5.3 可以与 JDK 11 兼容&#xff0c;但不支持 JDK 17。确保选…