JVM args for IDEA built from source during plugin development

Answered

When I build and run the IDEA source code from another IDEA instance, where does the IDEA instance I just built get the JVM arguments from?

I can see in build/idea-sandbox/system/log/idea.log that it gets parameters such as:

-Dapple.awt.fileDialogForDirectories=true -Dapple.laf.useScreenMenuBar=true -Didea.classpath.index.enabled=false -XX:MaxPermSize=250m -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -ea

but where does this come from?

I am particularly interested in the useScreenMenuBar setting as it looks like I'll need to set that to false as a workaround. How do I do this?

0
4 comments

These are added by the Plugin Devkit automatically (org.jetbrains.idea.devkit.run.PluginRunConfiguration).

You can add

-Dapple.laf.useScreenMenuBar=false

to "VM Options" parameter in Run configuration to override default.

1

Thanks for the response! I had tried to add it as a "VM Option" to the run configuration and that didn't seem to change anything. (And I also tried to add it to a idea.vmoptions file in the sandbox directory, and I also tried to change parts of the IDEA source code that seemed relevant -- all to no avail.)

Not sure if this matters but I am using Gradle, following the now-recommended path in the IntelliJ Platform SDK DevGuide. Since the other path is being referred to as "Using DevKit", my impression is that I am not using the Plugin Devkit at all. Of course for all I know "using Gradle" might just mean that I am still using DevKit through some layers of abstraction.

Anyway, to clarify, this is how my Run configuration dialog looks like:

This results in the first line of the build log being "Executing task ':runIde -Dapple.laf.useScreenMenuBar=false'", so it's not like the VM options from the dialog are entirely ignored, but the log in build/idea-sandbox/system/log/idea.log shows that the IDEA instance I am building is still started with -Dapple.laf.useScreenMenuBar=true.

0

Yes, my answer was targeted to Devkit project setup.

The Gradle run configuration VM options wlll only affect execution of Gradle task, but not the started IDE.

Custom VM options/arguments for the IDE must be specified in `runIde` task configuration in your build.gradle file via `jvmArgs` parameter

2

That worked, amazing, thanks!

0

Please sign in to leave a comment.