简介

idea启动过程中,并不会自动去插件市场检查插件是否有更新。发布插件后,需要用户重启IDE,或者点击help -> check for updates,体验不太好。

如何自动检查更新

可以通过以下步骤来实现插件更新:

  1. 实现版本管理机制,让插件能够查询到当前最新可用的版本。
  2. 获取当前用户安装的插件版本,如果低于最新版本,则打开插件市场,并调用更新API。

这些操作依赖一些IntelliJ的open API:

查看当前安装的插件版本
String pluginId = "从plugin.xml中id属性获取";
public static String getVersion() {
    IdeaPluginDescriptor pluginDescriptor = PluginManagerCore.getPlugin(pluginId);
    if (pluginDescriptor == null) {
        return null;
    }
    return pluginDescriptor.getVersion();
}
打开IDE插件市场窗口

可以放在notification中,用户点击安装更新后,再执行此操作。

ShowSettingsUtil.getInstance().showSettingsDialog(project, "Plugins")
插件市场更新插件

如果不手动调用更新API,IDE在不重启或者点击check for update菜单的情况下,不会去插件市场检查插件是否有更新。

UpdateSettings settingsCopy = new UpdateSettings();
settingsCopy.getState().copyFrom((BaseState)UpdateSettings.getInstance().getState());
settingsCopy.getState().setCheckNeeded(true);
settingsCopy.getState().setPluginsCheckNeeded(true);
settingsCopy.getState().setThirdPartyPluginsAllowed(true);
settingsCopy.getState().setShowWhatsNewEditor(false);
UpdateChecker.updateAndShowResult(project, settingsCopy);

仓库管理

如果你不想发布到IDEA的插件市场,可以自己搭建一个http服务器,提供一个xml的文件描述地址,如:http:///plugins/idea/plugins.xml

<plugins>
  <plugin id="<plugin.xml中的id>" url="http://<ip>/plugins/idea/<plugin-name>.zip" version="1.8.2-alpha.1+1008">
    <name>Your Plugin Name</name>
    <vendor email="<Your Email>" url="<Your URL>">Your Orgnazation Name</vendor>
    <idea-version since-build="<idea version>,例如222"/>
  </plugin>
</plugins>

版本管理

常用的版本格式为:MAJOR.MINOR.PATCH,如果你想发布内部测试版本,可以在PATCH后面追加字符,如:1.8.2-alpha.1+1008,下次再发布可以变成1.8.3-alpha.1+1009。

参考文档:https://plugins.jetbrains.com/docs/marketplace/semver.html
版本命名规范:https://semver.org/
测试版本是否符合规范:https://jubianchi.github.io/semver-check/#/version/2.1.5-alpha.2%2B1008

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