--- title: Publishing a Plugin to an Enterprise Plugin Repository --- If you intend to use a plugin repository _other than_ the [JetBrains Plugin Repository](https://plugins.jetbrains.com), you will need to: * Upload your plugin JAR/ZIP file to the web server you are using for the enterprise repository. * Maintain an `updatePlugins.xml` file on that web server describing all the available plugins. * Add the URL for the enterprise repository to the JetBrains IDE [Repository Settings/Preferences](https://www.jetbrains.com/help/idea/managing-plugins.html#repos). ## Describing Your Plugins in an updatePlugins File Every enterprise plugin repository must have at least one `updatePlugins.xml` file to describe the latest compatible version for every hosted plugin. The description in `updatePlugins.xml` is used by JetBrains IDEs to locate plugins by attributes such as vendor, functional category, version, etc. These attributes are displayed by JetBrains IDEs to help users select or upgrade plugins. The description also tells the JetBrains IDE where to download the plugin itself. @chkrv - The following description of mapping updatePlugins-*.xml files to unique URLs assumes JetBrains IDEs can't select the correct file based on the naming convention. Is that correct? An enterprise plugin repository's `updatePlugins.xml` file is constructed and maintained by the administrator of the repository. More than one `updatePlugins.xml` file will be required if consumers of the enterprise repository are using more than one version of a JetBrains IDE. For example `updatePlugins-182.xml`, `updatePlugins-183.xml` for IntelliJ IDEA 2018.2 and 2018.3 respectively. Each `updatePlugins-*.xml` file will have a unique, IDE version-specific URL that is added to the JetBrains IDE [Repository Settings/Preferences](https://www.jetbrains.com/help/idea/managing-plugins.html#repos). ### The Format of an updatePlugins File The overall structure of a `updatePlugins.xml` file is: ```xml "category_1" "category_2" "category_3" "category_n" ``` #### Describing Categories of Plugins Within the `` elements is a sequential list of categories of plugins available in the repository. The valid plugin categories are listed at the bottom of product-specific pages at the [JetBrains Plugin Repository](https://plugins.jetbrains.com/idea). For example, "Administration Tools", "Graphics", "Navigation", etc. Each category section begins with the `` and `` elements, and ends with a `` element. Note: * The `` elements only appear at the start of a category. * The string contained withing the `` elements must exactly match the `name` attribute of the `` element. * Categories should only appear if at least one plugin exists in that category. #### Describing Individual Plugins Each available plugin is described between `` elements. As shown below, not all elements and attributes are required because some are specific to the [JetBrains Plugin Repository](https://plugins.jetbrains.com). ```xml My Plugin Name fully.qualified.id.of.this.plugin major.minor.update Company name or developer name fully.qualified.id.of.required.plugin a_category #.# ``` ### Format of updatePlugins File for Private Repositories The `updatePlugins.xml` file for private repositories differs only in that the `` element is added and `` replaces ``. Otherwise, elements permitted between `` elements are also permitted between `` elements. The example below should be considered the minimum information that should be supplied. **Note:** Conflicting information from e.g. `` or ``elements causes the respective `` attribute information to be replaced. To avoid mistakes and confusion, using these elements is not recommended with ``. ```xml ```