title |
---|
GoLand Plugin Development |
GoLand is an IntelliJ Platform-based product.
Plugin projects for GoLand can be developed using IntelliJ IDEA with the gradle-intellij-plugin
.
The configuration of GoLand plugin projects follows the methods described in Configuring Plugin Projects using the IntelliJ IDEA Product Attribute, and Configuring the plugin.xml File.
The table below summarizes the gradle-intellij-plugin
attributes to set in the build.gradle
file for a GoLand plugin project:
gradle-intellij-plugin Attribute |
Attribute Value |
---|---|
intellij.type |
IU for IntelliJ IDEA Ultimate. (The Go plugin isn't compatible with IntelliJ IDEA Community Edition.) |
intellij.version |
Set to the same IU BRANCH.BUILD as the GoLand target version, e.g. 193.5233.102 |
intellij.plugins |
org.jetbrains.plugins.go:193.5233.102.83 for the Go plugin.See below for Go plugin version information. |
runIde.ideaDirectory |
Path to locally installed target version of GoLand. For example, on macOS:/Users/<user name>/Library/Application Support/JetBrains/Toolbox/apps/Goland/ch-0/193.5233.112/GoLand.app/Contents |
The version of the Go plugin is explicitly declared because it isn't bundled with IntelliJ IDEA Ultimate Edition. Select a version of the Go plugin that is compatible with the IntelliJ Idea Ultimate version.
The dependency on the Go plugin APIs must be declared in the plugin.xml
file.
As described in Modules Specific to Functionality table, the <depends>
tags must declare com.intellij.modules.go
.
The plugin.xml file must also declare a dependency on com.intellij.modules.platform
as explained in Configuring the plugin.xml File.
The dependency declaration is illustrated in the plugin.xml
snippet below:
<!-- Requires the Go plugin -->
<depends>org.jetbrains.plugins.go</depends>
<!-- Requires the platform module to distinguish it from a legacy plugin -->
<depends>com.intellij.modules.platform</depends>
Use the Exploring APIs as a Consumer process to identify the library intellij-go-<version>.jar
, where <version>
corresponds to the version of the Go plugin.
Test your plugin with any version of GoLand you intend to support.
When learning new APIs, it is helpful to have some representative projects for reference: