A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.jetbrains.org/intellij/sdk/docs/basics/plugin_structure/plugin_configuration_file.html below:

Plugin Configuration File | IntelliJ Platform Plugin SDK

Plugin Configuration File

The plugin.xml configuration file contains all the information about the plugin, which is displayed in the plugins' settings dialog, and all registered extensions, actions, listeners, etc. The sections below describe all the elements in detail.

The example plugin.xml files can be found in the IntelliJ SDK Docs Code Samples repository.

Additional Plugin Configuration Files

A plugin can contain additional configuration files beside the main plugin.xml. They have the same format, and they are included with the config-file attribute of <depends> elements specifying plugin dependencies. However, some elements and attributes required in plugin.xml are ignored in additional configuration files. If the requirements differ, the documentation below will state it explicitly. One use case for additional configuration files is when a plugin provides optional features that are only available in some IDEs and require certain modules.

Useful Resources

Please make sure to follow the guidelines from Best practices for listing your plugin for an optimal presentation of your plugin on JetBrains Marketplace. The Busy Plugin Developers. Episode 2 discusses 5 tips for optimizing JetBrains Marketplace plugin page in more detail.

See also Marketing about widgets and badges.

Configuration Structure Overview

If an element or an attribute is not documented on this page, consider them as configuration items intended to be used by JetBrains only. They must not be used by third-party plugins.

Deprecated elements are omitted in the list below.

Elements described on this page are available in quick documentation since IntelliJ IDEA 2025.1.

The Plugin DevKit plugin must be installed and enabled.

idea-plugin

The plugin.xml file root element.

Required

yes

Attributes
Children
id

A unique identifier of the plugin. It should be a fully qualified name similar to Java packages and must not collide with the ID of existing plugins. The ID is a technical value used to identify the plugin in the IDE and JetBrains Marketplace. Please use characters, numbers, and '.'/'-'/'_' symbols only and keep it reasonably short.

Make sure to pick a stable ID, as the value cannot be changed later after public release.

Required

no; ignored in an additional config file
It is highly recommended to set in plugin.xml file.
The element can be skipped in the source plugin.xml file if the Gradle plugin patchPluginXml task (2.x, 1.x) is enabled and configured.

Default value

Value of the <name> element.

Example

<id>com.example.framework</id>

name

The user-visible plugin display name (Title Case).

Required

yes; ignored in an additional config file

Example

<name>My Framework Support</name>

version

The plugin version displayed in the Plugins settings dialog and on the JetBrains Marketplace plugin page. Plugins uploaded to the JetBrains Marketplace must follow semantic versioning.

Required

yes; ignored in an additional config file
The element can be skipped in the source plugin.xml file if the Gradle plugin patchPluginXml task (2.x, 1.x) is enabled and configured.

Example

<version>1.3.18</version>

product-descriptor

Paid or Freemium plugin descriptor.

Required

only for paid or freemium plugins; ignored in an additional config file
Do not add <product-descriptor> element in a free plugin.

Attributes
idea-version

The plugin's range of compatible IntelliJ-based IDE versions.

Required

yes; ignored in an additional config file
The element can be skipped in the source plugin.xml file if the Gradle plugin patchPluginXml task (2.x, 1.x) is enabled and configured.

Attributes
Examples
vendor

The vendor name or organization ID (if created) in the Plugins settings dialog and on the JetBrains Marketplace plugin page.

Required

yes; ignored in an additional config file

Attributes
Examples
description

The plugin description displayed on the JetBrains Marketplace plugin page and in the Plugins settings dialog.

Simple HTML elements, like text formatting, paragraphs, lists, etc., are allowed and must be wrapped into <![CDATA[... ]]> section.

Required

yes; ignored in an additional config file
The element can be skipped in the source plugin.xml file if the Gradle plugin patchPluginXml task (2.x, 1.x) is enabled and configured.

Example

<description><![CDATA[ Provides support for My Framework. The support includes: <ul> <li>code completion</li> <li>references</li> </ul> For more information visit the <a href="https://example.com">project site</a>. ]]></description>

change-notes

A short summary of new features, bugfixes, and changes provided with the latest plugin version. Change notes are displayed on the JetBrains Marketplace plugin page and in the Plugins settings dialog.

