mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-30 10:17:50 +08:00
IntelliJ Platform Gradle Plugin: code instrumentation
This commit is contained in:
parent
a0172e43c4
commit
a58e4f95f4
@ -123,4 +123,22 @@ See also:
|
||||
|-----------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|
|
||||
| <p>`jetbrainsRuntime(version, variant, architecture)`</p><p>`jetbrainsRuntime(explicitVersion)`</p> | Adds a dependency on [JetBrains Runtime](ide_development_instance.md#using-a-jetbrains-runtime-for-the-development-instance). |
|
||||
|
||||
## Code Instrumentation
|
||||
|
||||
The code instrumentation process handled with the [`instrumentCode`](tools_intellij_platform_gradle_plugin_tasks.md#instrumentCode) task, requires extra dependencies to work and properly adjust the Java bytecode.
|
||||
There's the `instrumentationTools()` dependencies helper introduced to apply all required dependencies using default configuration, however, you still can add and configure them separately.
|
||||
|
||||
Adds a Java Compiler dependency for code instrumentation.
|
||||
The version is determined by the IntelliJ Platform build number.
|
||||
If the exact version is unavailable, the closest one is used, found by scanning all releases.
|
||||
|
||||
| Function | Description |
|
||||
|-------------------------------------------------------|-------------------------------------------------------|
|
||||
| <p>`instrumentationTools()`</p> | A helper function to apply all required dependencies. |
|
||||
| <p>`javaCompiler()`</p><p>`javaCompiler(version)`</p> | Adds a dependency on Java Compiler. |
|
||||
|
||||
- [Extension: `intellijPlatform.instrumentCode`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-instrumentCode)
|
||||
- [Task Awares: `JavaCompilerAware`](tools_intellij_platform_gradle_plugin_task_awares.md#JavaCompilerAware)
|
||||
- [Build Features: `useClosestJavaCompilerVersion`](tools_intellij_platform_gradle_plugin_gradle_properties.md#useClosestJavaCompilerVersion)
|
||||
|
||||
<include from="snippets.md" element-id="missingContent"/>
|
||||
|
@ -138,3 +138,28 @@ Example
|
||||
```
|
||||
org.jetbrains.intellij.platform.buildFeature.useCacheRedirector=false
|
||||
```
|
||||
|
||||
### useClosestJavaCompilerVersion
|
||||
{#useClosestJavaCompilerVersion}
|
||||
|
||||
Java Compiler dependencies are tied to IntelliJ Platform build numbers and hosted in the IntelliJ Dependencies Repository.
|
||||
Despite this, certain versions (like EAP or nightly builds) might be absent.
|
||||
|
||||
To solve this, we fetch a list of all versions from the Maven repository and locate the closest match.
|
||||
This method requires an additional remote repository request.
|
||||
If undesired, this feature can be disabled to strictly match dependencies to your build version.
|
||||
|
||||
{style="narrow"}
|
||||
Default value
|
||||
: `true`
|
||||
|
||||
Example
|
||||
:
|
||||
```
|
||||
org.jetbrains.intellij.platform.buildFeature.useClosestJavaCompilerVersion=false
|
||||
```
|
||||
|
||||
See also:
|
||||
- [Dependencies: `javaCompiler()`](tools_intellij_platform_gradle_plugin_dependencies_extension.md#code-instrumentation)
|
||||
- [Task Awares: `JavaCompilerAware`](tools_intellij_platform_gradle_plugin_task_awares.md#JavaCompilerAware)
|
||||
- [Tasks: `instrumentCode`](tools_intellij_platform_gradle_plugin_tasks.md#instrumentCode)
|
||||
|
@ -12,12 +12,16 @@ The Task Awares is a set of interfaces that can be applied to custom Gradle task
|
||||
## CoroutinesJavaAgentAware
|
||||
{#CoroutinesJavaAgentAware}
|
||||
|
||||
<tldr>
|
||||
|
||||
**Depends on**: [`initializeIntelliJPlatformPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#initializeIntelliJPlatformPlugin)
|
||||
|
||||
**Inherited by**: [`RunnableIdeAware`](#RunnableIdeAware)
|
||||
|
||||
**Sources**: [`CoroutinesJavaAgentAware`](%gh-ijpgp%/src/main/kotlin/org/jetbrains/intellij/platform/gradle/tasks/aware/CoroutinesJavaAgentAware.kt)
|
||||
|
||||
</tldr>
|
||||
|
||||
The interface provides the path to the Java Agent file for the Coroutines library required to enable coroutines debugging.
|
||||
|
||||
### coroutinesJavaAgentFile
|
||||
@ -36,10 +40,14 @@ Default value
|
||||
## CustomIntelliJPlatformVersionAware
|
||||
{#CustomIntelliJPlatformVersionAware}
|
||||
|
||||
<tldr>
|
||||
|
||||
**Inherited by**: [`runIde`](tools_intellij_platform_gradle_plugin_tasks.md#runIde), [`testIde`](tools_intellij_platform_gradle_plugin_tasks.md#testIde), [`testIdePerformance`](tools_intellij_platform_gradle_plugin_tasks.md#testIdePerformance), [`testIdeUi`](tools_intellij_platform_gradle_plugin_tasks.md#testIdeUi)
|
||||
|
||||
**Sources**: [`CustomIntelliJPlatformVersionAware`](%gh-ijpgp%/src/main/kotlin/org/jetbrains/intellij/platform/gradle/tasks/aware/CustomIntelliJPlatformVersionAware.kt)
|
||||
|
||||
</tldr>
|
||||
|
||||
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.
|
||||
@ -88,10 +96,14 @@ Type
|
||||
## IntelliJPlatformVersionAware
|
||||
{#IntelliJPlatformVersionAware}
|
||||
|
||||
<tldr>
|
||||
|
||||
**Inherited by**: [`CustomIntelliJPlatformVersionAware`](#CustomIntelliJPlatformVersionAware), [`RuntimeAware`](#RuntimeAware), [`SandboxAware`](#SandboxAware), [`initializeIntelliJPlatformPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#initializeIntelliJPlatformPlugin), [`patchPluginXml`](tools_intellij_platform_gradle_plugin_tasks.md#patchPluginXml), [`printBundledPlugins`](tools_intellij_platform_gradle_plugin_tasks.md#printBundledPlugins), [`verifyPluginProjectConfiguration`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPluginProjectConfiguration)
|
||||
|
||||
**Sources**: [`IntelliJPlatformVersionAware`](%gh-ijpgp%/src/main/kotlin/org/jetbrains/intellij/platform/gradle/tasks/aware/IntelliJPlatformVersionAware.kt)
|
||||
|
||||
</tldr>
|
||||
|
||||
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.
|
||||
@ -144,15 +156,39 @@ Throws
|
||||
: `IllegalArgumentException`
|
||||
|
||||
|
||||
## JavaCompilerAware
|
||||
{#JavaCompilerAware}
|
||||
|
||||
<tldr>
|
||||
|
||||
**Inherited by**: [`instrumentCode`](tools_intellij_platform_gradle_plugin_tasks.md#instrumentCode)
|
||||
|
||||
**Sources**: [`JavaCompilerAware`](%gh-ijpgp%/src/main/kotlin/org/jetbrains/intellij/platform/gradle/tasks/aware/JavaCompilerAware.kt)
|
||||
|
||||
</tldr>
|
||||
|
||||
The interface provides the dependency on Java Compiler used by Ant tasks.
|
||||
|
||||
This dependency is required, i.e., for [`instrumentCode`](tools_intellij_platform_gradle_plugin_tasks.md#instrumentCode) to properly configure Ant tasks provided by the IntelliJ Platform.
|
||||
|
||||
See also:
|
||||
- [Build Features: `useClosestJavaCompilerVersion`](tools_intellij_platform_gradle_plugin_gradle_properties.md#useClosestJavaCompilerVersion)
|
||||
- [Dependencies: `instrumentationTools()`](tools_intellij_platform_gradle_plugin_dependencies_extension.md#code-instrumentation)
|
||||
- [Tasks: `instrumentCode`](tools_intellij_platform_gradle_plugin_tasks.md#instrumentCode)
|
||||
|
||||
|
||||
## PluginAware
|
||||
{#PluginAware}
|
||||
|
||||
<tldr>
|
||||
|
||||
**Depends on**: [`patchPluginXml`](tools_intellij_platform_gradle_plugin_tasks.md#patchPluginXml)
|
||||
|
||||
**Inherited by**: [`RunnableIdeAware`](#RunnableIdeAware), [`verifyPluginProjectConfiguration`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPluginProjectConfiguration)
|
||||
|
||||
**Sources**: [`PluginAware`](%gh-ijpgp%/src/main/kotlin/org/jetbrains/intellij/platform/gradle/tasks/aware/PluginAware.kt)
|
||||
|
||||
</tldr>
|
||||
|
||||
This interface provides information about the currently built plugin.
|
||||
|
||||
@ -181,10 +217,14 @@ The `parse` method provides a possibility for parsing the <path>pluginXml</path>
|
||||
## PluginVerifierAware
|
||||
{#PluginVerifierAware}
|
||||
|
||||
<tldr>
|
||||
|
||||
**Inherited by**: [`verifyPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin)
|
||||
|
||||
**Sources**: [`PluginVerifierAware`](%gh-ijpgp%/src/main/kotlin/org/jetbrains/intellij/platform/gradle/tasks/aware/PluginVerifierAware.kt)
|
||||
|
||||
</tldr>
|
||||
|
||||
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.
|
||||
@ -203,12 +243,16 @@ Type
|
||||
## RunnableIdeAware
|
||||
{#RunnableIdeAware}
|
||||
|
||||
<tldr>
|
||||
|
||||
**Depends on**: [`initializeIntelliJPlatformPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#initializeIntelliJPlatformPlugin)
|
||||
|
||||
**Inherited by**: [`buildSearchableOptions`](tools_intellij_platform_gradle_plugin_tasks.md#buildSearchableOptions), [`runIde`](tools_intellij_platform_gradle_plugin_tasks.md#runIde), [`testIde`](tools_intellij_platform_gradle_plugin_tasks.md#testIde), [`testIdePerformance`](tools_intellij_platform_gradle_plugin_tasks.md#testIdePerformance), [`testIdeUi`](tools_intellij_platform_gradle_plugin_tasks.md#testIdeUi)
|
||||
|
||||
**Sources**: [`RunnableIdeAware`](%gh-ijpgp%/src/main/kotlin/org/jetbrains/intellij/platform/gradle/tasks/aware/RunnableIdeAware.kt)
|
||||
|
||||
</tldr>
|
||||
|
||||
The interface which uses a set of various interfaces required for running a guest IDE. Inherits from:
|
||||
- [`CoroutinesJavaAgentAware`](#CoroutinesJavaAgentAware)
|
||||
- [`PluginAware`](#PluginAware)
|
||||
@ -220,10 +264,14 @@ The interface which uses a set of various interfaces required for running a gues
|
||||
## RuntimeAware
|
||||
{#RuntimeAware}
|
||||
|
||||
<tldr>
|
||||
|
||||
**Inherited by**: [`RunnableIdeAware`](#RunnableIdeAware), [`verifyPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPlugin)
|
||||
|
||||
**Sources**: [`RuntimeAware`](%gh-ijpgp%/src/main/kotlin/org/jetbrains/intellij/platform/gradle/tasks/aware/RuntimeAware.kt)
|
||||
|
||||
</tldr>
|
||||
|
||||
This interface provides access to the Java Runtime (i.e., JetBrains Runtime) resolved with `RuntimeResolver`.
|
||||
|
||||
### runtimeDirectory
|
||||
@ -259,12 +307,16 @@ Type
|
||||
## SandboxAware
|
||||
{#SandboxAware}
|
||||
|
||||
<tldr>
|
||||
|
||||
**Depends on**: [`prepareSandbox`](tools_intellij_platform_gradle_plugin_tasks.md#prepareSandbox)
|
||||
|
||||
**Inherited by**: [`RunnableIdeAware`](%gh-ijpgp%/src/main/kotlin/org/jetbrains/intellij/platform/gradle/tasks/aware/RunnableIdeAware.kt), [`jarSearchableOptions`](tools_intellij_platform_gradle_plugin_tasks.md#jarSearchableOptions), [`prepareSandbox`](tools_intellij_platform_gradle_plugin_tasks.md#prepareSandbox), [`verifyPluginStructure`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPluginStructure)
|
||||
|
||||
**Sources**: [`SandboxAware`](%gh-ijpgp%/src/main/kotlin/org/jetbrains/intellij/platform/gradle/tasks/aware/SandboxAware.kt)
|
||||
|
||||
</tldr>
|
||||
|
||||
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.
|
||||
@ -337,10 +389,14 @@ Type
|
||||
## SigningAware
|
||||
{#SigningAware}
|
||||
|
||||
<tldr>
|
||||
|
||||
**Inherited by**: [`signPlugin`](tools_intellij_platform_gradle_plugin_tasks.md#signPlugin), [`verifyPluginSignature`](tools_intellij_platform_gradle_plugin_tasks.md#verifyPluginSignature)
|
||||
|
||||
**Sources**: [`SigningAware`](%gh-ijpgp%/src/main/kotlin/org/jetbrains/intellij/platform/gradle/tasks/aware/SigningAware.kt)
|
||||
|
||||
</tldr>
|
||||
|
||||
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.
|
||||
|
@ -297,12 +297,23 @@ Type
|
||||
## instrumentCode
|
||||
{#instrumentCode}
|
||||
|
||||
<tldr>
|
||||
|
||||
**Extends**: [`DefaultTask`][gradle-default-task], [`JavaCompilerAware`](tools_intellij_platform_gradle_plugin_task_awares.md#JavaCompilerAware)
|
||||
|
||||
**Sources**: [`InstrumentCodeTask`](%gh-ijpgp%/src/main/kotlin/org/jetbrains/intellij/platform/gradle/tasks/InstrumentCodeTask.kt)
|
||||
|
||||
</tldr>
|
||||
|
||||
> Not implemented.
|
||||
>
|
||||
{style="warning"}
|
||||
|
||||
See also:
|
||||
- [Extension: `intellijPlatform.instrumentCode`](tools_intellij_platform_gradle_plugin_extension.md#intellijPlatform-instrumentCode)
|
||||
- [Dependencies: `instrumentationTools()`](tools_intellij_platform_gradle_plugin_dependencies_extension.md#code-instrumentation)
|
||||
- [Task Awares: `JavaCompilerAware`](tools_intellij_platform_gradle_plugin_task_awares.md#JavaCompilerAware)
|
||||
- [Build Features: `useClosestJavaCompilerVersion`](tools_intellij_platform_gradle_plugin_gradle_properties.md#useClosestJavaCompilerVersion)
|
||||
|
||||
|
||||
## instrumentedJar
|
||||
|
Loading…
x
Reference in New Issue
Block a user