# Plugin Content

> For the complete documentation index, see [llms.txt](https://plugins.jetbrains.com/docs/intellij/llms.txt).

Plugin distribution is built using the dedicated Gradle `buildPlugin` task (Reference: [2.x](tools-intellij-platform-gradle-plugin-tasks.html#buildPlugin), [1.x](tools-gradle-intellij-plugin.html#tasks-buildplugin)) or [Plugin DevKit](deploying-theme.html).

The plugin distribution `.jar` file contains:

* configuration file (`META-INF/plugin.xml`) ([Plugin Configuration File](plugin-configuration-file.html))

* classes implementing the plugin functionality

* recommended: plugin logo file(s) (`META-INF/pluginIcon*.svg`) ([Plugin Logo](plugin-icon-file.html))

> **Tip:**
> See [Distribution Size](plugin-user-experience.html#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
  <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](plugin-class-loaders.html)).

> **Warning: Do Not Repackage Libraries**
> Do not repackage libraries into the main plugin JAR file. Otherwise, [Plugin Verifier](verifying-plugin-compatibility.html) will yield false positives for unresolved classes and methods.

```PLANTUML
@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
```