Simple HTML elements, like text formatting, paragraphs, lists, etc., are allowed and must be wrapped into <![CDATA[... ]]> section.

Required

no; ignored in an additional config file
The element can be skipped in the source plugin.xml file if the Gradle plugin patchPluginXml task (2.x, 1.x) is enabled and configured.

Example

<change-notes><![CDATA[ <h2>New Features</h2> <ul> <li>Feature 1</li> <li>Feature 2</li> </ul> <h2>Bug Fixes</h2> <ul> <li>Fixed issue 1</li> <li>Fixed issue 2</li> </ul> ]]></change-notes>

depends

Specifies a dependency on another plugin or a module of an IntelliJ Platform-based product. A single <idea-plugin> element can contain multiple <depends> elements.

Required

no; in most cases dependency on the platform module is needed

Attributes
Examples
incompatible-with

The ID or alias of the plugin the current plugin is incompatible with. The plugin is not loaded if the incompatible plugin is installed in the current IDE.

Required

no; ignored in an additional config file

Examples
extensions

Defines the plugin extensions.

Required

no

Attributes
Children

The children elements are registrations of instances of extension points provided by the IntelliJ Platform or plugins.
An extension element name is defined by its extension point via name or qualifiedName attributes.
An extension element attributes depend on the extension point implementation, but all extensions support basic attributes: id, order, and os.

Examples
An Extension

An extension instance registered under <extensions>.

Listed attributes are basic attributes available for all extensions. The list of actual attributes can be longer depending on the extension point implementation.

Attributes
extensionPoints

Extension points defined by the plugin.

Required

no

Children
extensionPoint

A single extension point entry of the <extensionPoints> defined by the plugin. A single <extensionPoints> element can contain multiple <extensionPoint> elements.

Required

no

Attributes
Children
with

Specifies the required parent type for class names provided in extension point tags or attributes. A single <extensionPoint> element can contain multiple <with> elements.

Required

no

Attributes
Example

An extension point which restricts the type provided in a myClass attribute to be an instance of com.example.ParentType, and the type provided in a someClass element to be an instance of java.lang.Comparable:

<extensionPoint name="myExtension" beanClass="com.example.MyExtension"> <with attribute="myClass" implements="com.example.ParentType"/> <with tag="someClass" implements="java.lang.Comparable"/> </extensionPoint>

When using the above extension point, an implementation could be registered as follows:

<myExtension ... myClass="com.example.MyCustomType"> <someClass>com.example.MyComparable</someClass> </myExtension>

where:

resource-bundle

A resource bundle to be used with message key attributes in extension declarations and for action and group localization. A single <idea-plugin> element can contain multiple <resource-bundle> elements.

Required

no

Example

To load the content of messages/Bundle.properties bundle, declare:

<resource-bundle>messages.Bundle</resource-bundle>

actions

Defines the plugin actions.

Required

no

Attributes
Children
Example

<actions resource-bundle="messages.ActionsBundle"> <!-- Actions/Groups defined here will use keys from the ActionsBundle.properties bundle. --> </actions>

action

A single action entry of the <actions> implemented by the plugin. A single <actions> element can contain multiple <action> elements.

Required

no

Attributes
Children
Examples
add-to-group

Specifies that the action should be added to an existing <group>. A single action can be added to multiple groups.

Required

no

Attributes
Example

<add-to-group group-id="ToolsMenu" anchor="after" relative-to-action="GenerateJavadoc"/>

keyboard-shortcut

Specifies the keyboard shortcut for the action. A single action can have several keyboard shortcuts.

Required

no

Attributes
Examples
mouse-shortcut

Specifies the mouse shortcut for the action. A single action can have several mouse shortcuts.

Required

no

Attributes
Examples
override-text

Defines an alternate menu action or group text depending on context: menu location, toolbar, and other.

Supported

2020.1+ for actions
2020.3+ for groups

Required

no

Attributes
Examples
synonym

Defines an alternative text for searching the action in or popups. A single action can have multiple synonyms.

Required

no

Attributes
Example

<!-- Default action text: Delete Element --> <synonym key="my.action.text.remove.element"/> <synonym text="Remove Element"/>

abbreviation

Defines an abbreviation for searching the action in or popups. A single action can have multiple abbreviations.

Required

no

Attributes
Example

