Plugin Compatibility with IntelliJ Platform Products

Skip to end of metadata
Go to start of metadata

All products based on the IntelliJ Platform (IntelliJ IDEA, RubyMine, WebStorm, PhpStorm, PyCharm and AppCode) share the same underlying platform API. Thus, a plugin which does not use any Java specific functionality can be marked as compatible with other products besides IntelliJ IDEA. This is done by specifying module dependencies in the plugin.xml file.

A module dependency is a <depends> tag where the contents of the tag starts with com.intellij.modules. For example:

If a plugin does not include any module dependency tags in its plugin.xml, it's assumed to be a legacy plugin and it's loaded only in IntelliJ IDEA.

If the plugin.xml includes one or more of such tags, the plugin is loaded if the product contains all of the modules on which the plugin depends.

The following modules are currently available in all products based on the IntelliJ platform:

  • com.intellij.modules.platform
  • com.intellij.modules.lang
  • com.intellij.modules.vcs
  • com.intellij.modules.xml
  • com.intellij.modules.xdebugger

The following modules are only available in specific products:

  • com.intellij.modules.java - IntelliJ IDEA
  • com.intellij.modules.ultimate - IntelliJ IDEA Ultimate Edition
  • com.intellij.modules.ruby - RubyMine
  • com.intellij.modules.python - PyCharm
  • com.intellij.modules.cidr.lang - AppCode, CLion
  • com.intellij.modules.cidr.debugger - AppCode, CLion, RubyMotion

PhpStorm does not have any modules specific to it, but it includes the PHP plugin, which you can also use as a dependency: com.jetbrains.php

You can also specify optional module dependencies. If your plugin works with all products but provides some Java-specific functionality, you can use a dependency tag like this:

Before marking a plugin as compatible with all products, you need to verify that it doesn't use any APIs which are specific to IntelliJ IDEA. In order to do that, you can create an IntelliJ Platform SDK pointing to an installation of RubyMine/PyCharm/..., compile your plugin against that SDK and verify that everything compiles.

The IntelliJ plugin repository automatically detects the products with which a plugin is compatible, according to these rules, and makes it available to users of those products.

Labels:
None
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Apr 01, 2010

    I just figured out that there is one more dependency: ultimate platform: com.intellij.modules.ultimate. It does not exist in community edition.

  2. Mar 04, 2014

    Hello, could you clarify how exactly i should do this "create an IntelliJ Platform SDK pointing to an installation of RubyMine/PyCharm". Is it about that when i creating Project SDK i should point to i.e. RubyMine directory instead of Idea ? I'm right ?

  3. Sep 09, 2014

    does CLion not feature "com.intellij.modules.lang"? My plugin depends on this module and seems to be incompatible with CLion. 

    (same for MPS)

    1. Sep 09, 2014

      Dan, com.intellij.modules.lang is also available in both AppCode and CLion. 
      Could you please check the plugin's requirements (e.g. since-build, until-build)

      1. Sep 09, 2014

        well, at least the plugin repository is considering it "incompatible dependency" for MPS and CLion.

        AppCode looks fine.

        (http://plugins.jetbrains.com/update/index?pr=webStorm&updateId=17054)

        1. Sep 09, 2014

          Plugin repository now only lists predefined set of plugins. Closer to 1.0 we'll expand the list do that custom plugins will also be available.