# 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 ```