# Plugin Content
Layout and contents of a plugin distribution file.
Plugin distribution is built using the dedicated Gradle `buildPlugin` task (Reference: [2.x](tools_intellij_platform_gradle_plugin_tasks.md#buildPlugin),
[1.x](tools_gradle_intellij_plugin.md#tasks-buildplugin)) or [Plugin DevKit](deploying_theme.md).
The plugin distribution .jar file contains:
- configuration file (META-INF/plugin.xml) ([](plugin_configuration_file.md))
- classes implementing the plugin functionality
- recommended: plugin logo file(s) (META-INF/pluginIcon*.svg) ([](plugin_icon_file.md))
> See [](plugin_user_experience.md#distribution-size) for important steps to optimize the plugin distribution file.
Targeting a plugin distribution to a specific OS is not possible ([issue](https://youtrack.jetbrains.com/issue/MP-1896)).
### Plugin Without Dependencies
A plugin consisting of a single .jar file is placed in the /plugins directory.
```plantuml
@startuml
skinparam TitleFontName JetBrains Sans
skinparam TitleFontStyle plain
skinparam TitleFontSize 16
skinparam DefaultTextAlignment left
title
|_ 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](plugin_class_loaders.md)).
> Do not repackage libraries into the main plugin JAR file.
> Otherwise, [Plugin Verifier](verifying_plugin_compatibility.md) will yield false positives for unresolved classes and methods.
>
{title="Do Not Repackage Libraries" style="warning"}
```plantuml
@startuml
skinparam TitleFontName JetBrains Sans
skinparam TitleFontStyle plain
skinparam TitleFontSize 16
skinparam DefaultTextAlignment left
title
|_ 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
```