{"id":654512,"date":"2025-11-03T15:07:54","date_gmt":"2025-11-03T14:07:54","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=platform&#038;p=654512"},"modified":"2025-11-03T16:09:20","modified_gmt":"2025-11-03T15:09:20","slug":"intellij-platform-2025-3-what-plugin-developers-should-know","status":"publish","type":"platform","link":"https:\/\/blog.jetbrains.com\/zh-hans\/platform\/2025\/11\/intellij-platform-2025-3-what-plugin-developers-should-know","title":{"rendered":"IntelliJ Platform 2025.3: What Plugin Developers Should Know"},"content":{"rendered":"\n<p>As we approach the release of IntelliJ IDEA 2025.3, we would like to share key information about changes that may impact your plugin development process. This post addresses common questions from the developer community and provides guidance on maintaining compatibility with the latest IntelliJ Platform versions.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">No Immediate Upgrade Required<\/h1>\n\n\n\n<p>If you built your plugin against the IntelliJ Platform 2025.2 or earlier, it should remain compatible with 2025.3. You don&#8217;t need to rush to update right away.<\/p>\n\n\n\n<p><strong>Tip:<\/strong> Check compatibility locally by running the <a href=\"https:\/\/plugins.jetbrains.com\/docs\/intellij\/tools-intellij-platform-gradle-plugin-tasks.html#verifyPlugin\" target=\"_blank\" rel=\"noopener\"><code>verifyPlugin<\/code><\/a> Gradle task. This performs the same IntelliJ Plugin Verifier checks that are automatically run on JetBrains Marketplace when you upload plugin updates.<\/p>\n\n\n\n<p>The IntelliJ Platform maintains strong backward compatibility, which generally preserves between minor versions. It means you can take your time testing and migrating your plugins.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Major Change: Unified Platform Distribution<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">What&#8217;s Changing?<\/h2>\n\n\n\n<p>Starting with version 2025.3, IntelliJ IDEA Community and Ultimate will be delivered as a unified platform. This marks a significant architectural change that makes plugin development and distribution easier. Read the full announcement: <a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/07\/intellij-idea-unified-distribution-plan\/\">IntelliJ IDEA Moves to the Unified Distribution<\/a>.<\/p>\n\n\n\n<p>Starting with 2025.1, PyCharm has undergone the same unification. Learn more in the <a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2025\/04\/pycharm-2025-1\/\">PyCharm Unified blog post<\/a>.<\/p>\n\n\n\n<p><strong>Note:<\/strong> These updates only affect plugins targeting IntelliJ IDEA 2025.3 and later. If your plugin still uses the IntelliJ Platform in version 2025.2 or earlier, no changes are needed at this time. References to IntelliJ IDEA Ultimate or Community for older versions continue working.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Key Implications for Plugin Developers<\/h2>\n\n\n\n<p>With the unified distribution:<\/p>\n\n\n\n<ul>\n<li>IntelliJ IDEA Community Edition (<code>IC<\/code>) builds for 2025.3 and later are no longer available. Trying to resolve artifacts using <code>IC-2025.3<\/code>, <code>IC-253.x.y<\/code>, or the <code>intellijIdeaCommunity()<\/code> dependency helper will cause an error.<\/li>\n\n\n\n<li>For version 2025.3 and future versions, you must target <code>intellijIdea()<\/code> as a platform artifact.<\/li>\n\n\n\n<li>When targeting PyCharm 2025.1 and above, use <code>\u2060pycharm(version)<\/code> instead of \u2060<code>pycharmCommunity(version)<\/code> and <code>\u2060pycharmProfessional(version)<\/code>.<\/li>\n\n\n\n<li>The unified distribution retains the same <code>IU<\/code> product code as IntelliJ IDEA Ultimate.<\/li>\n\n\n\n<li>The difference between Community and Ultimate now depends on licensing and feature access, not separate IDE distributions. All IntelliJ IDEA Ultimate plugins are included in the distribution but are disabled if there is no active subscription.<\/li>\n\n\n\n<li>The <a href=\"https:\/\/blog.jetbrains.com\/platform\/2025\/09\/the-lsp-api-is-now-available-to-all-intellij-idea-users-and-plugin-developers\/\">Language Server Protocol (LSP)<\/a> is available in a unified distribution and does not require a subscription.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Depending on Paid Functionality<\/h2>\n\n\n\n<p>If your plugin requires subscription-based features, you can explicitly depend on <code>com.intellij.modules.ultimate<\/code>. This module represents the licensing mechanism; when a user doesn&#8217;t have an active subscription, this module and all plugins that depend on it are disabled.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;idea-plugin>\n\u00a0\u00a0\u00a0\u00a0&lt;!-- ... -->\n\u00a0\u00a0\u00a0\u00a0&lt;depends>com.intellij.modules.platform&lt;\/depends>\n\u00a0\u00a0\u00a0\u00a0&lt;depends>com.intellij.modules.ultimate&lt;\/depends>\n\u00a0\u00a0\u00a0\u00a0&lt;!-- ... -->\n&lt;\/idea-plugin><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">What Does This Mean for Your Users?<\/h2>\n\n\n\n<p>Users upgrading from IntelliJ IDEA Community 2025.2&nbsp; will be smoothly transitioned to the unified IntelliJ IDEA 2025.3 as part of a regular version update. All plugins will continue working.&nbsp;<\/p>\n\n\n\n<p>The free tier now offers additional features:<\/p>\n\n\n\n<ul>\n<li>Basic database functions (schema viewing, SQL completion).<\/li>\n\n\n\n<li>Project wizards for Spring Boot, Ktor, and other frameworks.<\/li>\n\n\n\n<li>Basic syntax highlighting for frameworks.<\/li>\n\n\n\n<li>The Language Server Protocol (LSP) integration (previously only available in IntelliJ IDEA Ultimate).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Requirements<\/h2>\n\n\n\n<p>To work with version 2025.3, update the IntelliJ Platform Gradle Plugin to the latest version <strong>2.10.4<\/strong>. Check the <a href=\"https:\/\/github.com\/JetBrains\/intellij-platform-gradle-plugin\/releases\" target=\"_blank\" rel=\"noopener\">GitHub Releases<\/a> page for updates or look for suggestions in logs when building the plugin.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">plugins {\n  id(\"org.jetbrains.intellij.platform\") version \"2.10.4\"\n}<\/pre>\n\n\n\n<p>When targeting 2025.3 for development, you must use the new <code>\u2060intellijIdea()<\/code> dependency helper\u2014whether your plugin targets IntelliJ IDEA specifically or all other IDEs based on the IntelliJ Platform.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ When targeting 2025.2 and earlier:\ndependencies {\n    intellijPlatform {\n        intellijIdeaCommunity(\"2025.2\")\n        \/\/ or intellijIdeaUltimate(\"2025.2\")\n\n        bundledPlugin(\"com.intellij.java\")\n    }\n}\n\n\/\/ When targeting 2025.3 and later:\ndependencies {\n    intellijPlatform {\n        intellijIdea(\"2025.3\")\n        bundledPlugin(\"com.intellij.java\")\n    }\n}<\/pre>\n\n\n\n<p>When targeting PyCharm specifically, use the <code>pycharm()<\/code> dependency:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ When targeting 2025.2 and earlier:\ndependencies {\n    intellijPlatform {\n        pycharmCommunity(\"2024.3\")\n        \/\/ or pycharmProfessional(\"2024.3\")\n    }\n}\n\n\/\/ When targeting 2025.3 and later:\ndependencies {\n    intellijPlatform {\n        pycharm(\"2025.3\")\n    }\n}<\/pre>\n\n\n\n<p>See the <em>Step-by-Step Migration Guide<\/em> below for detailed instructions on updating your plugin.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Open Source and Custom IDEs<\/h1>\n\n\n\n<p>For developers building custom IDEs or using the open source version:<\/p>\n\n\n\n<ul>\n<li>The open source code remains available on GitHub at <a href=\"https:\/\/github.com\/JetBrains\/intellij-community\" target=\"_blank\" rel=\"noopener\">JetBrains\/intellij-community<\/a>.<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/tree\/master\/.github\/workflows\" target=\"_blank\" rel=\"noopener\">GitHub Actions<\/a> are now provided to simplify the process of building the IDE from source.<\/li>\n\n\n\n<li>Pre-built open source versions can be found on <a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/releases\" target=\"_blank\" rel=\"noopener\">GitHub Releases<\/a>.<\/li>\n\n\n\n<li>The open-source build utilizes the Community Edition (<code>IC<\/code>) product code and is compatible with all plugins that work with the Community Edition.<\/li>\n<\/ul>\n\n\n\n<p>Custom IDEs, like Android Studio, continue to function as before.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Key API Changes in 2025.3<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Module Extraction and Explicit Dependencies<\/h2>\n\n\n\n<p>Several modules have been separated from the core plugin into their own modules, each with its own individual classloader. While this does not affect binary compatibility, it is advisable to explicitly depend on the modules you need using <code>bundledModule(moduleName)<\/code>:<\/p>\n\n\n\n<ul>\n<li><code>intellij.platform.collaborationTools.auth.base<\/code><\/li>\n\n\n\n<li><code>intellij.platform.collaborationTools.auth<\/code><\/li>\n\n\n\n<li><code>intellij.platform.scriptDebugger.backend<\/code><\/li>\n\n\n\n<li><code>intellij.platform.scriptDebugger.protocolReaderRuntime<\/code><\/li>\n\n\n\n<li><code>intellij.platform.scriptDebugger.ui<\/code><\/li>\n\n\n\n<li><code>intellij.platform.vcs.dvcs<\/code><\/li>\n\n\n\n<li><code>intellij.platform.vcs.log<\/code><\/li>\n\n\n\n<li><code>intellij.platform.vcs.log.graph<\/code><\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">dependencies {\n    intellijPlatform {\n        intellijIdea(\"2025.3\")\n        bundledModule(\"intellij.platform.vcs.dvcs\")\n        bundledModule(\"intellij.platform.vcs.log\")\n    }\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">IntelliLang Plugin Dependency Change<\/h2>\n\n\n\n<p>If your plugin relies on the <code>org.intellij.intelliLang<\/code> plugin, declare a dependency on the bundled module <code>intellij.platform.langInjection<\/code>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ When targeting 2025.2 and earlier:\ndependencies {\n    intellijPlatform {\n        intellijIdeaCommunity(\"2025.2\")\n        bundledPlugin(\"org.intellij.intelliLang\")\n    }\n}\n\n\/\/ When targeting 2025.3 and later:\ndependencies {\n    intellijPlatform {\n        intellijIdea(\"2025.3\")\n        bundledModule(\"intellij.platform.langInjection\")\n    }\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Storage Annotation Restriction<\/h2>\n\n\n\n<p>The <code>@Storage<\/code> annotation can no longer be used at the top level. It must only be used within <code>@State.storages<\/code>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Service\n@State(name = \"MySettings\", storages = [Storage(\"MySettings.xml\")])\nclass MySettings : PersistentStateComponent&lt;MySettings> {\n\n  var myProperty = false\n\n  override fun getState() = this\n\n  override fun loadState(state: MySettings) = XmlSerializerUtil.copyBean(state, this)\n\n  companion object {\n    fun getInstance(): MySettings = service()\n  }\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Why Explicit Dependencies Matter<\/h2>\n\n\n\n<p>Declaring explicit dependencies on the plugins and modules your plugin uses is a best practice. It makes your plugin&#8217;s requirements clear to both the platform and other developers, ensures proper dependency loading order, and helps <a href=\"https:\/\/plugins.jetbrains.com\" target=\"_blank\" rel=\"noopener\">JetBrains Marketplace<\/a> determine product compatibility.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Understanding Dependencies: Gradle Build Script vs plugin.xml<\/h3>\n\n\n\n<p>Dependencies on plugins and modules defined in your Gradle build script, using the <code>plugin()<\/code>, <code>bundledPlugin()<\/code>, and <code>bundledModule()<\/code> dependency helpers, interact with the compilation classpath to ensure they are available during plugin development. However, to make them available at runtime for your plugin, it&#8217;s also required to define them in your <code>plugin.xml<\/code> file. See the <a href=\"https:\/\/plugins.jetbrains.com\/docs\/intellij\/plugin-dependencies.html\" target=\"_blank\" rel=\"noopener\">Plugin Dependencies documentation<\/a> for details.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Example with plugin dependencies<\/h4>\n\n\n\n<p>In your <code>build.gradle.kts<\/code>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">dependencies {\n    intellijPlatform {\n        intellijIdea(\"2025.3\")\n        bundledPlugin(\"com.intellij.java\")\n        plugin(\"org.intellij.scala:2025.3.14\")\n    }\n}<\/pre>\n\n\n\n<p>In your <code>plugin.xml<\/code>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;idea-plugin>\n    &lt;!-- ... -->\n    &lt;depends>com.intellij.modules.platform&lt;\/depends>\n    &lt;depends>com.intellij.java&lt;\/depends>\n    &lt;depends>org.intellij.scala&lt;\/depends>\n    &lt;!-- ... -->\n&lt;\/idea-plugin><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Example with plugin and bundled module dependencies<\/h4>\n\n\n\n<p>If your plugin depends on bundled modules, you must use the plugin model v2 dependencies definition, which requires the <code>&lt;dependencies&gt;<\/code> block with a clear separation between plugin and module dependencies.<\/p>\n\n\n\n<p>In your <code>build.gradle.kts<\/code>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">dependencies {\n    intellijPlatform {\n        intellijIdea(\"2025.3\")\n        bundledPlugin(\"com.intellij.java\")\n        plugin(\"org.intellij.scala:2025.3.14\")\n        bundledModule(\"intellij.platform.vcs.dvcs\")\n    }\n}<\/pre>\n\n\n\n<p>In your <code>plugin.xml<\/code>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;idea-plugin>\n    &lt;!-- ... -->\n    &lt;dependencies>\n        &lt;plugin id=\"com.intellij.modules.platform\" \/>\n        &lt;plugin id=\"com.intellij.java\" \/>\n        &lt;plugin id=\"org.intellij.scala\" \/>\n        &lt;module name=\"intellij.platform.vcs.dvcs\" \/>\n    &lt;\/dependencies>\n    &lt;!-- ... -->\n&lt;\/idea-plugin><\/pre>\n\n\n\n<p>This ensures that your plugin can compile with these dependencies during development and access them at runtime when users install it.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Step-by-Step Migration Guide<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Update Your Gradle Plugin Version<\/h2>\n\n\n\n<p>Update the IntelliJ Platform Gradle Plugin to the latest version, currently 2.10.4. Check the <a href=\"https:\/\/github.com\/JetBrains\/intellij-platform-gradle-plugin\/releases\" target=\"_blank\" rel=\"noopener\">GitHub Releases<\/a> page for updates or look for suggestions in logs when building the plugin.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[org.jetbrains.intellij.platform] IntelliJ Platform Gradle Plugin is outdated: 2.10.0. Update `org.jetbrains.intellij.platform` to: 2.10.4<\/pre>\n\n\n\n<p>To update your setup to the latest version, simply increase the plugin version in the <code>build.gradle.kts<\/code> file or the <code>.\/gradle\/libs.versions.toml<\/code> if applicable.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">plugins {\n    id(\"org.jetbrains.intellij.platform\") version \"2.10.4\"\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Testing Against 2025.3 Before Official Release<\/h2>\n\n\n\n<p>Even if your plugin is designed for older versions of the IntelliJ Platform, it can still be used in future releases. To ensure compatibility with newer IDEs than the SDK you use, utilize the IntelliJ Plugin Verifier tool to check binary compatibility against other IntelliJ Platform versions.<\/p>\n\n\n\n<p>In <code>build.gradle.kts<\/code> specify:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">intellijPlatform {\n   pluginVerification {\n        ides {\n            recommended()\n        }\n    }\n}<\/pre>\n\n\n\n<p>Next, run the <code>verifyPlugin<\/code> Gradle task to perform the verification and identify any potential issues that require attention.<\/p>\n\n\n\n<p>It is also possible to manually run a specific IDE with a different version than the one set for development, with your plugin loaded. To do this, register a new <code>runEap<\/code> Gradle task and execute it immediately afterward.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">val runEap by intellijPlatformTesting.runIde.registering {\n    type = IntelliJPlatformType.IntellijIdea\n    version = \"253-EAP-SNAPSHOT\"\n    useInstaller = false\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Switching to 2025.3 for development<\/h2>\n\n\n\n<p><strong>Important:<\/strong> The installer for IntelliJ IDEA 2025.3 will only be available once 2025.3 is officially released. Until then, if you want to test your plugin against 2025.3 early, you have two options:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Use a specific EAP release<\/h3>\n\n\n\n<p>All published JetBrains IDEs available for download are ready for use by all users and should also be used for plugin development to reflect our customers&#8217; needs. To do this, you can simply add the IntelliJ Platform dependency using <code>intellijIdea(\"2025.3\")<\/code>. However, if such a version is not yet available, you can refer to early access releases, which include their build numbers, available on the <a href=\"https:\/\/www.jetbrains.com\/idea\/nextversion\/\" target=\"_blank\" rel=\"noopener\">IntelliJ IDEA EAP download page<\/a> or in a machine-readable <a href=\"https:\/\/data.services.jetbrains.com\/products?code=iu\" target=\"_blank\" rel=\"noopener\">JSON feed<\/a>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">dependencies {\n    intellijPlatform {\n        intellijIdea(\"253.27864.23\")\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Use snapshot versions<\/h3>\n\n\n\n<p>JetBrains IDEs are also released as snapshots in the <a href=\"https:\/\/plugins.jetbrains.com\/docs\/intellij\/intellij-artifacts.html\" target=\"_blank\" rel=\"noopener\">IntelliJ Platform Artifacts Repositories<\/a>. To switch to these intermediate releases, you need to opt out of the installer artifacts and use a version specific to the <a href=\"https:\/\/www.jetbrains.com\/intellij-repository\/snapshots\" target=\"_blank\" rel=\"noopener\">IntelliJ Snapshots Maven Repository<\/a>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"kotlin\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">dependencies {\n    intellijPlatform {\n        intellijIdea(\"253-EAP-SNAPSHOT\") {\n            useInstaller = false\n        }\n    }\n}<\/pre>\n\n\n\n<p>Once 2025.3 is officially released, simply use <code>intellijIdea(\"2025.3\")<\/code>. For more details, see the<a href=\"https:\/\/plugins.jetbrains.com\/docs\/intellij\/tools-intellij-platform-gradle-plugin-dependencies-extension.html#target-versions\" target=\"_blank\" rel=\"noopener\"> Target Versions documentation<\/a>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Frequently Asked Questions<\/h1>\n\n\n\n<p><strong>Do I need to update my plugin immediately when 2025.3 is released?<\/strong><\/p>\n\n\n\n<p>No, plugins built for 2025.2 or older versions should still work with 2025.3.<\/p>\n\n\n\n<p><strong>What if my plugin only supports versions earlier than 2025.3?<\/strong><\/p>\n\n\n\n<p>No changes needed. The older syntax (<code>intellijIdeaCommunity(version)<\/code>, <code>intellijIdeaUltimate(version)<\/code>, <code>pycharmCommunity(version)<\/code>, and <code>pycharmProfessional(version)<\/code>) still works for older versions.<\/p>\n\n\n\n<p><strong>Will my plugin work with both free-tier and paid subscription users?<\/strong><\/p>\n\n\n\n<p>Yes, using the <code>intellijIdea(\"2025.3\")<\/code> makes your plugin work for all users regardless of subscription status.<\/p>\n\n\n\n<p><strong>Do I need to build multiple versions of my plugin for 2025.2 and 2025.3?<\/strong><\/p>\n\n\n\n<p>No. The platform type you specify in your build script is only used during plugin development. Your <code>plugin.xml<\/code> file contains the actual compatibility information through <code>&lt;depends&gt;<\/code> declarations and the <code>since-build<\/code> attribute. A single plugin build can work across multiple IDE versions.<\/p>\n\n\n\n<p><strong>Gradle fails with &#8220;Could not find idea:ideaIC:253.x.x&#8221;. What should I do?<\/strong><\/p>\n\n\n\n<p>This occurs because Community Edition builds are not available for versions 2025.3 and later. You have two options:<\/p>\n\n\n\n<ul>\n<li>Use an older version of IntelliJ IDEA Community for building, which will still make your plugin compatible with 2025.3.<\/li>\n\n\n\n<li>Upgrade the IntelliJ Platform Gradle Plugin to 2.10.4 and switch to <code>intellijIdea(version)<\/code>.<\/li>\n<\/ul>\n\n\n\n<p>If 2025.3 has not been released yet, you can use EAP by specifying a build number as the version.<\/p>\n\n\n\n<p>Set the version to <code>253-EAP-SNAPSHOT<\/code> and set <code>useInstaller = false<\/code>.<\/p>\n\n\n\n<p><strong>How do I know which modules to include explicitly in dependencies?<\/strong><\/p>\n\n\n\n<p>The IntelliJ Plugin Verifier will report missing dependencies. Refer to the Key API Changes in 2025.3 section above.<\/p>\n\n\n\n<p><strong>How can I test against 2025.3 before the official release?<\/strong><\/p>\n\n\n\n<p>Use specific EAP build numbers or snapshot versions, such as <code>253-EAP-SNAPSHOT<\/code>, with useInstaller set to false. See <em>Testing Against 2025.3 Before Official Release<\/em> above.<\/p>\n\n\n\n<p><strong>What versioning scheme should I use if I need separate builds for different versions?<\/strong><\/p>\n\n\n\n<p>Use a SemVer-compatible scheme with suffixes, such as <code>1.2.3-251<\/code> for the 2025.1 version and <code>1.2.3-253<\/code> for the 2025.3 version. JetBrains Marketplace will automatically serve the correct version based on the user&#8217;s IDE version and your <code>since-build<\/code> and <code>until-build<\/code> attributes.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p>The IntelliJ Platform 2025.3 release introduces a unified IntelliJ IDEA distribution while maintaining strong backward compatibility. Plugins built for earlier IntelliJ Platform versions will still work with 2025.3, giving you time to migrate at your own pace.<\/p>\n\n\n\n<p>When you&#8217;re ready to target 2025.3, update to IntelliJ Platform Gradle Plugin 2.10.4 or later and switch to the new <code>intellijIdea()<\/code> dependency helper. The platform APIs stay consistent across all license types, ensuring that your plugin works the same way for all users. Declare explicit dependencies on the modules you need, and use the <code>verifyPlugin<\/code> task to test compatibility before publishing.<\/p>\n\n\n\n<p><strong>Got questions?<\/strong> Contact us on the <a href=\"https:\/\/platform.jetbrains.com\" target=\"_blank\" rel=\"noopener\">JetBrains Platform Forum<\/a>. We&#8217;re dedicated to supporting a smooth transition for all plugin developers.<\/p>\n","protected":false},"author":1187,"featured_media":654518,"comment_status":"closed","ping_status":"closed","template":"","categories":[4759,8844,89,1065],"tags":[40,246,3233],"cross-post-tag":[6284],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/platform\/654512"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/platform"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/types\/platform"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/users\/1187"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/comments?post=654512"}],"version-history":[{"count":6,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/platform\/654512\/revisions"}],"predecessor-version":[{"id":654613,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/platform\/654512\/revisions\/654613"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media\/654518"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=654512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/categories?post=654512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/tags?post=654512"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/cross-post-tag?post=654512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}