2022-03-10 14:54:33 +01:00

3.4 KiB

This documentation section will help you get started with developing plugins for the IntelliJ Platform. You can use either IntelliJ IDEA Community Edition or IntelliJ IDEA Ultimate as your IDE (it is highly recommended to use the latest available version). Both include the complete set of plugin development tools. To become more familiar with IntelliJ IDEA, please refer to the IntelliJ IDEA Web Help.

In some cases, implementing an actual IntelliJ Platform plugin might not be necessary, as alternative solutions exist.

{type="tip"}

There are three supported workflows available for building plugins. The recommended workflow for new projects is to use GitHub Template or to use Gradle to create everything from scratch. The old Plugin DevKit workflow still supports existing projects.

If a new plugin will be Scala-based, a dedicated SBT plugin sbt-idea-plugin is available.

{type="note"}

The Gradle workflow offers several advantages:

  • Representations of source sets, modules, and projects are portable,
  • Projects of any size or complexity usually require scripts for build management, which Gradle handles natively,
  • Training, documentation, and community help for general Gradle topics are widely available.

Specific to development of IntelliJ Platform plugins with the Gradle plugin for IntelliJ IDEA:

  • Changing plugin targets is more comfortable because it is all done in the Gradle build file:
    • Switching the version of the target IntelliJ Platform (IDE),
    • Changing the target IntelliJ Platform-based IDE, e.g., from IntelliJ IDEA to PyCharm,
    • Running a plugin against alternate versions of the JetBrains runtime.
  • Gradle is fully integrated with Continuous Integration systems and JetBrains Marketplace, so it is easy to customize and extend the build and publishing processes.
  • Built-in verification task for plugin.xml and plugin distribution structure.
  • Built-in integration with IntelliJ Plugin Verifier tool used for running the compatibility checks as performed on JetBrains Marketplace.

Using GitHub Template

Using Gradle

Using DevKit