Files
openide/docs/plugin-model.puml
Vladimir Krivosheev c2b2520994 new plugin descriptor format - full support on all levels
GitOrigin-RevId: 718c9401f22900c30029ec62c23f60f6f22278ee
2021-05-27 20:17:14 +00:00

58 lines
1.6 KiB
Plaintext

@startuml
!include jb-plantuml-theme.puml
' https://www.augmentedmind.de/2021/01/17/plantuml-layout-tutorial-styles/
component "[[https://github.com/JetBrains/intellij-community/blob/master/platform/core-impl/src/com/intellij/ide/plugins/readme.md plugin]]" as P
folder content as PluginContent {
[module name="…" 0…N] as M
[module name="…" N] as M_N
M .. M_N : a sibling cannot access classes from each other\n unless specified as a dependency
note right of M : ""content"" is not allowed and is not supported for module.
folder dependencies as ModuleDependencies {
(module name="…" 0…N) as MDM
(plugin id="…" 0…N) as MDP
note right of MDM
The dependency is specified in a module descriptor itself in a new model,
not where the module is referenced.
end note
' force PlantUML to place `module` below of `plugin`
MDM -[hidden]d- MDP
}
note bottom of ModuleDependencies
Module dependency is always optional.
If the module depends on an unavailable plugin, it will not be loaded.
end note
M .> P : a module can access classes from a containing plugin
M -down- ModuleDependencies
}
note top of PluginContent
Every plugin is a module, but not every module is a plugin.
A plugin is a group of related modules and for now,
it is the only way to distribute modules.
end note
folder dependencies as PluginDependencies {
(module name="…" 0…N) as PDM
(plugin id="…" 0…N) as PDP
PDM -[hidden]d- PDP
}
note top of PluginDependencies : Same as for ""module""
P -down- PluginContent
P -down- PluginDependencies
@enduml