<!-- Default action text: UI Inspector --> <abbreviation value="uii"/>

group

Defines an action group. The <action>, <group> and <separator> elements defined inside the group are automatically included in it. The <group> elements can be nested.

Required

no

Attributes
Children
Examples
reference

Allows adding an existing action to the group. The element can be used directly under the <actions> element, or in the <group> element.

Required

no

Attributes
Children
Examples
separator

Defines a separator between actions in a group. The element can be used directly under the <actions> element with the child <add-to-group> element defining the target group, or in the <group> element.

Required

no

Attributes
Children
Examples
applicationListeners

Defines the application-level listeners.

Required

no

Children
listener

Defines a single application or project-level listener. A single <applicationListeners> or <projectListeners> can contain multiple <listener> elements.

Required

no

Attributes
Example

<listener topic="com.intellij.ide.AppLifecycleListener" class="com.example.MyListener" os="mac" activeInTestMode="false"/>

projectListeners

Defines the project-level listeners.

Required

no

Children
xi:include

Allows including content of another plugin descriptor in this descriptor with XInclude standard.

Namespace

xi="http://www.w3.org/2001/XInclude"

Required

no

Attributes
Children
Example

Given a plugin descriptor:

<idea-plugin xmlns:xi="http://www.w3.org/2001/XInclude"> <id>com.example.myplugin</id> <name>Example</name> <xi:include href="/META-INF/another-plugin.xml"/> ... </idea-plugin>

and /META-INF/another-plugin.xml:

<idea-plugin> <extensions>...</extensions> <actions>...</actions> </idea-plugin>

The effective plugin descriptor loaded to memory will contain the following elements:

<idea-plugin xmlns:xi="http://www.w3.org/2001/XInclude"> <id>com.example.myplugin</id> <name>Example</name> <extensions>...</extensions> <actions>...</actions> ... </idea-plugin>

xi:fallback

Indicates that including the specified file is optional.

If the file referenced in href is not found and the xi:fallback element is missing, the plugin will fail to load.

Namespace

xi="http://www.w3.org/2001/XInclude"

Required

no

Example

<idea-plugin xmlns:xi="http://www.w3.org/2001/XInclude"> ... <xi:include href="/META-INF/optional-plugin.xml"> <xi:fallback/> </xi:include> ... </idea-plugin>

application-components

Do not use it in new plugins. See Components for the migration guide.

Defines a list of application components.

Deprecated

since 2020.1

Required

no

Children
component

Do not use it in new plugins. See Components for the migration guide.

Defines a single application, project, or module component. A single <application-components>, <project-components>, or <module-components> element can contain multiple <component> elements.

Deprecated

since 2020.1

Required

no

Children
implementation-class

Do not use it in new plugins. See Components for the migration guide.

The fully qualified name of the component implementation class.

Deprecated

since 2020.1

Required

yes

interface-class

Do not use it in new plugins. See Components for the migration guide.

The fully qualified name of the component interface class. If not specified, the interface will be the same as defined by <implementation-class> element.

Deprecated

since 2020.1

Required

no

headless-implementation-class

Do not use it in new plugins. See Components for the migration guide.

The fully qualified name of the component implementation class to be used when the IDE runs in headless mode.

Deprecated

since 2020.1

Required

no

option

Do not use it in new plugins. See Components for the migration guide.

Allows to provide additional component options. A single <component> element can contain multiple <option> elements.

Deprecated

since 2020.1

Required

no

Attributes
loadForDefaultProject

Do not use it in new plugins. See Components for the migration guide.

If present, the component is instantiated also for the default project. It takes effect only when used inside <project-components> element.

Deprecated

since 2020.1

Required

no

skipForDefaultProject

Do not use it in new plugins. See Components for the migration guide.

In the past, if present, the component was not loaded for the default project.

Currently, project components aren't loaded in the default project by default, so this element has no effect. Use <loadForDefaultProject> if it is required to load a component in the default project.

Deprecated

since 2020.1

Required

no

project-components

Do not use it in new plugins. See Components for the migration guide.

Defines a list of project components.

Deprecated

since 2020.1

Required

no

Children

module-components

Do not use it in new plugins. See Components for the migration guide.

Defines a list of module components.

Deprecated

since 2020.1

Required

no

Children

13 August 2025


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4