Publishing Plugins to the Gradle Plugin Portal
Publishing a plugin is the main way to make it available for others to use. One approach is to publish the plugin to a private repository, which is common when you want to restrict who can use it. But if you want the plugin to be available to anyone in the world, i.e. public, then you should publish it to the Gradle Plugin Portal, a centralized, searchable repository dedicated to Gradle plugins.
This section will show you how to use the Plugin Publishing Plugin to publish plugins to the Gradle Plugin Portal using a convenient DSL. Taking this approach eliminates a large number of configuration steps and provides a number of checks to validate that your plugin meets the criteria enforced by the Gradle Plugin Portal.
Start with an existing Gradle plugin project
You will need an existing plugin project for this tutorial. If you don’t have your own, you may use the Greeting plugin sample.
Don’t worry about cluttering up the Gradle Plugin Portal with a trivial example plugin: trying to publish this plugin will safely fail with a permission error.
Create an account on the Gradle Plugin Portal
If you have never published a plugin to the Gradle Plugin Portal before, you first need to create an account there. This consists of three steps:
-
Create an account
-
Create an API key
-
Add your API key to your Gradle configuration
Start by going to the registration page — which looks like the image below – and creating an account.
Follow the instructions on that page. Once you have logged in, you can get your API key via the "API Keys" tab of your profile page.
It is common practice to copy and paste the text into your $HOME/.gradle/gradle.properties file, but you can also place it in any other valid location.
All that the plugin requires is that gradle.publish.key and gradle.publish.secret are available as project properties when the appropriate Plugin Portal tasks are executed.
If you are concerned about placing your credentials in gradle.properties, investigate use of
Seauc Credentials plugin or the
Gradle Credentials plugin.
Once you have the API key you can publish as many plugins as you like.
Add the Plugin Publishing Plugin to the project
Add the Plugin Publishing Plugin to the plugins block.
plugins {
id("com.gradle.plugin-publish") version "1.1.0"
}
plugins {
id 'com.gradle.plugin-publish' version '1.1.0'
}
The latest version of the Plugin Publishing Plugin can be found on the Gradle Plugin Portal.
| Since version 1.0.0 the Plugin Publish Plugin automatically applies the Java Gradle Plugin Development Plugin (assists with developing Gradle plugins) and the Maven Publish Plugin (generates plugin publication metadata). If using older versions of the Plugin Publish Plugin, these helper plugins need to be applied explicitly. |
Configure the Plugin Publishing Plugin
The first thing to do when configuring the publication of your plugins is to specify the common properties that apply to all of them. This includes their identity plus the sources and documentation related to them. This will help people browsing the portal find more information about your plugins and learn how to contribute to their development.
group = "io.github.johndoe" (1)
version = "1.0" (2)
gradlePlugin { (3)
website.set("<substitute your project website>") (4)
vcsUrl.set("<uri to project source repository>") (5)
// ... (6)
}
group = 'io.github.johndoe' (1)
version = '1.0' (2)
gradlePlugin { (3)
website = '<substitute your project website>' (4)
vcsUrl = '<uri to project source repository>' (5)
// ... (6)
}
| 1 | Make sure your project has a group set which is used to identify the artifacts (jar and metadata) you publish for your plugins
in the repository of the Gradle Plugin Portal and which is descriptive of the plugin author or the organization the plugins belong too. |
| 2 | Set the version of your project, which will also be used as the version of your plugins. |
| 3 | Use the gradlePlugin block provided by the Java Gradle Plugin Development Plugin
to configure further options of your plugin publication. |
| 4 | Set the website for your plugin’s project. |
| 5 | Provide the source repository URI so that others can find it, if they want to contribute. |
| 6 | Set specific properties for each of the plugins you want to publish; see next section. |
Next you need to define the specific plugins you intend to publish.
Their most important property is their id, as that both uniquely identifies plugins on the Gradle Plugin Portal and prevents namespace clashes between different plugin authors.