| name | module-set-pluginization |
| description | Convert Product DSL module sets into bundled wrapper plugins. |
Module Set Pluginization
Use this workflow when a group of platform modules that currently live inside an aggregate Product DSL ModuleSet (typically essential, essentialMinimal, or ide.common) should become a standalone bundled plugin wrapper.
New canonical pattern: the wrapper is a hand-written JPS module placed next to the feature modules — not auto-generated under community/module-set-plugins/generated/. Auto-generation is being phased out; legacy wrappers stay in place until migrated. Reference example: community/platform/navbar/plugin/ (IJPL-245430, commit 9d61ae6803221).
Before Editing
- Look at
community/platform/navbar/plugin/ as the reference: a sibling plugin/ directory of the feature modules with its own .iml, resources/META-INF/plugin.xml, and plugin-content.yaml.
- Decide whether the modules should still be inlined inside a parent module set in any product. Pluginized wrappers usually stop being emitted through the aggregate
intellij.moduleSets.<name>.xml and become a bundled plugin instead.
- For library modules with only a small closed consumer set, do not create or keep a shared wrapper just to make the library available. Prefer
visibility="private" on the library descriptor and register the module as unnamed <content> in each consuming plugin, so each copy lives in that plugin's implicit private namespace.
Create the Wrapper Plugin Module
Create a new JPS module at <feature-root>/plugin/, e.g. :