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 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, 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.


Here is the best solution for both problems I could come up with, using the latest snapshot of IntelliJ Platform Gradle Plugin 2.

It is not ideal for the following reasons:

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.