appcode/clion: add migration guide for plugins targeting 2020.3+

This commit is contained in:
Karol Lewandowski 2022-02-08 09:45:49 +01:00
parent 3d3e118398
commit 7800b289ba
3 changed files with 36 additions and 23 deletions

View File

@ -69,22 +69,24 @@ A plugin project is compatible with PHP functionality if it declares a dependenc
The following table lists **(1)** modules or built-in plugins that provide specific functionality, and the products currently shipping with them. The following table lists **(1)** modules or built-in plugins that provide specific functionality, and the products currently shipping with them.
| Module or Plugin for `<depends>` Element<br/>Declaration in <path>plugin.xml</path> File | <br/>Functionality | IntelliJ Platform-Based<br/>Product Compatibility | | Module or Plugin for `<depends>` Element<br/>Declaration in <path>plugin.xml</path> File | <br/>Functionality | IntelliJ Platform-Based<br/>Product Compatibility |
|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `com.intellij.modules.java` See **(2)** below. <br/>`com.intellij.java` | **Java** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | IntelliJ IDEA, Android Studio | | `com.intellij.modules.java` See **(2)** below. <br/>`com.intellij.java` | **Java** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | IntelliJ IDEA, Android Studio |
| `com.intellij.modules.androidstudio` | Android SDK Platform, Build Tools, Platform Tools, SDK Tools | Android Studio | | `com.intellij.modules.androidstudio` | Android SDK Platform, Build Tools, Platform Tools, SDK Tools | Android Studio |
| `com.intellij.modules.appcode` | CocoaPods, Core Data Objects, Device & Simulator Support | AppCode | | `com.intellij.modules.cidr.lang` | **C, C++, Objective-C/C++** language PSI Model, Swift/Objective-C Interaction, Inspections, Intentions, Completion, Refactoring, Test Framework | AppCode, CLion |
| `com.intellij.modules.cidr.lang` | **C, C++, Objective-C/C++** language PSI Model, Swift/Objective-C Interaction, Inspections, Intentions, Completion, Refactoring, Test Framework | AppCode, CLion | | `com.intellij.modules.cidr.debugger` | Debugger Watches, Evaluations, Breakpoints, Inline Debugging | AppCode, CLion, RubyMine |
| `com.intellij.modules.cidr.debugger` | Debugger Watches, Evaluations, Breakpoints, Inline Debugging | AppCode, CLion, RubyMine | | `com.intellij.modules.appcode` See **(3)** below. <br/>`com.intellij.appcode` | Xcode Project Model, CocoaPods, Core Data Objects, Device & Simulator Support | AppCode |
| `com.intellij.modules.clion` | CMake, Profiler, Embedded Development, Remote Development, Remote Debug, Disassembly | CLion | | `com.intellij.modules.clion` See **(3)** below. <br/>`com.intellij.clion` | CMake, Profiler, Embedded Development, Remote Development, Remote Debug, Disassembly | CLion |
| `com.intellij.database` | **Database Tools and SQL** language PSI Model, Inspections, Completion, Refactoring, Queries | DataGrip, IntelliJ IDEA Ultimate, AppCode, PhpStorm, PyCharm Professional, RubyMine, CLion, GoLand, Rider, and WebStorm if the Database Tools and SQL plugin is installed. | | `com.intellij.cidr.base` | Native Debugger Integration, Utility Classes, C/C++ Project Model/Workspace Support (OCWorkspace, CidrWorkspace, etc.), C/C++ Build and Run Support | AppCode, CLion |
| `com.intellij.modules.go` | **Go** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | GoLand | | `com.intellij.database` | **Database Tools and SQL** language PSI Model, Inspections, Completion, Refactoring, Queries | DataGrip, IntelliJ IDEA Ultimate, AppCode, PhpStorm, PyCharm Professional, RubyMine, CLion, GoLand, Rider, and WebStorm if the Database Tools and SQL plugin is installed. |
| `com.intellij.modules.python` | **Python** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | PyCharm, and other products if the Python plugin is installed. | | `com.intellij.modules.go` | **Go** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | GoLand |
| `com.intellij.modules.rider` | Connection to **ReSharper** Process in Background | Rider | | `com.intellij.modules.python` | **Python** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | PyCharm, and other products if the Python plugin is installed. |
| `com.intellij.modules.ruby` | **Ruby** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | RubyMine, and IntelliJ IDEA Ultimate if the Ruby plugin is installed. | | `com.intellij.modules.rider` | Connection to **ReSharper** Process in Background | Rider |
| `com.intellij.modules.ultimate` | Licensing | All commercial IDEs (IntelliJ IDEA Ultimate, PhpStorm, DataGrip, ...) | | `com.intellij.modules.ruby` | **Ruby** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | RubyMine, and IntelliJ IDEA Ultimate if the Ruby plugin is installed. |
| `com.jetbrains.php` | **PHP** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | PhpStorm, and other products if the PHP plugin is installed. | | `com.intellij.modules.ultimate` | Licensing | All commercial IDEs (IntelliJ IDEA Ultimate, PhpStorm, DataGrip, ...) |
| `JavaScript` | **JavaScript** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | WebStorm, and other products if the JavaScript plugin is installed. | | `com.intellij.swift` | **Swift** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | AppCode, CLion |
| `com.jetbrains.php` | **PHP** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | PhpStorm, and other products if the PHP plugin is installed. |
| `JavaScript` | **JavaScript** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | WebStorm, and other products if the JavaScript plugin is installed. |
**Notes about Module and Plugin Dependency:** **Notes about Module and Plugin Dependency:**
@ -101,6 +103,22 @@ Consequently, [dependencies](plugin_dependencies.md) on Java functionality are e
* Syntax _required_ for releases prior to 2019.2, _allowable_ in all releases: * Syntax _required_ for releases prior to 2019.2, _allowable_ in all releases:
* <path>plugin.xml</path> add `<depends>com.intellij.modules.java</depends>` * <path>plugin.xml</path> add `<depends>com.intellij.modules.java</depends>`
**(3)** The [AppCode and CLion code was restructured](https://blog.jetbrains.com/clion/2020/12/migration-guide-for-plugins-2020-3/) in version 2020.3.
This refactoring extracted some functionalities into specific modules for easier maintainability and reuse between AppCode/CLion and other JetBrains IDEs.
Consequently, [dependencies](plugin_dependencies.md) on AppCode and CLion functionalities are expressed differently in <path>plugin.xml</path> depending on the version of the AppCode/CLion Platform being targeted:
* Syntax for 2020.3 and later releases:
* <path>plugin.xml</path> _allowable alternative_ add:
* `<depends>com.intellij.appcode</depends>` for AppCode
* `<depends>com.intellij.clion</depends>` for CLion
* <path>build.gradle</path> _required_ define dependency on plugin:
* `intellij { plugins = ['com.intellij.appcode'] }` for AppCode
* `intellij { plugins = ['com.intellij.clion'] }` for CLion
* Syntax _required_ for releases prior to 2020.3, _allowable_ in all releases:
* <path>plugin.xml</path> add:
* `<depends>com.intellij.modules.appcode</depends>` for AppCode
* `<depends>com.intellij.modules.clion</depends>` for CLion
## Exploring Module and Plugin APIs ## Exploring Module and Plugin APIs
Once the [dependency on a module or plugin](plugin_dependencies.md) is declared in <path>plugin.xml</path>, it's useful to explore the packages and classes available in that dependency. Once the [dependency on a module or plugin](plugin_dependencies.md) is declared in <path>plugin.xml</path>, it's useful to explore the packages and classes available in that dependency.
The section below gives some recommended procedures for discovering what's available in a module or plugin on which a project depends. The section below gives some recommended procedures for discovering what's available in a module or plugin on which a project depends.

View File

@ -34,7 +34,7 @@ Click on an entry in the table's *Attribute* column to go to the documentation a
[dsl]: https://github.com/JetBrains/gradle-intellij-plugin#running-dsl [dsl]: https://github.com/JetBrains/gradle-intellij-plugin#running-dsl
The dependency on the AppCode APIs must be declared in the <path>plugin.xml</path> file. The dependency on the AppCode APIs must be declared in the <path>plugin.xml</path> file.
As described in [Modules Specific to Functionality](plugin_compatibility.md#modules-specific-to-functionality) table, the `<depends>` tags must declare `com.intellij.modules.appcode`. As described in [Modules Specific to Functionality](plugin_compatibility.md#modules-specific-to-functionality) table, the `<depends>` tags must declare `com.intellij.modules.appcode` module dependency, or `com.intellij.appcode` plugin dependency for plugins targeting only versions 2020.3+.
## Available AppCode APIs ## Available AppCode APIs

View File

@ -33,12 +33,7 @@ Click on an entry in the table's *Attribute* column to go to the documentation a
[dsl]: https://github.com/JetBrains/gradle-intellij-plugin#running-dsl [dsl]: https://github.com/JetBrains/gradle-intellij-plugin#running-dsl
The dependency on the CLion APIs must be declared in the <path>plugin.xml</path> file. The dependency on the CLion APIs must be declared in the <path>plugin.xml</path> file.
As described in [Modules Specific to Functionality](plugin_compatibility.md#modules-specific-to-functionality) table, the `<depends>` elements should contain the CLion module, as illustrated in the <path>plugin.xml</path> snippet below: As described in [Modules Specific to Functionality](plugin_compatibility.md#modules-specific-to-functionality) table, the `<depends>` tags must declare `com.intellij.modules.clion` module dependency, or `com.intellij.clion` plugin dependency for plugins targeting only versions 2020.3+.
```xml
<!-- Required for core CLion functionality -->
<depends>com.intellij.modules.clion</depends>
```
## Available CLion APIs ## Available CLion APIs