Hello, I was wondering if any of you develop plugins on Windows. I ask this question because, it has become a pain (at least on my computer ):
the plugin is slow (especially the configuration phase). You can see the same problem on the GitHub action of GitHub - JetBrains/intellij-platform-gradle-plugin: Gradle plugin for building plugins for JetBrains IDEs (the CI takes 2x more time to complete on Windows compared to Linux). The latest intellij-platform-gradle-plugin versions improved build times, but this is far from perfect. I know (and JetBrains knows) that there is a problem with the plugin verifier library and ZIP operations, which slows down things. This is an old issue.
Because of that, Iām sticking to the intellij-platform-gradle-plugin v2.1.0, which is quite old. Iām sticking to this version because itās not affected by these issues. Unfortunately, because of that, I canāt target 2025 IDEs with this version. This is will be a problem for me soon, as Iām using more and more deprecated APIs, and I absolutely need to switch to 2025 IDEs to use newer APIs. I mean, my plugins are compatible with 2025 IDEs, but I canāt build against 2025, nor test with a 2025 sandboxed IDE.
So, I donāt know. What should I do? I have a VirtualBox VM with Linux, but this is not ideal.
This is why Iām trying to alert JetBrains about the poor state of plugin development on Windows. I donāt understand why this is not a priority. At least, this is my feeling.
I use Windows ā specifically on ARM64 ā as my daily driver for plugin development. However, my plugin doesnāt use a Gradle build. That obviously comes with its own set of challenges, but it does avoid the ones youāve cited here.
I experienced some of these when working on an open source plugin for a few months that does use a Gradle build, specifically the issue with jar locking. At some point I found a way to avoid that issue, but I honestly donāt remember the solution. Also, the Gradle plugin SDK doesnāt work well on Windows/ARM64. I had to comment out the following in build.gradle.kts or the build would fail with some known issue on that OS/arch combination:
I donāt have to do that on my Windows/x64 machine, but itās so much slower than my Windows/ARM64 machine that itās worth the workaround(s).
So thatās probably not at all helpful, but in the spirit of āmisery loves companyā, Iāve also seen issues with plugin dev on Windows. I havenāt ever tried plugin dev on Mac or Linux, though, so I donāt know if those have their own issues.
Yeah, sometimes I think about making my own Maven build.
Or, take the Gradle platform plugin v1 and fix it in order to run 2025+ IDEs in sandboxed mode. I still have some plugins (8, all my free plugins) using this version, and they are built very quickly.
I tried to look at the source code of the Gradle platform plugin v2 several times, but itās too complicated for me. I canāt invest a lot of time in this project. Actually, I donāt understand why JetBrains allocates so few people to it. It deserves an entire team. Jakub deserves a lot of credit for doing all the work. Seriously.
I donāt know if JetBrains is aware of that. Actually, itās like everything is getting worse.
plugin dev on Windows is a pain
more frequent IDE releases, and the marketplace that will unset the until-build flags in order to encourage us to support EAP IDEs⦠(even if Junie does not support EAPs )
this discourse server is now essentially a community-effort. But, we can now pay for the JetBrains support (I canāt afford that, my incomes are too low). Honestly, this is the best way to kill the community.
I know JetBrains is afraid of VSCode. The new user interface looks like VSCodeās, Iāve read the JetBrains surveys comparing IJ to VSCode⦠Despite this, JetBrains still has a good community, for now. It should invest in this community rather than looking elsewhere (or invest 1% less on AIs).
Hey, Jonathan!
First of all ā thanks for your kind words!
Unfortunately, youāre right ā developing on Windows is a bit harsh due to the filesystem issues you mentioned that became visible as soon as the IntelliJ Platform Gradle Plugin started using Plugin Verifier libraries for processing zips/jars and building plugins and modules dependencies tree.
I still believe that Plugin Verifier can be improved, like not loading everything at once when reading and parsing the IDE directory and requesting some resources lazily (cc @robert.novotny).
To slightly limit the FS operations on Windows, you may turn on the IntelliJ Platform artifact custom caching with:
Iāve also already investigated the JUnit4 lock. It happens because the guest IDE loads sandbox resources into its process and keeps them open. Rebuilding the project fails at this point because Windows wonāt let you do anything with that open file. Iāll get back to this story soon.
@robert.novotny@jakub.chrzanowski
Just to say plugin development is still painful on Windows, even with the latest platform plugin and IJ 2025.3. The junit4 jar is still locked, and performance is terrible.
Do you have some news to share? Can we expect some improvements? Thx.
Duplicating issues on YouTrack, where it says you shouldnāt, wonāt help.
Your report says youāre using 2.5.0 of the Gradle IntelliJ plugin. The latest is 2.10.5 and AFAIK there have been quite a few improvements to make things better compared to that old version.
In my experience, Windows is the worst platform for plugin development, but I recently used Windows 11 with 2.10.x and it was okay.
Interesting , because Iām still on Windows 10 and I recently migrated from the platform plugin 2.1.0 to 2.10.5, just to work with 2025 IDEs.
I will try on Windows 11, just to see.
For IDEA-376932 (the junit4 jar is locked), Iām using a workaround: instead of using Gradle Run Configurations, Iām using the command line or Shell Script Run Configurations, which are not affected. There is one downside: itās not easy to debug a sandboxed IDE.
Unfortunately, Iām still impacted by the slow builds (x2 times slower, and itās reproducible on the intellij-platform-gradle-pluginās Windows CI). I will see if Windows 11 can help.
At least, I can work with the platform plugin v2.10.5, but itās still frustrating.
The IntelliJ Platform Gradle Plugin 2.15.0 is now available.
This release was focusing on improving the performance and contains improvements not only in the Gradle plugin itself but also dependent Plugin Verifier library.
Please switch to this version and check if you noticed anything. Thanks!
On my main plugin project, on Windows, build+test is ~10% faster, which is good to take , but itā still very slow.
Iād like to test with with GitHub - JetBrains/intellij-platform-plugin-template: Template repository for creating plugins for IntelliJ Platform Ā· GitHub in order to compare numbers with an official sample project (mine is too much customized, and private), but how do we change the intellij-platform-gradle-plugin version? The libs.versions.toml is gone. I tried to update org.jetbrains.intellij.platform.settings to 2.15.0 in settings.gradle.kts, but I get this error:
* What went wrong:
org/jetbrains/kotlin/gradle/tasks/KotlinJvmCompile
> org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
* Try:
> Run with --info or --debug option to get more log output.
> Get more help at https://help.gradle.org.
* Exception is:
java.lang.NoClassDefFoundError: org/jetbrains/kotlin/gradle/tasks/KotlinJvmCompile
at org.jetbrains.intellij.platform.gradle.plugins.project.IntelliJPlatformBasePlugin$apply$7.execute(IntelliJPlatformBasePlugin.kt:606)
at org.jetbrains.intellij.platform.gradle.plugins.project.IntelliJPlatformBasePlugin$apply$7.execute(IntelliJPlatformBasePlugin.kt:523)
at org.gradle.api.internal.plugins.DefaultPluginManager$2.execute(DefaultPluginManager.java:261)
at org.gradle.api.internal.plugins.DefaultPluginManager$2.execute(DefaultPluginManager.java:258)
at org.gradle.internal.code.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:124)
at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1.run(DefaultCollectionCallbackActionDecorator.java:109)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:30)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:27)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:67)
...
I tried to use the template v2.4.1 (most recent version is 2.5.0), but once updated the plarform plugin to v2.15.0, I canāt deactivate gradleās caching.
Iāve set
but cache is still used. I mean, the first build is still too slow (but a bit faster), then subsequent builds take 1s (many tasks are skipped). I canāt say if this is different with the template v2.5.0 as I cannot change the platform plugin version when using the template v2.5.0. Also, buildPlugin works, but test fails.
Anyway: my results on Windows with the template v2.4.1 with gradlew clean buildPlugin --no-daemon --scan:
platform plugin v1.13.1: 19s (46s in total, but buildSearchableOptionsis active and it took 27s, so 46 - 27 = 19) - Build ScanĀ® | Develocity
For each platform plugin, I ran gradlew clean buildPlugin --no-daemon --scan three times and I kept the fastest build. And, again, I was not able to run the test task.
@jonathanlermitage.1 The KotlinJvmCompile is now fixed in the main branch. I missed the point that the class I used when building the Gradle plugin is something different than what is eventually used in the project.
Thatās the correct way, yes.
As for timings ā the largest difference happens when you build project with a bundled plugin added, like bundledPlugin("com.intellij.java")
This is because Plugin Verifier does some filesystem readings, which take time on Windows.
I probably found another possibility for that by itroducing a cached index dump. The first run against a specific IntelliJ Platform still may take a while, but any successive ā after building that index ā should go way faster.
With the platform plugin 2.15.1-SNAPSHOT: 13s - Build ScanĀ® | Develocity
The configuration phase now takes ~6s instead of ~10s
Iāve noticed the same improvement in my own plugin projects.