IntelliJ Platform Gradle Plugin

This commit is contained in:
Jakub Chrzanowski 2024-02-05 16:57:01 +01:00
parent e4af60d126
commit 08e77f11ba
No known key found for this signature in database
GPG Key ID: C39095BFD769862E
9 changed files with 1206 additions and 117 deletions

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinScriptingSettings">
<scriptDefinition className="org.jetbrains.kotlin.mainKts.MainKtsScript" definitionName="MainKtsScript">
<order>2147483647</order>
<autoReloadConfigurations>true</autoReloadConfigurations>
</scriptDefinition>
</component>
</project>

View File

@ -412,6 +412,7 @@
<toc-element topic="tools_intellij_platform_gradle_plugin_dependencies_extension.md"/>
<toc-element topic="tools_intellij_platform_gradle_plugin_tasks.md"/>
<toc-element topic="tools_intellij_platform_gradle_plugin_task_awares.md"/>
<toc-element topic="tools_intellij_platform_gradle_plugin_types.md"/>
<toc-element topic="tools_intellij_platform_gradle_plugin_build_features.md"/>
<toc-element topic="tools_intellij_platform_gradle_plugin_migration.md"/>
</toc-element>

View File

@ -90,7 +90,7 @@ It can be omitted when referring to any IntelliJ Platform SDK dependencies witho
{id="plugin.settings"}
If you define repositories within the <path>settings.gradle.kts</path> using the `dependencyResolutionManagement` Gradle, make sure to include the Settings plugin in your <filepath>settings.gradle.kts</filepath>.
If you define repositories within the <path>settings.gradle.kts</path> using the `dependencyResolutionManagement` Gradle, make sure to include the Settings plugin in your <path>settings.gradle.kts</path>.
## Configuration
@ -228,21 +228,21 @@ dependencies {
val type = providers.gradleProperty("platformType")
val version = providers.gradleProperty("platformVersion")
intellijPlatform(type, version)
create(type, version)
}
}
```
The `intellijPlatform` helper accepts also the `IntelliJPlatformType` enum type:
The `intellijPlatform` helper accepts also the [`IntelliJPlatformType`](tools_intellij_platform_gradle_plugin_types.md#IntelliJPlatformType) type:
```kotlin
import org.jetbrains.intellij.platform.gradle.utils.IntelliJPlatformType
import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType
dependencies {
intellijPlatform {
val version = providers.gradleProperty("platformVersion")
intellijPlatform(IntelliJPlatformType.IntellijIdeaUltimate, version)
create(IntelliJPlatformType.IntellijIdeaUltimate, version)
}
}
```

View File

@ -34,10 +34,6 @@ Example
org.jetbrains.intellij.buildFeature.buildSearchableOptions=false
```
See also:
- [Tasks: buildSearchableOptions`](tools_intellij_platform_gradle_plugin_tasks.md#buildSearchableOptions)
- [Build Features: `noSearchableOptionsWarning`](tools_intellij_platform_gradle_plugin_build_features.md#noSearchableOptionsWarning)
## paidPluginSearchableOptionsWarning
{#paidPluginSearchableOptionsWarning}
@ -62,7 +58,7 @@ org.jetbrains.intellij.platform.buildFeature.paidPluginSearchableOptionsWarning=
Checks whether the currently used Gradle IntelliJ Plugin is outdated and if a new release is available.
The plugin performs an update check on every run asking the GitHub Releases page for the redirection URL
to the latest version with `HEAD` HTTP request: `https://github.com/jetbrains/gradle-intellij-plugin/releases/latest`.
to the latest version with `HEAD` HTTP request: [](https://github.com/jetbrains/gradle-intellij-plugin/releases/latest).
If the current version is outdated, the plugin will emit a warning with its current and the latest version.

View File

@ -4,5 +4,68 @@
<link-summary>IntelliJ Platform Gradle Plugin dependencies extension.</link-summary>
Extension class for managing IntelliJ Platform dependencies in a Gradle build script applied to the `DependencyHandler`.
This class provides methods for adding dependencies to different IntelliJ Platform products and managing local dependencies.
It also includes methods for adding JetBrains Runtime, IntelliJ Platform plugins, IntelliJ Platform bundled plugins, IntelliJ Plugin Verifier, and Marketplace ZIP Signer.
**Example:**
```kotlin
import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType
dependencies {
// ...
intellijPlatform {
// ...
create(IntelliJPlatformType.PhpStorm, "2023.3")
create("PS", "2023.3")
intellijIdeaCommunity("2023.3")
local(file("/path/to/ide/"))
jetbrainsRuntime("...")
plugin("org.intellij.scala")
bundledPlugin("com.intellij.java")
pluginVerifier()
zipSigner()
}
}
```
> Just one IntelliJ Platform dependency can be added to the project at the time.
>
{style="warning"}
| Function | Description |
|----------------------------------------------------------------------------------------|----------------------------------------------------------------|
| `create(type, version)` | Adds a dependency on the IntelliJ Platform. |
| `androidStudio(version)` | Adds a dependency on Android Studio. |
| `clion(version)` | Adds a dependency on CLion. |
| `fleetBackend(version)` | Adds a dependency on Fleet Backend. |
| `gateway(version)` | Adds a dependency on Gateway. |
| `goland(version)` | Adds a dependency on GoLand. |
| `intellijIdeaCommunity(version)` | Adds a dependency on IntelliJ IDEA Community. |
| `intellijIdeaUltimate(version)` | Adds a dependency on IntelliJ IDEA Ultimate. |
| `phpstorm(version)` | Adds a dependency on PhpStorm. |
| `pycharmCommunity(version)` | Adds a dependency on PyCharm Community. |
| `pycharmProfessional(version)` | Adds a dependency on PyCharm Professional. |
| `rider(version)` | Adds a dependency on Rider. |
| `rustRover(version)` | Adds a dependency on Rust Rover. |
| `writerside(version)` | Adds a dependency on Writerside. |
| `local(localPath)` | Adds a local dependency on a local IntelliJ Platform instance. |
| `jetbrainsRuntime(version, variant, architecture)` `jetbrainsRuntime(explicitVersion)` | Adds a dependency on JetBrains Runtime. |
| `plugin(id, version, channel)` | Adds a dependency on a plugin for IntelliJ Platform. |
| `bundledPlugin(id)` | Adds a dependency on a bundled IntelliJ Platform plugin. |
| `pluginVerifier(version)` | Adds a dependency on IntelliJ Plugin Verifier. |
| `zipSigner(version)` | Adds a dependency on Marketplace ZIP Signer. |
See also:
- [](verifying_plugin_compatibility.md)
- [Tasks: `signPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin)
- [Tasks: `verifyPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin)
- [Types: `IntelliJPlatformType`](tools_intellij_platform_gradle_plugin_types.md#IntelliJPlatformType)
<include from="snippets.md" element-id="missingContent"/>

View File

@ -7,6 +7,7 @@
The _IntelliJ Platform Gradle Plugin_ introduces a top-level `intellijPlatform` extension.
It consists of sections dedicated to the general Gradle plugin configuration, <path>plugin.xml</path> definition, publishing, signing, and verifying of the output plugin for IntelliJ-based IDEs.
## IntelliJ Platform
{#intellijPlatform}
@ -20,13 +21,22 @@ intellijPlatform {
buildSearchableOptions.set(true)
sandboxContainer.set("...")
pluginConfiguration { ... }
publishing { ... }
signing { ... }
verifyPlugin { ... }
pluginConfiguration {
// ...
}
publishing {
// ...
}
signing {
// ...
}
verifyPlugin {
// ...
}
}
```
### instrumentCode
{#intellijPlatform-instrumentCode}
@ -39,7 +49,7 @@ The compiled code will be enhanced with:
- nullability assertions
- post-processing of forms created by IntelliJ GUI Designer
Controls the execution of the [](tools_intellij_platform_gradle_plugin_tasks.md#instrumentCode) task.
Controls the execution of the [`instrumentCode`](tools_intellij_platform_gradle_plugin_tasks.md#instrumentCode) task.
{style="narrow"}
Type
@ -48,15 +58,12 @@ Type
Default value
: `true`
See also:
- [Tasks: `instrumentCode`](tools_intellij_platform_gradle_plugin_tasks.md#instrumentCode)
### buildSearchableOptions
{#intellijPlatform-buildSearchableOptions}
Builds an index of UI components (searchable options) for the plugin.
Controls the execution of the [](tools_intellij_platform_gradle_plugin_tasks.md#buildSearchableOptions) task.
Controls the execution of the [`buildSearchableOptions`](tools_intellij_platform_gradle_plugin_tasks.md#buildSearchableOptions) task.
{style="narrow"}
Type
@ -66,7 +73,6 @@ Default value
: `true`
See also:
- [Tasks: `buildSearchableOptions`](tools_intellij_platform_gradle_plugin_tasks.md#buildSearchableOptions)
- [Build Features: `noSearchableOptionsWarning`](tools_intellij_platform_gradle_plugin_build_features.md#noSearchableOptionsWarning)
@ -80,7 +86,7 @@ Type
: `DirectoryProperty`
Default value
: <path>build/<Sandbox.CONTAINER></path>
: <path>[buildDirectory]/[Sandbox.CONTAINER]</path>
See also:
- [Tasks: `prepareSandbox`](tools_intellij_platform_gradle_plugin_tasks.md#prepareSandbox)
@ -91,13 +97,13 @@ See also:
{#intellijPlatform-pluginConfiguration}
Configures the plugin definition and stores in the `plugin.xml` file.
Data provided to the `intellijPlatform.pluginConfiguration {}` extension is passed to the [](tools_intellij_platform_gradle_plugin_tasks.md#patchPluginXml) task, which overrides the <path>plugin.xml</path> file with new values.
Data provided to the `intellijPlatform.pluginConfiguration {}` extension is passed to the [`patchPluginXml`](tools_intellij_platform_gradle_plugin_tasks.md#patchPluginXml) task, which overrides the <path>plugin.xml</path> file with new values.
**Example:**
```kotlin
intellijPlatform {
...
// ...
pluginConfiguration {
id.set("my-plugin-id")
@ -110,9 +116,15 @@ intellijPlatform {
""".trimIndent()
)
productDescriptor { ... }
ideaVersion { ... }
vendor { ... }
productDescriptor {
// ...
}
ideaVersion {
// ...
}
vendor {
// ...
}
}
}
```
@ -130,7 +142,7 @@ The plugin's unique identifier.
This should mirror the structure of fully qualified Java packages and must remain distinct from the IDs of existing plugins.
This ID is a technical descriptor used not only within the IDE, but also on [JetBrains Marketplace](https://plugins.jetbrains.com/).
Please restrict input to characters, numbers, and `.`/`-`/`_` symbols , and aim for a concise length.
Please restrict input to characters, numbers, and `.`/`-`/`_` symbols, and aim for a concise length.
The entered value will populate the `<id>` element.
@ -166,7 +178,7 @@ The plugin version, presented in the Plugins settings dialog and on its JetBrain
For plugins uploaded to the JetBrains Marketplace, semantic versioning must be adhered to.
The specified value will be used as an `<version>` element.
The specified value will be used as a `<version>` element.
{style="narrow"}
Type
@ -225,10 +237,10 @@ A part of the [](#intellijPlatform-pluginConfiguration) which describes the `pro
```kotlin
intellijPlatform {
...
// ...
pluginConfiguration {
...
// ...
productDescriptor {
code.set("MY_CODE")
@ -243,6 +255,7 @@ intellijPlatform {
See also:
- [How to add required parameters for paid plugins](https://plugins.jetbrains.com/docs/marketplace/add-required-parameters.html)
### code
{#intellijPlatform-pluginConfiguration-productDescriptor-code}
@ -321,10 +334,10 @@ A part of the [](#intellijPlatform-pluginConfiguration) which describes the `ide
```kotlin
intellijPlatform {
...
// ...
pluginConfiguration {
...
// ...
ideaVersion {
sinceBuild.set("241")
@ -334,6 +347,7 @@ intellijPlatform {
}
```
### sinceBuild
{#intellijPlatform-pluginConfiguration-ideaVersion-sinceBuild}
@ -387,10 +401,10 @@ A part of the [](#intellijPlatform-pluginConfiguration) which describes the `ven
```kotlin
intellijPlatform {
...
// ...
pluginConfiguration {
...
// ...
vendor {
name.set("JetBrains")
@ -460,7 +474,7 @@ All values are passed to the [](tools_intellij_platform_gradle_plugin_tasks.md#p
```kotlin
intellijPlatform {
...
// ...
publishing {
host.set("")
@ -559,11 +573,35 @@ See also:
Plugin signing configuration.
**Example:**
```kotlin
intellijPlatform {
// ...
signing {
cliPath.set(file("/path/to/marketplace-zip-signer-cli.jar"))
keyStore.set(file("/path/to/keyStore.ks"))
keyStorePassword.set("...")
keyStoreKeyAlias.set("...")
keyStoreType.set("...")
keyStoreProviderName.set("...")
privateKey.set("...")
privateKeyFile.set(file("/path/to/private.pem"))
password.set("...")
certificateChain.set("...")
certificateChainFile.set(file("/path/to/chain.crt"))
}
}
```
See also:
- [](plugin_signing.md)
- [Tasks: `signPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin)
- [Task Awares: `SigningAware`](tools_intellij_platform_gradle_plugin_task_awares.md#SigningAware)
- [Marketplace ZIP Signer](https://github.com/JetBrains/marketplace-zip-signer)
### cliPath
{#intellijPlatform-signing-cliPath}
@ -573,6 +611,9 @@ A path to the local Marketplace ZIP Signer CLI tool to be used.
Type
: `RegularFileProperty`
See also:
- [Task Awares: `SigningAware`](tools_intellij_platform_gradle_plugin_task_awares.md#SigningAware)
### keyStore
{#intellijPlatform-signing-keyStore}
@ -584,6 +625,9 @@ Refers to `ks` CLI option.
Type
: `Property<String>`
See also:
- [Tasks: `signPlugin.keyStore`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin-keyStore)
### keyStorePassword
{#intellijPlatform-signing-keyStorePassword}
@ -595,6 +639,9 @@ Refers to `ks-pass` CLI option.
Type
: `Property<String>`
See also:
- [Tasks: `signPlugin.keyStorePassword`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin-keyStorePassword)
### keyStoreKeyAlias
{#intellijPlatform-signing-keyStoreKeyAlias}
@ -606,6 +653,9 @@ Refers to `ks-key-alias` CLI option.
Type
: `Property<String>`
See also:
- [Tasks: `signPlugin.keyStoreKeyAlias`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin-keyStoreKeyAlias)
### keyStoreType
{#intellijPlatform-signing-keyStoreType}
@ -617,6 +667,9 @@ Refers to `ks-type` CLI option.
Type
: `Property<String>`
See also:
- [Tasks: `signPlugin.keyStoreType`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin-keyStoreType)
### keyStoreProviderName
{#intellijPlatform-signing-keyStoreProviderName}
@ -628,6 +681,9 @@ Refers to `ks-provider-name` CLI option.
Type
: `Property<String>`
See also:
- [Tasks: `signPlugin.keyStoreProviderName`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin-keyStoreProviderName)
### privateKey
{#intellijPlatform-signing-privateKey}
@ -635,10 +691,15 @@ Type
Encoded private key in the PEM format.
Refers to `key` CLI option.
Takes precedence over the [](#intellijPlatform-signing-privateKeyFile) property.
{style="narrow"}
Type
: `Property<String>`
See also:
- [Tasks: `signPlugin.privateKey`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin-privateKey)
### privateKeyFile
{#intellijPlatform-signing-privateKeyFile}
@ -650,6 +711,9 @@ Refers to `key-file` CLI option.
Type
: `RegularFileProperty`
See also:
- [Tasks: `signPlugin.privateKeyFile`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin-privateKeyFile)
### password
{#intellijPlatform-signing-password}
@ -661,6 +725,9 @@ Refers to `key-pass` CLI option.
Type
: `Property<String>`
See also:
- [Tasks: `signPlugin.password`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin-password)
### certificateChain
{#intellijPlatform-signing-certificateChain}
@ -669,10 +736,15 @@ A string containing X509 certificates.
The first certificate from the chain will be used as a certificate authority (CA).
Refers to `cert` CLI option.
Takes precedence over the [](#intellijPlatform-signing-certificateChainFile) property.
{style="narrow"}
Type
: `Property<String>`
See also:
- [Tasks: `signPlugin.certificateChain`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin-certificateChain)
### certificateChainFile
{#intellijPlatform-signing-certificateChainFile}
@ -685,9 +757,262 @@ Refers to `cert-file` CLI option.
Type
: `RegularFileProperty`
See also:
- [Tasks: `signPlugin.certificateChainFile`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin-certificateChainFile)
## Verify Plugin
{#intellijPlatform-verifyPlugin}
IntelliJ Plugin Verifier CLI tool configuration.
**Example:**
```kotlin
intellijPlatform {
// ...
verifyPlugin {
cliPath.set(file("/path/to/plugin-verifier-cli.jar"))
freeArgs.set(listOf("foo", "bar"))
homeDirectory.set(file("/path/to/pluginVerifierHomeDirectory/"))
downloadDirectory.set(file("/path/to/pluginVerifierHomeDirectory/ides/"))
failureLevel.set(VerifyPluginTask.FailureLevel.ALL)
verificationReportsDirectory.set("build/reports/pluginVerifier")
verificationReportsFormats.set(VerifyPluginTask.VerificationReportsFormats.ALL)
externalPrefixes.set("com.example")
teamCityOutputFormat.set(false)
subsystemsToCheck.set(VerifyPluginTask.Subsystems.ALL)
ignoredProblemsFile.set(file("/path/to/ignoredProblems.txt"))
ides {
// ...
}
}
}
```
See also:
- [](verifying_plugin_compatibility.md)
- [Tasks: `verifyPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin)
- [Task Awares: `PluginVerifierAware`](tools_intellij_platform_gradle_plugin_task_awares.md#PluginVerifierAware)
- [](#intellijPlatform-verifyPlugin-ides)
- [IntelliJ Plugin Verifier CLI](https://github.com/JetBrains/intellij-plugin-verifier)
### cliPath
{#intellijPlatform-verifyPlugin-cliPath}
A path to the local IntelliJ Plugin Verifier CLI tool to be used.
{style="narrow"}
Type
: `RegularFileProperty`
See also:
- [Task Awares: `PluginVerifierAware`](tools_intellij_platform_gradle_plugin_task_awares.md#PluginVerifierAware)
### downloadDirectory
{#intellijPlatform-verifyPlugin-downloadDirectory}
The path to the directory where IDEs used for the verification will be downloaded.
{style="narrow"}
Type
: `DirectoryProperty`
Default value
: <path>[`homeDirectory`](#intellijPlatform-verifyPlugin-homeDirectory)/ides</path>
### failureLevel
{#intellijPlatform-verifyPlugin-failureLevel}
Defines the verification level at which the task should fail if any reported issue matches.
{style="narrow"}
Type
: `ListProperty<FailureLevel>`
Default value
: [`FailureLevel.COMPATIBILITY_PROBLEMS`](tools_intellij_platform_gradle_plugin_types.md#FailureLevel)
See also:
- [Tasks: `verifyPlugin.failureLevel`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin-failureLevel)
### externalPrefixes
{#intellijPlatform-verifyPlugin-externalPrefixes}
The list of class prefixes from the external libraries.
The Plugin Verifier will not report `No such class` for classes of these packages.
{style="narrow"}
Type
: `ListProperty<String>`
See also:
- [Tasks: `verifyPlugin.externalPrefixes`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin-externalPrefixes)
### freeArgs
{#intellijPlatform-verifyPlugin-freeArgs}
The list of free arguments is passed directly to the IntelliJ Plugin Verifier CLI tool.
They can be used in addition to the arguments that are provided by dedicated options.
{style="narrow"}
Type
: `ListProperty<String>`
See also:
- [Tasks: `verifyPlugin.freeArgs`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin-freeArgs)
### homeDirectory
{#intellijPlatform-verifyPlugin-homeDirectory}
Retrieve the Plugin Verifier home directory used for storing downloaded IDEs.
Following home directory resolving method is taken directly from the Plugin Verifier to keep the compatibility.
{style="narrow"}
Type
: `DirectoryProperty`
Default value
: - Directory specified with `plugin.verifier.home.dir` system property
- Directory specified with `XDG_CACHE_HOME` environment variable
- <path>~/.cache/pluginVerifier</path>
- <path>[buildDirectory]/tmp/pluginVerifier</path>
### ignoredProblemsFile
{#intellijPlatform-verifyPlugin-ignoredProblemsFile}
A file that contains a list of problems that will be ignored in a report.
{style="narrow"}
Type
: `RegularFileProperty`
See also:
- [Tasks: `verifyPlugin.ignoredProblemsFile`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin-ignoredProblemsFile)
### subsystemsToCheck
{#intellijPlatform-verifyPlugin-subsystemsToCheck}
Specifies which subsystems of IDE should be checked.
{style="narrow"}
Type
: `Subsystems`
Default value
: [`Subsystems.ALL`](tools_intellij_platform_gradle_plugin_types.md#Subsystems)
See also:
- [Tasks: `verifyPlugin.subsystemsToCheck`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin-subsystemsToCheck)
### teamCityOutputFormat
{#intellijPlatform-verifyPlugin-teamCityOutputFormat}
A flag that controls the output format.
If set to `true`, the TeamCity compatible output will be returned to stdout.
{style="narrow"}
Type
: `Property<Boolean>`
Default value
: `false`
See also:
- [Tasks: `verifyPlugin.teamCityOutputFormat`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin-teamCityOutputFormat)
### verificationReportsDirectory
{#intellijPlatform-verifyPlugin-verificationReportsDirectory}
The path to the directory where verification reports will be saved.
{style="narrow"}
Type
: `DirectoryProperty`
Default value
: <path>[buildDirectory]/reports/pluginVerifier</path>
See also:
- [Tasks: `verifyPlugin.verificationReportsDirectory`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin-verificationReportsDirectory)
### verificationReportsFormats
{#intellijPlatform-verifyPlugin-verificationReportsFormats}
The output formats of the verification reports.
{style="narrow"}
Type
: `ListProperty<VerificationReportsFormats>`
Default value
: [`VerificationReportsFormats.PLAIN`](tools_intellij_platform_gradle_plugin_types.md#VerificationReportsFormats), [`FailureVerificationReportsFormats`](tools_intellij_platform_gradle_plugin_types.md#VerificationReportsFormats)
See also:
- [Tasks: `verifyPlugin.verificationReportsFormats`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin-verificationReportsFormats)
## Verify Plugin IDEs
{#intellijPlatform-verifyPlugin-ides}
The extension to define the IDEs to be used along with the IntelliJ Plugin Verifier CLI tool for the binary plugin verification.
It provides a set of helpers which add relevant entries to the configuration, which later is used to resolve IntelliJ-based IDE binary releases.
**Example:**
```kotlin
import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType
intellijPlatform {
// ...
verifyPlugin {
// ...
ides {
ide(IntelliJPlatformType.PhpStorm)
ide(IntelliJPlatformType.RustRover, "2023.3")
localIde(file("/path/to/ide/"))
recommended()
select {
types = listOf(IntelliJPlatformType.PhpStorm)
channels = listOf(ProductRelease.Channel.RELEASE)
sinceBuild = "232"
untilBuild = "241.*"
}
}
}
}
```
See also:
- [](verifying_plugin_compatibility.md)
- [Tasks: `verifyPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin)
- [Types: `IntelliJPlatformType`](tools_intellij_platform_gradle_plugin_types.md#IntelliJPlatformType)
- [Types: `ProductRelease.Channel`](tools_intellij_platform_gradle_plugin_types.md#ProductRelease-Channel)
- [Types: `ProductReleasesValueSource.FilterParameters`](tools_intellij_platform_gradle_plugin_types.md#ProductReleasesValueSource-FilterParameters)
| Function | Description |
|----------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `ide(type, version)` `ide(definition)` | Adds a dependency to a binary IDE release to be used for testing with the IntelliJ Plugin Verifier. |
| `localIde(localPath)` | Adds the local IDE to be used for testing with the IntelliJ Plugin Verifier. |
| `recommended()` | Retrieves matching IDEs using the default configuration based on the currently used IntelliJ Platform and applies them for IntelliJ Platform Verifier using the `ide` helper method. |
| `select(configure)` | Retrieves matching IDEs using custom [`ProductReleasesValueSource.FilterParameters`](tools_intellij_platform_gradle_plugin_types.md#ProductReleasesValueSource-FilterParameters) filter parameters. |
<include from="snippets.md" element-id="missingContent"/>

View File

@ -4,36 +4,284 @@
<link-summary>IntelliJ Platform Gradle Plugin task `*Aware` interfaces.</link-summary>
The Task Awares is a set of interfaces that can be applied to custom Gradle tasks and, when registered using the dedicated register method, inject new features or properties with predefined values.
## CoroutinesJavaAgentAware
{#CoroutinesJavaAgentAware}
The interface provides the path to the Java Agent file for the Coroutines library required to enable coroutines debugging.
Inherited also by [`RunnableIdeAware`](#RunnableIdeAware).
### coroutinesJavaAgentFile
{#CoroutinesJavaAgentAware-coroutinesJavaAgentFile}
The path to the coroutines Java Agent file.
{style="narrow"}
Type
: `RegularFileProperty`
Default value
: [`initializeIntellijPlatformPlugin.coroutinesJavaAgent`](tools_intellij_platform_gradle_plugin_tasks.md#initializeIntelliJPlatformPlugin-coroutinesJavaAgent)
## CustomIntelliJPlatformVersionAware
{#CustomIntelliJPlatformVersionAware}
By default, the project with the IntelliJ Platform Gradle Plugin applied required the presence of the IntelliJ Platform, referred to later by various tasks, configurations, and extensions.
The custom IntelliJ Platform concept allows using another version, i.e., to run a guest IDE or tests against it.
When applying this interface to the task, custom configurations to hold new dependencies defined by [`type`](#CustomIntelliJPlatformVersionAware-type) and [`version`](#CustomIntelliJPlatformVersionAware-version) (or [`localPath`](#CustomIntelliJPlatformVersionAware-localPath), if referring to the local IntelliJ Platform instance) are created, as well as a dedicated [`prepareSandbox`](tools_intellij_platform_gradle_plugin_tasks.md#prepareSandbox) task.
Configurations, as well as the task preparing sandbox for running and testing the custom IntelliJ Platform (if required), have a random suffix applied to avoid collisions.
### type
{#CustomIntelliJPlatformVersionAware-type}
An input property to configure the type of the custom IntelliJ Platform.
By default, it refers to the IntelliJ Platform type used by the current project.
{style="narrow"}
Type
: [`IntelliJPlatformType`](tools_intellij_platform_gradle_plugin_types.md#IntelliJPlatformType)
### version
{#CustomIntelliJPlatformVersionAware-version}
An input property to configure the version of the custom IntelliJ Platform.
By default, it refers to the IntelliJ Platform version used by the current project.
{style="narrow"}
Type
: `Property<String>`
### localPath
{#CustomIntelliJPlatformVersionAware-localPath}
An input property to define the path to the local IntelliJ Platform instance to configure the version of the custom IntelliJ Platform.
The local path precedes the IntelliJ Platform resolution using the [`type`](#CustomIntelliJPlatformVersionAware-type) and [`version`](#CustomIntelliJPlatformVersionAware-version) properties.
{style="narrow"}
Type
: `DirectoryProperty`
## IntelliJPlatformVersionAware
{#IntelliJPlatformVersionAware}
This interface provides tasks a possibility for accessing information about the IntelliJ Platform currently used in the project.
The [`intelliJPlatformConfiguration`](#IntelliJPlatformVersionAware-intelliJPlatformConfiguration) input property receives a dependency added to the `intellijPlatform` configuration, which eventually is resolved and lets to access the IntelliJ Platform details such as [`ProductInfo`](tools_intellij_platform_gradle_plugin_types.md#ProductInfo) or the path to the IntelliJ Platform directory.
It is required to have a dependency on the IntelliJ Platform added to the project with helpers available in [](tools_intellij_platform_gradle_plugin_dependencies_extension.md).
### intelliJPlatformConfiguration
{#IntelliJPlatformVersionAware-intelliJPlatformConfiguration}
Holds the `intellijPlatform` configuration with the IntelliJ Platform dependency added.
It should not be directly accessed.
{style="narrow"}
Type
: `ConfigurableFileCollection`
### platformPath
{#IntelliJPlatformVersionAware-platformPath}
Provides a direct path to the IntelliJ Platform dependency artifact.
{style="narrow"}
Type
: `Path`
### productInfo
{#IntelliJPlatformVersionAware-productInfo}
Provides information about the IntelliJ Platform product.
The information is retrieved from the <path>product-info.json</path> file in the IntelliJ Platform directory.
{style="narrow"}
Type
: [`ProductInfo`](tools_intellij_platform_gradle_plugin_types.md#ProductInfo)
### assertIntelliJPlatformSupportedVersion()
{#IntelliJPlatformVersionAware-assertIntelliJPlatformSupportedVersion}
Asserts that the resolved IntelliJ Platform is supported by checking against the minimal supported IntelliJ Platform version.
Invokes [`ProductInfo.assertSupportedVersion()`](tools_intellij_platform_gradle_plugin_types.md#ProductInfo-assertSupportedVersion).
{style="narrow"}
Throws
: `IllegalArgumentException`
## PluginVerifierAware
{#PluginVerifierAware}
The interface provides the path to the IntelliJ Plugin Verifier executable.
It is required to have a dependency on the IntelliJ Plugin Verifier added to the project with [`intellijPlatform.pluginVerifier()`](tools_intellij_platform_gradle_plugin_dependencies_extension.md) dependencies extension.
### pluginVerifierExecutable
{#PluginVerifierAware-pluginVerifierExecutable}
Path to the IntelliJ Plugin Verifier executable.
{style="narrow"}
Type
: `RegularFileProperty`
## RunnableIdeAware
{#RunnableIdeAware}
The interface which utilizes a set of various interfaces required for running a guest IDE. Inherits from:
- [`CoroutinesJavaAgentAware`](#CoroutinesJavaAgentAware)
- [`RuntimeAware`](#RuntimeAware)
- [`SandboxAware`](#SandboxAware)
- `JavaForkOptions`
## RuntimeAware
{#RuntimeAware}
This interface provides access to the Java Runtime (i.e., JetBrains Runtime) resolved with `RuntimeResolver`.
### runtimeDirectory
{#RuntimeAware-runtimeDirectory}
Java Runtime parent directory.
{style="narrow"}
Type
: `DirectoryProperty`
### runtimeExecutable
{#RuntimeAware-runtimeExecutable}
Path to the Java Runtime executable.
{style="narrow"}
Type
: `RegularFileProperty`
### runtimeArch
{#RuntimeAware-runtimeArch}
An architecture of the Java Runtime currently used for running Gradle.
{style="narrow"}
Type
: `Property<String>`
## SandboxAware
{#SandboxAware}
The interface provides quick access to the sandbox container and specific directories located within it.
The path to the sandbox container is obtained using the [`intellijPlatform.sandboxContainer`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-sandboxContainer) extension property and the type and version of the IntelliJ Platform applied to the project.
Paths respect custom IntelliJ Platform when combined with [`CustomIntelliJPlatformVersionAware`](#CustomIntelliJPlatformVersionAware).
### sandboxSuffix
{#SandboxAware-sandboxSuffix}
Represents the suffix used i.e., for test-related tasks.
{style="narrow"}
Type
: `Property<String>`
### sandboxContainerDirectory
{#SandboxAware-sandboxContainerDirectory}
The container for all sandbox-related directories.
The directory name depends on the platform type and version currently used for running a task.
{style="narrow"}
Type
: `DirectoryProperty`
### sandboxConfigDirectory
{#SandboxAware-sandboxConfigDirectory}
A configuration directory located within the [`sandboxContainerDirectory`](#SandboxAware-sandboxContainerDirectory).
{style="narrow"}
Type
: `DirectoryProperty`
### sandboxPluginsDirectory
{#SandboxAware-sandboxPluginsDirectory}
A plugins directory located within the [`sandboxContainerDirectory`](#SandboxAware-sandboxContainerDirectory).
{style="narrow"}
Type
: `DirectoryProperty`
### sandboxSystemDirectory
{#SandboxAware-sandboxSystemDirectory}
A system directory located within the [`sandboxContainerDirectory`](#SandboxAware-sandboxContainerDirectory).
{style="narrow"}
Type
: `DirectoryProperty`
### sandboxLogDirectory
{#SandboxAware-sandboxLogDirectory}
A log directory located within the [`sandboxContainerDirectory`](#SandboxAware-sandboxContainerDirectory).
{style="narrow"}
Type
: `DirectoryProperty`
## SigningAware
{#SigningAware}
The interface provides the path to the Marketplace ZIP Signer executable.
It is required to have a dependency on the Marketplace ZIP Signer added to the project with [`intellijPlatform.zipSigner()`](tools_intellij_platform_gradle_plugin_dependencies_extension.md) dependencies extension.
### zipSignerExecutable
{#SigningAware-zipSignerExecutable}
Path to the Marketplace ZIP Signer executable.
{style="narrow"}
Type
: `RegularFileProperty`
<include from="snippets.md" element-id="missingContent"/>

View File

@ -7,6 +7,34 @@
## buildPlugin
{#buildPlugin}
This class represents a task for building a plugin and preparing a ZIP archive for deployment.
It uses the content produced by [`prepareSandbox`](#prepareSandbox) and [`jarSearchableOptions`](#jarSearchableOptions) tasks as an input.
### archiveBaseName
{#buildPlugin-archiveBaseName}
{style="narrow"}
Type
: `Property<String>`
Default value
: [`prepareSandbox.pluginName`](#prepareSandbox-pluginName)
### archiveFile
{#buildPlugin-archiveFile}
The archive file which represents the output file produced by the task.
{style="narrow"}
Type
: `RegularFileProperty`
Default value
: [`buildPlugin.archiveFile`](#buildPlugin-archiveFile)
## buildSearchableOptions
{#buildSearchableOptions}
@ -27,6 +55,76 @@ See also:
## initializeIntelliJPlatformPlugin
{#initializeIntelliJPlatformPlugin}
Initializes the IntelliJ Platform Gradle Plugin and performs various checks, like if the plugin is up-to-date.
### offline
{#initializeIntelliJPlatformPlugin-offline}
Determines if the operation is running in offline mode.
Depends on Gradle start parameters
{style="narrow"}
Type
: `Property<Boolean>`
Default value
: `StartParameter.isOffline`
See also:
- [StartParameter](https://docs.gradle.org/current/javadoc/org/gradle/StartParameter.html)
- [Command Line Execution Options](https://docs.gradle.org/current/userguide/command_line_interface.html#sec:command_line_execution_options)
### selfUpdateCheck
{#initializeIntelliJPlatformPlugin-selfUpdateCheck}
Represents the property for checking if self-update is enabled.
{style="narrow"}
Type
: `Property<Boolean>`
Default value
: [Build Features: `selfUpdateCheck`](tools_intellij_platform_gradle_plugin_build_features.md#selfUpdateCheck)
### selfUpdateLock
{#initializeIntelliJPlatformPlugin-selfUpdateLock}
Represents a lock file used to limit the plugin version checks in time.
If a file is absent, and other conditions are met, the version check is performed.
{style="narrow"}
Type
: `RegularFileProperty`
### coroutinesJavaAgent
{#initializeIntelliJPlatformPlugin-coroutinesJavaAgent}
Java Agent file for the Coroutines library, which is required to enable coroutines debugging.
{style="narrow"}
Type
: `Property<Boolean>`
Default value
: `[buildDirectory]/tmp/initializeIntelliJPlatformPlugin/coroutines-javaagent.jar`
See also:
- [Task Awares: `CoroutinesJavaAgentAware`](tools_intellij_platform_gradle_plugin_task_awares.md#CoroutinesJavaAgentAware)
### pluginVersion
{#initializeIntelliJPlatformPlugin-pluginVersion}
Represents the current version of the plugin.
{style="narrow"}
Type
: `Property<String>`
## instrumentCode
{#instrumentCode}
@ -82,7 +180,7 @@ Type
: `RegularFileProperty`
Default value
: <path>build/tmp/patchPluginXml/plugin.xml</path>
: <path>[buildDirectory]/tmp/patchPluginXml/plugin.xml</path>
### pluginId
{#patchPluginXml-pluginId}
@ -104,7 +202,6 @@ Default value
: [`intellijPlatform.pluginConfiguration.id`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-id)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.id`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-id)
- [Plugin Configuration File: `id`](plugin_configuration_file.md#idea-plugin__id)
@ -123,7 +220,6 @@ Default value
: [`intellijPlatform.pluginConfiguration.name`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-name)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.name`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-name)
- [Plugin Configuration File: `name`](plugin_configuration_file.md#idea-plugin__name)
@ -144,7 +240,6 @@ Default value
: [`intellijPlatform.pluginConfiguration.version`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-version)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.version`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-version)
- [Plugin Configuration File: `version`](plugin_configuration_file.md#idea-plugin__version)
@ -166,7 +261,6 @@ Default value
: [`intellijPlatform.pluginConfiguration.description`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-description)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.description`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-description)
- [Plugin Configuration File: `description`](plugin_configuration_file.md#idea-plugin__description)
@ -189,7 +283,6 @@ Default value
: [`intellijPlatform.pluginConfiguration.changeNotes`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-changeNotes)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.changeNotes`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-changeNotes)
- [Plugin Configuration File: `change-notes`](plugin_configuration_file.md#idea-plugin__change-notes)
@ -209,7 +302,6 @@ Default value
: [`intellijPlatform.pluginConfiguration.productDescriptor.code`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-productDescriptor-code)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.productDescriptor.code`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-productDescriptor-code)
- [Plugin Configuration File: `product-descriptor`](plugin_configuration_file.md#idea-plugin__product-descriptor)
@ -228,7 +320,6 @@ Default value
: [`intellijPlatform.pluginConfiguration.productDescriptor.releaseDate`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-productDescriptor-releaseDate)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.productDescriptor.releaseDate`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-productDescriptor-releaseDate)
- [Plugin Configuration File: `product-descriptor`](plugin_configuration_file.md#idea-plugin__product-descriptor)
@ -247,7 +338,6 @@ Default value
: [`intellijPlatform.pluginConfiguration.productDescriptor.releaseVersion`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-productDescriptor-releaseVersion)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.productDescriptor.releaseVersion`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-productDescriptor-releaseVersion)
- [Plugin Configuration File: `product-descriptor`](plugin_configuration_file.md#idea-plugin__product-descriptor)
@ -269,7 +359,6 @@ Default value
: `false`
See also:
- [Extension: `intellijPlatform.pluginConfiguration.productDescriptor.optional`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-productDescriptor-optional)
- [Plugin Configuration File: `product-descriptor`](plugin_configuration_file.md#idea-plugin__product-descriptor)
@ -288,7 +377,6 @@ Default value
: [`intellijPlatform.pluginConfiguration.ideaVersion.sinceBuild`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-ideaVersion-sinceBuild)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.ideaVersion.sinceBuild`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-ideaVersion-sinceBuild)
- [Plugin Configuration File: `idea-version`](plugin_configuration_file.md#idea-plugin__idea-version)
@ -308,7 +396,6 @@ Default value
: [`intellijPlatform.pluginConfiguration.ideaVersion.untilBuild`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-ideaVersion-untilBuild)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.ideaVersion.untilBuild`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-ideaVersion-untilBuild)
- [Plugin Configuration File: `idea-version`](plugin_configuration_file.md#idea-plugin__idea-version)
@ -327,7 +414,6 @@ Default value
: [`intellijPlatform.pluginConfiguration.vendor.name`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-vendor-name)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.vendor.name`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-vendor-name)
- [Plugin Configuration File: `vendor`](plugin_configuration_file.md#idea-plugin__vendor)
@ -346,7 +432,6 @@ Default value
: [`intellijPlatform.pluginConfiguration.vendor.email`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-vendor-email)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.vendor.email`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-vendor-email)
- [Plugin Configuration File: `vendor`](plugin_configuration_file.md#idea-plugin__vendor)
@ -365,16 +450,86 @@ Default value
: [`intellijPlatform.pluginConfiguration.vendor.url`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-vendor-url)
See also:
- [Extension: `intellijPlatform.pluginConfiguration.vendor.url`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-vendor-url)
- [Plugin Configuration File: `vendor`](plugin_configuration_file.md#idea-plugin__vendor)
## prepareSandbox
{#prepareSandbox}
Prepares a sandbox environment with the installed plugin and its dependencies.
The sandbox directory is required to run a guest IDE and tests in isolation from other instances, like when multiple IntelliJ Platforms are used for testing with [`runIde`](#runIde), [`testIde`](#testIde), [`testIdeUi`](#testIdeUi), or [`testIdePerformance`](#testIdePerformance) tasks.
To fully utilize the sandbox capabilities in a task, make it extend the [`SandboxAware`](tools_intellij_platform_gradle_plugin_task_awares.md#SandboxAware) interface.
See also:
- [Extension: `intellijPlatform.sandboxContainer`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-sandboxContainer)
- [Task Awares: `SandboxAware`](tools_intellij_platform_gradle_plugin_task_awares.md#SandboxAware)
### defaultDestinationDirectory
{#prepareSandbox-defaultDestinationDirectory}
Default sandbox destination directory to where the plugin files will be copied into.
{style="narrow"}
Type
: `DirectoryProperty`
Default value
: [`SandboxAware.sandboxPluginsDirectory`](tools_intellij_platform_gradle_plugin_task_awares.md#SandboxAware-sandboxPluginsDirectory)
### pluginName
{#prepareSandbox-pluginName}
The name of the plugin.
{style="narrow"}
Type
: `String`
Default value
: [`intellijPlatform.pluginConfiguration.name`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-pluginConfiguration-name)
### pluginJar
{#prepareSandbox-pluginJar}
The output of `Jar` task.
The proper `Jar.archiveFile` is picked depending on if code instrumentation is enabled.
{style="narrow"}
Type
: `RegularFileProperty`
Default value
: `Jar.archiveFile`
See also:
- [Extension: `intellijPlatform.instrumentCode`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-instrumentCode)
### pluginsClasspath
{#prepareSandbox-pluginsClasspath}
List of dependencies on external plugins resolved from the `intellijPlatformPluginsExtracted` configuration.
{style="narrow"}
Type
: `ConfigurableFileCollection`
See also:
- [Dependencies Extension](tools_intellij_platform_gradle_plugin_dependencies_extension.md)
### runtimeClasspath
{#prepareSandbox-runtimeClasspath}
Dependencies removed with the `runtimeClasspath` configuration.
{style="narrow"}
Type
: `ConfigurableFileCollection`
## printBundledPlugins
@ -401,19 +556,17 @@ See also:
ZIP archive to be published to the remote repository.
By default, it uses an output `archiveFile` of the [`signPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin) task if plugin signing is configured, otherwise [`buildPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#buildPlugin).
By default, it uses an output `archiveFile` of the [`signPlugin`](#signPlugin) task if plugin signing is configured, otherwise [`buildPlugin`](#buildPlugin).
{style="narrow"}
Type
: `Property<RegularFileProperty>`
: `RegularFileProperty`
Default value
: [`signPlugin.archiveFile`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin-archiveFile) or [`buildPlugin.archiveFile`](tools_intellij_platform_gradle_plugin_tasks.md#buildPlugin-archiveFile)
: [`signPlugin.archiveFile`](#signPlugin-archiveFile) or [`buildPlugin.archiveFile`](#buildPlugin-archiveFile)
See also:
- [Extension: `intellijPlatform.signing`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing)
- [Tasks: `signPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin)
- [Tasks: `buildPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#buildPlugin)
### host
@ -428,9 +581,6 @@ Type
Default value
: [`intellijPlatform.publishing.host`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-publishing-host)
See also:
- [Extension `intellijPlatform.publishing.host`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-publishing-host)
### token
{#publishPlugin-token}
@ -447,9 +597,6 @@ Required
Default value
: [`intellijPlatform.publishing.token`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-publishing-token)
See also:
- [Extension: `intellijPlatform.publishing.token`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-publishing-token)
### channel
{#publishPlugin-channel}
@ -463,9 +610,6 @@ Type
Default value
: [`intellijPlatform.publishing.channel`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-publishing-channel)
See also:
- [Extension: `intellijPlatform.publishing.channel`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-publishing-channel)
### hidden
{#publishPlugin-hidden}
@ -480,7 +624,6 @@ Default value
: [`intellijPlatform.publishing.hidden`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-publishing-hidden)
See also:
- [Extension: `intellijPlatform.publishing.hidden`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-publishing-hidden)
- [Hidden release](https://plugins.jetbrains.com/docs/marketplace/hidden-plugin.html)
@ -496,12 +639,6 @@ Type
Default value
: [`intellijPlatform.publishing.toolboxEnterprise`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-publishing-toolboxEnterprise)
See also:
- [Extension: `intellijPlatform.publishing.toolboxEnterprise`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-publishing-toolboxEnterprise)
## runIdePerformanceTest
{#runIdePerformanceTest}
> Not implemented.
>
@ -523,11 +660,11 @@ See also:
## signPlugin
{#signPlugin}
Signs the ZIP archive with the provided key using [Marketplace ZIP Signer](https://github.com/JetBrains/marketplace-zip-signer) library.
Signs the ZIP archive with the provided key using the [Marketplace ZIP Signer](https://github.com/JetBrains/marketplace-zip-signer) library.
To sign the plugin before publishing to [JetBrains Marketplace](https://plugins.jetbrains.com) with the [SignPluginTask] task, it is required to provide a certificate chain and a private key with its password using `signPlugin { ... }` Plugin Signing DSL.
To sign the plugin before publishing to [JetBrains Marketplace](https://plugins.jetbrains.com) with the [`signPlugin`](#signPlugin) task, it is required to provide a certificate chain and a private key with its password using [`intellijPlatform.signing`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing) extension.
As soon as [privateKey] (or [privateKeyFile]) and [certificateChain] (or [certificateChainFile]) properties are specified, the task will be executed automatically right before the [PublishPluginTask] task.
As soon as [`privateKey`](#signPlugin-privateKey) (or [`privateKeyFile`](#signPlugin-privateKeyFile)) and [`certificateChain`](#signPlugin-certificateChain) (or [`certificateChainFile`](#signPlugin-certificateChainFile) properties are specified, the task will be executed automatically right before the [`publishPlugin`](#publishPlugin) task.
For more details, see [Plugin Signing](https://plugins.jetbrains.com/docs/intellij/plugin-signing.html) article.
@ -547,9 +684,6 @@ Type
Default value
: [`buildPlugin.archiveFile`](#buildPlugin-archiveFile)
See also:
- [Tasks: `buildPlugin.archiveFile`](#buildPlugin-archiveFile)
### signedArchiveFile
{#signPlugin-signedArchiveFile}
@ -581,9 +715,6 @@ Type
Default value
: [`intellijPlatform.signing.keyStore`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-keyStore)
See also:
- [Extension: `intellijPlatform.signing.keyStore`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-keyStore)
### keyStorePassword
{#signPlugin-keyStorePassword}
@ -598,9 +729,6 @@ Type
Default value
: [`intellijPlatform.signing.keyStorePassword`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-keyStorePassword)
See also:
- [Extension: `intellijPlatform.signing.keyStorePassword`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-keyStorePassword)
### keyStoreKeyAlias
{#signPlugin-keyStoreKeyAlias}
@ -615,9 +743,6 @@ Type
Default value
: [`intellijPlatform.signing.keyStoreKeyAlias`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-keyStoreKeyAlias)
See also:
- [Extension: `intellijPlatform.signing.keyStoreKeyAlias`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-keyStoreKeyAlias)
### keyStoreType
{#signPlugin-keyStoreType}
@ -632,9 +757,6 @@ Type
Default value
: [`intellijPlatform.signing.keyStoreType`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-keyStoreType)
See also:
- [Extension: `intellijPlatform.signing.keyStoreType`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-keyStoreType)
### keyStoreProviderName
{#signPlugin-keyStoreProviderName}
@ -649,9 +771,6 @@ Type
Default value
: [`intellijPlatform.signing.keyStoreProviderName`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-keyStoreProviderName)
See also:
- [Extension: `intellijPlatform.signing.keyStoreProviderName`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-keyStoreProviderName)
### privateKey
{#signPlugin-privateKey}
@ -666,9 +785,6 @@ Type
Default value
: [`intellijPlatform.signing.privateKey`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-privateKey)
See also:
- [Extension: `intellijPlatform.signing.privateKey`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-privateKey)
### privateKeyFile
{#signPlugin-privateKeyFile}
@ -683,9 +799,6 @@ Type
Default value
: [`intellijPlatform.signing.privateKeyFile`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-privateKeyFile)
See also:
- [Extension: `intellijPlatform.signing.privateKeyFile`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-privateKeyFile)
### password
{#signPlugin-password}
@ -700,9 +813,6 @@ Type
Default value
: [`intellijPlatform.signing.password`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-password)
See also:
- [Extension: `intellijPlatform.signing.password`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-password)
### certificateChain
{#signPlugin-certificateChain}
@ -718,9 +828,6 @@ Type
Default value
: [`intellijPlatform.signing.certificateChain`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-certificateChain)
See also:
- [Extension: `intellijPlatform.signing.certificateChain`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-certificateChain)
### certificateChainFile
{#signPlugin-certificateChainFile}
@ -736,14 +843,19 @@ Type
Default value
: [`intellijPlatform.signing.certificateChainFile`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-certificateChainFile)
See also:
- [Extension: `intellijPlatform.signing.certificateChainFile`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-signing-certificateChainFile)
## testIde
{#testIde}
## testIdePerformance
{#testIdePerformance}
> Not implemented.
>
{style="warning"}
## testIdeUi
{#testIdeUi}
@ -767,5 +879,169 @@ See also:
## verifyPlugin
{#verifyPlugin}
Runs the IntelliJ Plugin Verifier CLI tool to check the binary compatibility with specified IDE builds.
See also:
- [Awares: `PluginVerifierAware`](tools_intellij_platform_gradle_plugin_task_awares.md#PluginVerifierAware)
- [Extension: `intellijPlatform.verifyPlugin`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin)
- [Types: `FailureLevel`](tools_intellij_platform_gradle_plugin_types.md#FailureLevel)
- [Types: `Subsystems`](tools_intellij_platform_gradle_plugin_types.md#Subsystems)
- [Types: `VerificationReportsFormats`](tools_intellij_platform_gradle_plugin_types.md#VerificationReportsFormats)
- [IntelliJ Plugin Verifier](https://github.com/JetBrains/intellij-plugin-verifier)
- [Verifying Plugin Compatibility](https://plugins.jetbrains.com/docs/intellij/verifying-plugin-compatibility.html)
### ides
{#verifyPlugin-ides}
Holds a reference to IntelliJ Platform IDEs which will be used by the IntelliJ Plugin Verifier CLI tool for the binary plugin verification.
The list of IDEs is controlled with the [`intellijPlatform.verifyPlugin.ides`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-ides) extension.
{style="narrow"}
Type
: `ConfigurableFileCollection`
### archiveFile
{#verifyPlugin-archiveFile}
Input ZIP archive file of the plugin to verify.
If empty, the task will be skipped.
{style="narrow"}
Type
: `RegularFileProperty`
Default value
: [`buildPlugin.archiveFile`](#buildPlugin-archiveFile)
### externalPrefixes
{#verifyPlugin-externalPrefixes}
The list of class prefixes from the external libraries.
The Plugin Verifier will not report `No such class` for classes of these packages.
{style="narrow"}
Type
: `ListProperty<String>`
Default value
: [`intellijPlatform.verifyPlugin.externalPrefixes`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-externalPrefixes)
### failureLevel
{#verifyPlugin-failureLevel}
Defines the verification level at which the task should fail if any reported issue matches.
{style="narrow"}
Type
: [`ListProperty<FailureLevel>`](tools_intellij_platform_gradle_plugin_types.md#FailureLevel)
Default value
: [`intellijPlatform.verifyPlugin.failureLevel`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-failureLevel)
### freeArgs
{#verifyPlugin-freeArgs}
The list of free arguments is passed directly to the IntelliJ Plugin Verifier CLI tool.
They can be used in addition to the arguments that are provided by dedicated options.
{style="narrow"}
Type
: `ListProperty<String>`
Default value
: [`intellijPlatform.verifyPlugin.freeArgs`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-freeArgs)
### ignoredProblemsFile
{#verifyPlugin-ignoredProblemsFile}
A file that contains a list of problems that will be ignored in a report.
{style="narrow"}
Type
: `RegularFileProperty`
Default value
: [`intellijPlatform.verifyPlugin.ignoredProblemsFile`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-ignoredProblemsFile)
### offline
{#verifyPlugin-offline}
Determines if the operation is running in offline mode.
Depends on Gradle start parameters
{style="narrow"}
Type
: `Property<Boolean>`
Default value
: `StartParameter.isOffline`
See also:
- [StartParameter](https://docs.gradle.org/current/javadoc/org/gradle/StartParameter.html)
- [Command Line Execution Options](https://docs.gradle.org/current/userguide/command_line_interface.html#sec:command_line_execution_options)
### subsystemsToCheck
{#verifyPlugin-subsystemsToCheck}
Specifies which subsystems of IDE should be checked.
{style="narrow"}
Type
: [`Subsystems`](tools_intellij_platform_gradle_plugin_types.md#Subsystems)
Default value
: [`intellijPlatform.verifyPlugin.subsystemsToCheck`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-subsystemsToCheck)
### teamCityOutputFormat
{#verifyPlugin-teamCityOutputFormat}
A flag that controls the output format.
If set to `true`, the TeamCity compatible output will be returned to stdout.
{style="narrow"}
Type
: `Property<Boolean>`
Default value
: [`intellijPlatform.verifyPlugin.teamCityOutputFormat`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-teamCityOutputFormat)
### verificationReportsDirectory
{#verifyPlugin-verificationReportsDirectory}
The path to the directory where verification reports will be saved.
{style="narrow"}
Type
: `DirectoryProperty`
Default value
: [`intellijPlatform.verifyPlugin.verificationReportsDirectory`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-verificationReportsDirectory)
### verificationReportsFormats
{#verifyPlugin-verificationReportsFormats}
The output formats of the verification reports.
{style="narrow"}
Type
: [`ListProperty<VerificationReportsFormats>`](tools_intellij_platform_gradle_plugin_types.md#VerificationReportsFormats)
Default value
: [`intellijPlatform.verifyPlugin.verificationReportsFormats`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-verificationReportsFormats)
<include from="snippets.md" element-id="missingContent"/>

View File

@ -0,0 +1,189 @@
<!-- Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
# Types
<link-summary>IntelliJ Platform Gradle Plugin data types, enums, and constants.</link-summary>
## FailureLevel
{#FailureLevel}
```
org.jetbrains.intellij.platform.gradle.tasks.VerifyPluginTask.FailureLevel
```
Enum class describing the failure level of the IntelliJ Plugin Verifier CLI tool run with the [`verifyPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin) task.
| Name | Description |
|------------------------------------|-------------------------------------------------------------------------------------|
| `COMPATIBILITY_WARNINGS` | Compatibility warnings detected against the specified IDE version. |
| `COMPATIBILITY_PROBLEMS` | Compatibility problems detected against the specified IDE version. |
| `DEPRECATED_API_USAGES` | Plugin uses API marked as deprecated (`@Deprecated`). |
| `SCHEDULED_FOR_REMOVAL_API_USAGES` | Plugin uses API marked as scheduled for removal (`ApiStatus.@ScheduledForRemoval`). |
| `EXPERIMENTAL_API_USAGES` | Plugin uses API marked as experimental (`ApiStatus.@Experimental`). |
| `INTERNAL_API_USAGES` | Plugin uses API marked as internal (`ApiStatus.@Internal`). |
| `OVERRIDE_ONLY_API_USAGES` | Override-only API is used incorrectly (`ApiStatus.@OverrideOnly`). |
| `NON_EXTENDABLE_API_USAGES` | Non-extendable API is used incorrectly (`ApiStatus.@NonExtendable`). |
| `PLUGIN_STRUCTURE_WARNINGS` | The structure of the plugin is not valid. |
| `MISSING_DEPENDENCIES` | Plugin has some dependencies missing. |
| `INVALID_PLUGIN` | Provided plugin artifact is not valid. |
| `NOT_DYNAMIC` | Plugin probably cannot be enabled or disabled without IDE restart |
| `ALL` | Contains all possible options. |
| `NONE` | Contains no option. |
See also:
- [Extension: `intellijPlatform.verifyPlugin.failureLevel`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-failureLevel)
- [Tasks: `verifyPlugin.failureLevel`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin-failureLevel)
## IntelliJPlatformType
{#IntelliJPlatformType}
```
org.jetbrains.intellij.platform.gradle.IntelliJPlatformType
```
Describes all IntelliJ Platform types available to be used for plugin development, dependency resolution, and plugin verification.
Each entry is composed of a product code name and coordinates used for dependency and binary release resolution.
| Name | Code | Coordinates |
|-------------------------|--------|----------------------------------------------------|
| `AndroidStudio` | `AI` | `com.google.android.studio:studio` |
| `CLion` | `CL` | `com.jetbrains.intellij.clion:clion` |
| `Fleet` | `FLIJ` | `com.jetbrains.intellij.fleetBackend:fleetBackend` |
| `Gateway` | `GW` | `com.jetbrains.intellij.gateway:gateway` |
| `GoLand` | `GO` | `com.jetbrains.intellij.goland:goland` |
| `IntellijIdeaCommunity` | `IC` | `com.jetbrains.intellij.idea:ideaIC` |
| `IntellijIdeaUltimate` | `IU` | `com.jetbrains.intellij.idea:ideaIU` |
| `PhpStorm` | `PS` | `com.jetbrains.intellij.phpstorm:phpstorm` |
| `PyCharmProfessional` | `PY` | `com.jetbrains.intellij.pycharm:pycharmPY` |
| `PyCharmCommunity` | `PC` | `com.jetbrains.intellij.pycharm:pycharmPC` |
| `Rider` | `RD` | `com.jetbrains.intellij.rider:riderRD` |
| `RustRover` | `RR` | `com.jetbrains.intellij.rustrover:RustRover` |
| `Writerside` | `WRS` | `com.jetbrains.intellij.idea:writerside` |
## ProductInfo
{#ProductInfo}
Represents information about the IntelliJ Platform product.
The information is retrieved from the <path>product-info.json</path> file in the IntelliJ Platform directory.
| Name | Description |
|-------------------|--------------------------------------------------------------------------|
| name | The product's name, like "IntelliJ IDEA". |
| version | The marketing version of the product, like "2023.2". |
| versionSuffix | The suffix of the version, like "EAP". |
| buildNumber | The build number of the product, like "232.8660.185". |
| productCode | The product code, like "IU". |
| dataDirectoryName | The directory name of the product data. |
| svgIconPath | The path to the SVG icon of the product. |
| productVendor | The vendor of the product. |
| launch | The list of OS- and arch-specific launch configurations for the product. |
| customProperties | The list of custom properties of the product. |
| bundledPlugins | The list of bundled plugins provided with the current release. |
| fileExtensions | The list of file extensions associated with the product. |
| modules | The list of modules of the product. |
### assertSupportedVersion()
{#ProductInfo-assertSupportedVersion}
Asserts that the resolved IntelliJ Platform is supported by checking against the minimal supported IntelliJ Platform version.
If the provided version is lower, an `IllegalArgumentException` is thrown with an appropriate message.
{style="narrow"}
Throws
: `IllegalArgumentException`
## ProductRelease.Channel
{#ProductRelease-Channel}
```
org.jetbrains.intellij.platform.gradle.model.ProductRelease
```
List of available channels used by JetBrains IDEs and Android Studio for describing binary releases.
| Name | JetBrains IDEs | Android Studio |
|-------------|:--------------:|:--------------:|
| `EAP` | X | |
| `MILESTONE` | | X |
| `BETA` | | X |
| `RELEASE` | X | X |
| `CANARY` | | X |
| `PATCH` | | X |
| `RC` | | X |
| `PREVIEW` | | X |
See also:
- [Extension: `intellijPlatform.verifyPlugin.ides`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-ides)
- [Tasks: `printProductsReleases`](tools_intellij_platform_gradle_plugin_tasks.md#printProductsReleases)
## ProductReleasesValueSource.FilterParameters
{#ProductReleasesValueSource-FilterParameters}
```
org.jetbrains.intellij.platform.gradle.provider.ProductReleasesValueSource
```
Interface that provides a clear way to filter binary product releases for the purposes of IntelliJ Plugin Verifier.
| Name | Description |
|--------------|------------------------------------------------------------------------------------------------------|
| `sinceBuild` | Build number from which the binary IDE releases will be matched. |
| `untilBuild` | Build number until which the binary IDE releases will be matched. |
| `types` | A list of [`IntelliJPlatformType`](#IntelliJPlatformType) types to match. |
| `channels` | A list of [`ProductRelease.Channel`](#ProductRelease-Channel) types of binary releases to search in. |
See also:
- [Extension: `intellijPlatform.verifyPlugin.ides`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-ides)
- [Tasks: `printProductsReleases`](tools_intellij_platform_gradle_plugin_tasks.md#printProductsReleases)
## Subsystems
{#Subsystems}
```
org.jetbrains.intellij.platform.gradle.tasks.VerifyPluginTask.Subsystems
```
Specifies which subsystems of IDE should be checked by the IntelliJ Plugin Verifier CLI tool run with the [`verifyPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin) task.
| Name | Description |
|-------------------|----------------------------------------------|
| `ALL` | Verify all code. |
| `ANDROID_ONLY` | Verify only code related to Android support. |
| `WITHOUT_ANDROID` | Exclude problems related to Android support. |
See also:
- [Extension: `intellijPlatform.verifyPlugin.subsystemsToCheck`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-subsystemsToCheck)
- [Tasks: `verifyPlugin.subsystemsToCheck`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin-subsystemsToCheck)
## VerificationReportsFormats
{#VerificationReportsFormats}
```
org.jetbrains.intellij.platform.gradle.tasks.VerifyPluginTask.VerificationReportsFormats
```
Enum class describing the type of the results produced by the IntelliJ Plugin Verifier CLI tool run with the [`verifyPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin) task.
| Name | Description |
|------------|--------------------------------|
| `PLAIN` | Plain text file. |
| `HTML` | HTML formatted output file. |
| `MARKDOWN` | Markdown file. |
| `ALL` | Contains all possible options. |
| `NONE` | Contains no option. |
See also:
- [Extension: `intellijPlatform.verifyPlugin.verificationReportsFormats`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-verifyPlugin-verificationReportsFormats)
- [Tasks: `verifyPlugin.verificationReportsFormats`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin-verificationReportsFormats)
<include from="snippets.md" element-id="missingContent"/>