# How to target multiple platforms for plugin?

**URL:** <https://platform.jetbrains.com/t/how-to-target-multiple-platforms-for-plugin/533>\
**Category:** IntelliJ Platform\
**Created:** [February 15, 2025, 9:28pm UTC](https://platform.jetbrains.com/t/how-to-target-multiple-platforms-for-plugin/533 "2025-02-15T21:28:56Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![pawrequest](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/pawrequest/32/480_2.png) [@pawrequest](https://platform.jetbrains.com/u/pawrequest)\
**Post date:** [February 15, 2025, 9:28pm UTC](https://platform.jetbrains.com/t/how-to-target-multiple-platforms-for-plugin/533/1 "2025-02-15T21:28:56Z")

</div>

i’m making a plugin to support a custom language via lsp4ij. i have it mostly working for IDEA, but i want it to also work in pycharm.

im finding the docs very confusing. how do i target all intelliJ IDEs that are able to support the plugin, or even manually define multiple targets (eg IDEA community, IDEA Ultimate, Pycharm Community, PyCharmPro… etc…

my build.gradle is as

```auto
plugins {
    id 'java'
    id("org.jetbrains.intellij.platform") version "2.2.1"
}

group 'pawrequest'
version '0.0.1'

repositories {
    mavenCentral()
    intellijPlatform {
        defaultRepositories()
    }
}

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(21))
    }
}

dependencies {
    intellijPlatform {
        intellijIdeaCommunity("2024.3.3")
        plugin("com.redhat.devtools.lsp4ij:0.10.0")
    }

}

sourceSets {
    main {
        java {
            srcDirs = ['src/main/java']
        }
        resources {
            srcDirs = ['src/main/resources']
        }
    }
}

test {
    useJUnitPlatform()
}

```

and plugin.xml is

```xml
<idea-plugin>
  <id>pawrequest.rs4ij</id>
  <name>RedScript4IntelliJ</name>
  <vendor>pawrequest</vendor>

  <description>
    Adds support for redscript LSP integration via LSP4IJ.
  </description>

  <version>0.0.1</version>

  <depends>com.intellij.modules.platform</depends>
  <depends>com.intellij.modules.lang</depends>
  <depends>com.redhat.devtools.lsp4ij</depends>

  <extensions defaultExtensionNs="com.redhat.devtools.lsp4ij">
    <server id="RedscriptLanguageServerId"
            name="RedscriptLanguageServer"
            factoryClass="pawrequest.rs4ij.server.RedscriptLanguageServerFactory">
      <description><![CDATA[
        RedScript4IJ language server
        ]]>
      </description>
    </server>
  </extensions>

  <extensions defaultExtensionNs="com.redhat.devtools.lsp4ij">
    <fileNamePatternMapping patterns="*.reds"
                            serverId="RedscriptLanguageServerId"
                            languageId="reds"/>
  </extensions>

</idea-plugin>

```

---

<div class="post-metadata">

**Author:** ![Wojciech\_Andrijew](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/wojciech_andrijew/32/149_2.png) [@Wojciech\_Andrijew](https://platform.jetbrains.com/u/Wojciech_Andrijew)\
**Post date:** [February 15, 2025, 10:24pm UTC](https://platform.jetbrains.com/t/how-to-target-multiple-platforms-for-plugin/533/2 "2025-02-15T22:24:31Z")

</div>

You set up these settings in the **General Information** section on your plugin page after upload. There, you can choose which IDEs will be supported by your plugin.

Additionally, (I see that you currently use it) you can use `<depends>` tag. If your plugin requires a particular module, you should specify it using this tag.

---

<div class="post-metadata">

**Author:** ![yann.cebron](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/yann.cebron/32/15_2.png) [@yann.cebron](https://platform.jetbrains.com/u/yann.cebron)\
**Post date:** [February 17, 2025, 2:12pm UTC](https://platform.jetbrains.com/t/how-to-target-multiple-platforms-for-plugin/533/4 "2025-02-17T14:12:12Z")

</div>

Please see [Plugins Targeting IntelliJ Platform-Based IDEs | IntelliJ Platform Plugin SDK](https://plugins.jetbrains.com/docs/intellij/dev-alternate-products.html).  
AFAIU from your `plugin.xml`, there should be no issues to support multiple IDEs.

---

<div class="post-metadata">

**Author:** ![pawrequest](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/pawrequest/32/480_2.png) [@pawrequest](https://platform.jetbrains.com/u/pawrequest)\
**Post date:** [February 17, 2025, 10:22pm UTC](https://platform.jetbrains.com/t/how-to-target-multiple-platforms-for-plugin/533/6 "2025-02-17T22:22:58Z")

</div>

thanks it seems to be working as intended now, i’m not sure why it wasnt loading in pycharm before.

---

<div class="post-metadata">

**Author:** ![entrealist](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/entrealist/32/1027_2.png) [@entrealist](https://platform.jetbrains.com/u/entrealist)\
**Post date:** [April 29, 2025, 6:20am UTC](https://platform.jetbrains.com/t/how-to-target-multiple-platforms-for-plugin/533/7 "2025-04-29T06:20:35Z")

</div>

Hi @yann.cebron, just to confirm — am I correct in understanding that the Marketplace refers to `<depends>com.intellij.modules.platform</depends>` to determine the targeted IntelliJ platform? (Multiple JetBrains products in this case)

---

<div class="post-metadata">

**Author:** ![yann.cebron](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/yann.cebron/32/15_2.png) [@yann.cebron](https://platform.jetbrains.com/u/yann.cebron)\
**Post date:** [April 29, 2025, 8:36am UTC](https://platform.jetbrains.com/t/how-to-target-multiple-platforms-for-plugin/533/8 "2025-04-29T08:36:33Z")

</div>

Yes, see also [Plugin Compatibility with IntelliJ Platform Products | IntelliJ Platform Plugin SDK](https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html#modules-available-in-all-products)
