Files
openide/docs/plugin-model.puml
Vladimir Krivosheev 667fa3e4b3 fix test data - package attribute is not needed anymore
GitOrigin-RevId: 6a84f369831022fa5bac0bc9ba2b8e2ae240e38b
2021-05-28 07:10:54 +00:00

58 lines
1.5 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/docs/plugin.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