Updated guidance for module JARs in IntelliJ based IDEs
When building an IntelliJ based IDE, we’ve historically packed class files from implementation modules into a single big JAR. For example, for IntelliJ IDEA Ultimate this was idea.jar. However most of the classes in that JAR were IntelliJ Platform classes which are included in all IntelliJ-based IDEs. In IntelliJ IDEA 2018.1 we extracted such common classes to a separate platform-impl.jar file. Similarly, we extracted common platform API classes from openapi.jar to platform-api.jar. This can help to decrease build and startup time for the IDE, and also makes layout of different IDEs more consistent.
Now we’re recommending that you do the same for your own IntelliJ-based IDEs. The change is rather simple, when listing the modules using the ProductModulesLayout class, you should now list only your product specific API and implementation modules, using the new productApiModules and productImplementationModules properties (note the prefix is product!).
The platfromApiModules and platformImplementationModules properties you would have been using previously are now deprecated, and should be left unassigned, in which case the default behaviour is to pack the modules listed in CommunityRepositoryModules#PLATFORM_API_MODULES into platform-api.jar, and CommunityRepositoryModules#PLATFORM_IMPLEMENTATION_MODULES into platform-imp.jar. You can read more details in the javadocs for ProductModulesLayout.
You can see how straightforward the change is by taking a look at how it was done for PyCharm Edu in this commit.
Subscribe to Blog updates
Thanks, we've got you!
Wayland Support for IntelliJ-based IDEs
For Linux users of IntelliJ-based IDEs, an exciting advancement is on the horizon – the upcoming support of the Wayland display server protocol. This update is set to bring a host of benefits, including solving the age-old fractional scaling problem and elevating desktop integration when working wit…
Language Server Protocol for Plugin Developers
With the 2023.2 release cycle, IntelliJ-based IDEs now support the Language Server Protocol (LSP). Discover how this may improve the assistance for custom language-specific features and learn how to begin integrating LSP into a plugin for your IDE.
Busy Plugin Developers Newsletter – Summer 2022
Read this Newsletter to learn about the latest JetBrains Marketplace news and plugin development tooling updates.
IntelliJ Project Migrates to Java 17
The source code of the IntelliJ project was recently migrated to Java 17. We still have some modules compiled to be compatible with older Java versions so we can support running users’ projects under these versions. However, most of the platform and plugin modules now use Java 17, and the upcoming 2…