How to develop a plugin which has an optional ultimate-feature without a license
I am more or less regularly working on an open-source plugin for IDEA at https://github.com/NixOS/nix-idea. I recently introduced an optional feature which is only available for ultimate editions. Unfortunately, I don't have an ultimate license, which means I am no-longer able to use the Gradle task :runIde
provided by Gradle IntelliJ Plugin. I have to configure the ultimate edition to be able to compile the project, but I have configured the ultimate edition, than :runIde
will start the ultimate edition which I am not able to use. Is there a good solution for this issue? (I currently don't qualify for a free license, and I think it is important that other people can contribute as well.)
Another no quite related question but still related to the Gradle Plugin: For the probably most requested feature of the plugin at https://github.com/NixOS/nix-idea/issues/1, I need to change the environment variables for the execution of run configurations (and at some other places). Unfortunately, IDEA doesn't have a common extension point for environment variables (See IJPL-5238), so I would have to implement it for each IDE separately. Is there a recommendation how to add all the IDEs as optional dependencies while minimizing the amount of data we have to download. I think having to download like 5 separate and complete IDEs, just to compile the project, is a bit much. It would probably end up close to 10 GB. Note that this download would also have a big impact on the CI, as the build already spends the most time downloading IDEA.
Please sign in to leave a comment.
Here is the best solution for both problems I could come up with, using the latest snapshot of IntelliJ Platform Gradle Plugin 2.
https://github.com/NixOS/nix-idea/commit/3b6f46a1478ae151ed368d33a812f3d8cc5ea72b
It is not ideal for the following reasons:
patchPluginXml
work for the core module seems hacky.https://github.com/NixOS/nix-idea/blob/3b6f46a1478ae151ed368d33a812f3d8cc5ea72b/core/build.gradle.kts#L23-L25
Besides the issues above, I think it would also be nice if I could use different source sets (as for Feature variants in Gradle) instead of having to create a multi-project build.