Releases: JetBrains/intellij-platform-gradle-plugin
2.2.1
Added
- Introduce LSP API Test Framework entry as
TestFrameworkType.Plugin.LSP
Changed
- Better resolve the plugin dependency path with nested directories in the plugin archive.
Fixed
- Local IntelliJ Platform wasn't handled with the
CollectorTransformer
due to the missing attributes applied to thedirectory
archive. - Plugin Verifier: suppress plugin problems for bundled or third-party plugins
- Plugin Verifier: when creating an IDE, silently skip missing layout entries
- Custom plugin repository adjustments
2.2.0
Added
- Resolve common dependencies (instrumentation tools, Plugin Verifier, ZIP Signer) automatically without the need for adding helpers.
- Introduce
intellijPlatformClasspath
configuration to allow retrieving the processed IntelliJ Platform and plugins dependencies. - Warn if trying to refer to a bundled plugin via
intellijPlatform.plugins
instead of requiredintellijPlatform.bundledPlugin
. - Set
ide.native.launcher=false
forRunnableIdeAware
tasks to prevent from showing theThe IDE seems to be launched with a script launcher
warning notification. - Add bundledPlugins with transitive dependencies to the tests runtime classpath.
- Set
intellij.testFramework.rethrow.logged.errors=true
to make logged errors fails test immediately. #1828
Changed
- Move
localPlatformArtifacts()
to the top of thedefaultRepositories()
list. - Make IntelliJ Platform dependencies available to
testImplementation
by default to avoid mutating tests classpath - For running testing, use test sandbox instead of compiled classes from
build/classes
directory - Updated the
publishPlugin()
task to use IDE Services’ newPOST /api/plugins
API when configured to publish to the IDE Services plugin repository, replacing the deprecatedPOST /api/ij-plugins/upload
endpoint - Rewrite bundled plugins/modules resolution by using IntelliJ Structure library.
- Update minimal supported Gradle version to
8.5
Fixed
- Make the
testRuntimeClasspath
configuration request instrumented and composed jars of imported modules when running tests - Adjust local artifact definition in Ivy XML files to satisfy Gradle dependency locking. #1778
- Add the missing
org.jetbrains.kotlin.platform.type=jvm
attribute to theintellijPlatformRuntimeClasspath
configuration manually as it is not inherited from theruntimeClasspath
. Could not generate a decorated class for type PluginArtifactRepository.
when creating a custom plugin repository.- Generation of duplicate files in
.intellijPlatform/localPlatformArtifacts
with different version numbers. - Gradle's
api
&compileOnlyApi
configurations created by its java-library plugin don't work, and transitive implementation scope dependencies get exposed, when this plugin is used. #1799 - Incorrect transitive dependencies calculation for bundled modules. #1791
- Fixed IOOB exception while running tests from Gradle.
- Building the searchable options:
Unable to create shared archive file $IDE_CACHE_DIR/pycharm243.18137.19.jsa: (No such file or directory).
- Compatibility with Gradle dependency verification. Previously it was failing with
Failed to create MD5 hash for file
. - Rework how the IDEs from Plugin Verification are resolved. #1784
- Exclude
kotlin-stdlib
andkotlinx-coroutines
transitive dependencies in various variants from IntelliJ Platform dependencies. #1817 - Can't find
performanceTesting.jar
when building against Android Studio 242+. #1738 - Custom
runIde
task do not find the right runtime, ifuseInstaller
isfalse
. #1827 - PluginVerifier doesn't honor gradle offline mode. #1820
- Make
intellij.rider
bundled module automatically available for Rider. #1774 - Bump vulnerable
com.squareup.okio:okio:1.17.2
to1.17.6
. #1795
2.1.0
Added
- Added
PrepareSandboxTask.pluginName
for easier accessing of the plugin directory name - Allow for using non-installer IDEs for plugin verification #1715
- Added
bundledModule()
dependency extension helpers - Detect and warn about the
kotlinx-coroutines
library in transitive dependencies - Introduce caching when creating dependencies
Changed
- Add IntelliJ Platform v2 product modules to the test classpath
- Invalidate local dependency artifacts XML files running
Fixed
- Fixed caching for
IntelliJPlatformArgumentProvider.coroutinesJavaAgentFile
. intellijPlatform.pluginConfiguration.description
appends content instead of replacing it #1744- The
disabledPlugins.txt
file is not updated when disabling bundled plugins #1745 - Plugin sandbox created by
IntelliJPlatformTestingExtension
is not correct forlocalPlugin(org.gradle.api.artifacts.ProjectDependency)
#1743 - Better resolving the JVM variant of the
io.github.pdvrieze.xmlutil
dependency #1741 - Remove the inclusion of all IntelliJ Platform v2 bundled modules to the classpath #1761
- Duplicate bundled template error in tests #1755
- Fixed IDE problem when submodule jars appear as External Libraries
- Fixed
java.util.ConcurrentModificationException
on Gradle sync caused by thepluginVerification
configuration #1714 - Fixed Configuration Cache issues related to the
intellijPlatform.buildSearchableOptions
flag
2.0.1
Changed
- Don't register the
testIdeUi
task by default - Add
DisableCachingByDefault
toPrepareSandboxTask
#1721 - Make the
prepareSandbox
task always run whenever any of the sandbox directories is missing #1730
Fixed
- Fixed "No IDE resolved for verification with the IntelliJ Plugin Verifier" when
untilBuild
is an empty string #1717 - Dependency resolution fails if a repository with
exclusiveContent
rules is added twice – usecontent
inclusive rule instead #1728 - Apply
composedJar
library elements attribute totestRuntimeClasspath
configuration - When adding new IDEs for Plugin Verifier, do not mutate existing
intellijPluginVerifierIdes_X
configurations if present - Respect the
sandboxDirectory
property when configuring custom tasks withintellijPlatformTesting
extension #1723
2.0.0
IntelliJ Platform Gradle Plugin 2.0 is out!
Read the full blog post.
Version 2.0 of the IntelliJ Platform Gradle Plugin is now available! Previously called the Gradle IntelliJ Plugin, this updated plugin for the Gradle build system simplifies the configuration of environments for building, testing, verifying, and publishing plugins for IntelliJ-based IDEs. Redesigned and rewritten, it addresses community-reported issues and feature requests from previous versions.
To start using version 2.0 of the IntelliJ Platform Gradle Plugin, visit the documentation pages at IntelliJ Platform SDK | Tooling | IntelliJ Platform Gradle Plugin 2.x, where you will find a proper introduction to all of the new features and changes, a migration guide, and examples of various configurations you may be interested in.
For projects created with the IntelliJ Platform Plugin Template, we advise taking a look at the 2.0.0 pull request applied on top of the obsolete Gradle IntelliJ Plugin 1.x configuration: https://github.com/JetBrains/intellij-platform-plugin-template/pull/458/files
If you have any issues or requests, please submit them to our GitHub Issues page or the JetBrains Platform Slack.
To submit questions or suggestions related to the documentation, please use the feedback form at the bottom of the article.
2.0.0-rc2
The IntelliJ Platform Gradle Plugin 2.0.0-rc2
is a plugin for the Gradle build system to help configure environments for building, testing, verifying, and publishing plugins for IntelliJ-based IDEs. It is a successor of Gradle IntelliJ Plugin 1.x.
To read more about the upcoming 2.0.0
release, please visit the documentation and the Migration Guide from Gradle IntelliJ Plugin.
If you have any issues or requests, please submit them to the GitHub Issues.
To submit questions or suggestions in relation to the documentation, use the feedback form at the bottom of the article.
Added
- Groovy support
- Make
plugin(id, version, group)
dependency helper acceptgroup
in the format of: empty (use Marketplace groupId),@channel
, or user-defined groupId - Introduce
PrepareJarSearchableOptionsTask
for performance purposes - Possibility for specifying
configurationName
when usingtestFramework
,platformDependency
, andtestPlatformDependency
dependency helpers
Fixed
- Sandbox producer of a custom task shouldn't inherit
sandboxDirectory
from the base sandbox producer. - Use lenient configuration when resolving JetBrains Runtime (JBR) dependencies
- Add
exclusiveContent
to thejetbrainsRuntime()
repository definition to resolve only JBR artifacts - Avoid recalculating the
IvyModule
for bundled plugin/module if already written to Ivy XML file
2.0.0-RC1
The IntelliJ Platform Gradle Plugin 2.0.0-rc1
is a plugin for the Gradle build system to help configure environments for building, testing, verifying, and publishing plugins for IntelliJ-based IDEs. It is a successor of Gradle IntelliJ Plugin 1.x.
To read more about the upcoming 2.0.0
release, please visit the documentation and the Migration Guide from Gradle IntelliJ Plugin.
If you have any issues or requests, please submit them to the GitHub Issues.
To submit questions or suggestions in relation to the documentation, use the feedback form at the bottom of the article.
Added
- Introduce
TestFrameworkType.Starter
for adding dependencies on the Starter UI testing framework.
Changed
- JUnit4 is no longer provided via IntelliJ Platform — it is necessary to add it to the project with
testImplementation
. - Use the actual JVM
targetCompatibility
when defining composed jar and distribution archive variants. testIdeUi
is now dedicated to work withTestFrameworkType.Starter
.- Extend
testImplementation
configuration with dependencies fromintellijPlatformTestDependencies
. - Move
composed-jar
anddistribution
artifacts definition to theorg.jetbrains.intellij.platform.module
plugin.
Fixed
- Fixed the broken resolution of the dependency on a local IntelliJ Platform.
- Fixed renaming files with the same name when preparing the sandbox.
- Fixed the resolving of the IDEs list for
verifyPlugin
. - ProductReleasesValueSource: pick the IDE with the highest
build
number instead ofversion
. - Exclude JUnit4 (
junit4.jar
) from the IntelliJ Platform classpath - Use
Path.invariantSeparatorsPathString
inModuleDescriptorsValueSource
to collect modules for exclusion on Windows
Removed
- Removed
intellijPlatform.verifyPlugin.downloadDirectory
andintellijPlatform.verifyPlugin.homeDirectory
as IDEs cache for Plugin Verifier is now managed with Gradle.
Breaking change
- If you have tests defined in your plugin, the JUnit library is now excluded from the classpath (as it was present due to the bug). To add it, use:
testImplementation("junit:junit:4.13.2")
P.S.:
- 1️⃣ Due to the persisting issue related to multiple IntelliJ Platform copies in the Gradle Cache, I wrote this Kotlin Script that helps clean it up: https://gist.github.com/hsz/0fc45e1a6fc9ef73d4e4f5960058bded
- 2️⃣ Docs are still in progress, but I expect to get them in sync with the code base next week.
- 3️⃣ Please start the migration if you haven’t yet, as the 2.0 release is required when you plan to use IntelliJ Platform 2024 as a target platform for building the plugin.
- 4️⃣ Any issues with the latest release please submit directly to GitHub Issues.
- 5️⃣ If you have five minutes, I’ll gladly receive pull requests to docs or at least highlight weak points. You can use the form at the bottom of each documentation page -> https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html
❤️ Thank you, folks, for the patience and all the feedback, and good luck with migration!
v2.0.0-beta9
The IntelliJ Platform Gradle Plugin 2.0.0-beta9
is a plugin for the Gradle build system to help configure environments for building, testing, verifying, and publishing plugins for IntelliJ-based IDEs. It is a successor of Gradle IntelliJ Plugin 1.x.
To read more about the upcoming 2.0.0
release, please visit the documentation and the Migration Guide from Gradle IntelliJ Plugin.
If you have any issues or requests, please submit them to the GitHub Issues.
To submit questions or suggestions in relation to the documentation, use the feedback form at the bottom of the article.
Added
- Added
useInstaller: Boolean
property tocreate(type, version)
(and product-specific) dependency helpers to distinguish the type of artifacts;true
by default - Added
useInstaller: Boolean
property to configuration when creating custom tasks withintelliJPlatformTesting
;true
by default - Introduce
create(notation: String, useInstaller: Boolean)
dependency helper for adding a dependency on the IntelliJ Platform using notation string, likeIU-2024.2
- Introduce
jetbrainsRuntimeLocal(localPath: String)
dependency helper for adding a dependency on the local JetBrains Runtime instance - Introduce
GradleProperties
helper class for handlingorg.jetbrains.intellij.platform.<propertyName>
Gradle properties, accepting multiple input types intellijPlatform
component for accessing the composed Jar withcomponents["intellijPlatform"]
Changed
- Rename
jetBrainsCdn()
repository helper tojetbrainsIdeInstallers()
- Rename
binaryReleasesAndroidStudio()
repository helper toandroidStudioInstallers()
- Rewrite the latest/closest version resolution mechanism for performance reasons
- Rewrite the latest Gradle plugin check for performance reasons
- Enhance
PrintBundledPluginsTask
output - IntelliJPlatformTestingExtension: make the produced object
Buildable
so it can be used fordependsOn()
purposes - Rewrite the local Ivy dependencies management
- Review the bundled plugins resolution
bundledPlugin()
: provide a helpful message when specifying a well-known plugin path (valid in 1.x) instead of real plugin ID (java
vscom.intellij.java
)- Renamed
org.jetbrains.intellij.platform.buildFeature.<propertyName>
Gradle properties toorg.jetbrains.intellij.platform.<propertyName>
localPlugin(project(":submodule"))
refers now to the distribution Zip archive
Fixed
testFramework()
dependency helper must useDependencyVersion.Closest
instead fixedDependencyVersion.IntelliJPlatform
- Fixed
Task ... uses output .intellijPlatform/coroutines-javaagent.jar of task ... without declaring dependency
- Fixed the wrong Android Studio installer architecture on
x86
- Fixed
InvalidPathException: Illegal char <:>
exception on Windows when resolving IntelliJ Platform system properties - Fixed missing custom plugins in the sandbox when running a custom task
Removed
- Resolving IntelliJ Platform artifacts from JetBrains CDN using common coordinates
- Remove
BundledPluginsListTransformer
and in-advance bundled plugins resolving with JSON serialization - Remove
BuildFeature.USE_CLOSEST_VERSION_RESOLVING
- Remove
BuildFeature
mechanism in favor ofGradleProperties
v2.0.0-beta8
The IntelliJ Platform Gradle Plugin 2.0.0-beta8
is a plugin for the Gradle build system to help configure environments for building, testing, verifying, and publishing plugins for IntelliJ-based IDEs. It is a successor of Gradle IntelliJ Plugin 1.x.
To read more about the upcoming 2.0.0
release, please visit the documentation and the Migration Guide from Gradle IntelliJ Plugin.
If you have any issues or requests, please submit them to the GitHub Issues.
To submit questions or suggestions in relation to the documentation, use the feedback form at the bottom of the article.
Added
intellijPlatformTesting
top-level extension for registering custom tasks- Resolving IntelliJ Platform artifacts from JetBrains CDN using common coordinates
jetBrainsCdn()
repository helperDependencyVersion
for controlling how particular dependencies are resolved (latest/closest/match IntelliJ Platform/exact)- Added
-Didea.l10n.keys=only
to thebuildSearchableOptions
task
Changed
- Custom tasks registering refactoring
testIdeUi
no longer runs IDE with Robot Server Plugin applieddefaultRepositories()
repository helper executes nowjetBrainsCdn()
instead ofbinaryReleases()
Fixed
- Fixed
Could not find bundled plugin with ID: 'org.jetbrains.kotlin'
- Fixed
Cannot snapshot ../system/jcef_cache/SingletonSocket: not a regular file
issue when preparing sandbox - Optimized resolving the latest/closest dependency version from available Maven repositories
Removed
CustomRunIdeTask
,CustomTestIdeTask
,CustomTestIdePerformanceTask
,CustomTestIdeUiTask
custom task classesCustomIntelliJPlatformVersionAware
,SandboxProducerAware
task aware classbinaryReleases()
repository helperorg.jetbrains.intellij.platform.buildFeature.useBinaryReleases
flag
v2.0.0-beta7
The IntelliJ Platform Gradle Plugin 2.0.0-beta7
is a plugin for the Gradle build system to help configure environments for building, testing, verifying, and publishing plugins for IntelliJ-based IDEs. It is a successor of Gradle IntelliJ Plugin 1.x.
To read more about the upcoming 2.0.0
release, please visit the documentation and the Migration Guide from Gradle IntelliJ Plugin.
If you have any issues or requests, please submit them to the GitHub Issues.
To submit questions or suggestions in relation to the documentation, use the feedback form at the bottom of the article.
Added
VerifyPluginProjectConfigurationTask
: limit specific checks when.module
plugin is only appliedTestIdeUiTask
(testIdeUi
task) +CustomTestIdeUiTask
implementation- Dependencies extension:
platformDependency(groupId, artifactIt)
andtestPlatformDependency(groupId, artifactIt)
for adding dependencies on artifacts published to the IntelliJ Maven Repository TestFrameworkType.Metrics
for adding metrics and benchmarking tools for Test Framework
Changed
- Publish instrumented and composed artifact with variants instead of replacing the default artifact
- Check the latest plugin version against Gradle Plugin Portal
- Avoid calling
checkPluginVersion
andcreateCoroutinesJavaAgentFile
methods when in a.module
- Rename
TestFrameworkType.Platform.JUnit4
toTestFrameworkType.Platform
- Rename
TestFrameworkType.Platform.JUnit5
toTestFrameworkType.JUnit5
- Rename
TestFrameworkType.Platform.Bundled
toTestFrameworkType.Bundled
- Prevent from updating the
IvyModule.Info.publication
with the current time as it breaks the configuration cache
Fixed
- Customizing the
sandboxDirectory
andsandboxSuffix
when configuringSandboxAware
tasks - Fixed content exclusion when extracting DMG archives of IntelliJ Platform on macOS
- Could not find a field for name
metadata/modelVersion
(Attribute) inMavenMetadata
PluginArtifactoryShim
: use only host when setting up proxy for custom plugin repositories