3.1 KiB
Plugin Content
Layout and contents of a plugin distribution file.
Plugin distribution is built using the dedicated Gradle buildPlugin
task (Reference: 2.x,
1.x) or Plugin DevKit.
The plugin distribution .jar file contains:
- configuration file (META-INF/plugin.xml) (Plugin Configuration File)
- classes implementing the plugin functionality
- recommended: plugin logo file(s) (META-INF/pluginIcon*.svg) (Plugin Logo)
See for important steps to optimize the plugin distribution file.
Targeting a plugin distribution to a specific OS is not possible (issue).
Plugin Without Dependencies
A plugin consisting of a single .jar file is placed in the /plugins directory.
@startuml
skinparam TitleFontName JetBrains Sans
skinparam TitleFontStyle plain
skinparam TitleFontSize 16
skinparam DefaultTextAlignment left
title
<IDE directory>
|_ plugins
|_ sample.jar // (Plugin distribution) //
|_ com
|_ company
|_ Sample.class // (Class ""com.company.Sample"") //
|_ ...
|_ META-INF
|_ plugin.xml // (Plugin Configuration File) //
|_ pluginIcon.svg // (Plugin Logo) //
|_ pluginIcon_dark.svg // (Plugin Logo, dark variant) //
end title
@enduml
Plugin With Dependencies
The plugin .jar file is placed in the /lib folder under the plugin's "root" folder, together with all required bundled libraries.
All JARs from the /lib folder are automatically added to the classpath (see also Plugin Class Loaders).
Do not repackage libraries into the main plugin JAR file. Otherwise, Plugin Verifier will yield false positives for unresolved classes and methods.
{title="Do Not Repackage Libraries" style="warning"}
@startuml
skinparam TitleFontName JetBrains Sans
skinparam TitleFontStyle plain
skinparam TitleFontSize 16
skinparam DefaultTextAlignment left
title
<IDE directory>
|_ plugins
|_ sample
|_ lib
|_ lib_foo.jar // (Required bundled library #1) //
|_ lib_bar.jar // (Required bundled library #2) //
|_ ...
|_ sample.jar // (Plugin distribution) //
|_ com
|_ company
|_ Sample.class // (Class ""com.company.Sample"") //
|_ ...
|_ META-INF
|_ plugin.xml // (Plugin Configuration File) //
|_ pluginIcon.svg // (Plugin Logo) //
|_ pluginIcon_dark.svg // (Plugin Logo, dark variant) //
end title
@enduml