Publishing Version Catalog
This article assumes that readers are familiar with Version Catalogs and does not touch upon what versions catalogs are. Refer to my article Version Catalogs in Gradle 7.0 to know about Version Catalogs.
Quick Recap
Version Catalog enables build authors to centralize the dependency coordinates (group, artifact, version) of their third-party dependencies in a conventional configuration file and declare the actual dependencies in a type-safe way. Declaring dependencies this way allows easy reuse of dependency coordinates in all modules, provides content assistance in the IDEs and reduces the risk of typos. More importantly, it also provides a single location to change versions when upgrading a library.
One of the big advantages of a Version Catalog is that it can be shared and published across various projects.
We will walk through the steps of publishing a catalog to maven.
Note: This does not cover the process of creating and setting up a publishing account. Refer to the official documentation to create and set up an account if you don’t have one.
Create a Gradle project
Create a basic Gradle project using gradle init
Kotlin as the DSL language. You can use a Groovy DSL as well, for the purpose of this walkthrough we are using Kotlin DSL.
Add the following code in the generated build.gradle.kts
file.
Applying the version catalog plugin
Gradle offers a version catalog plugin, which offers the ability to declare, then publish a catalog.
Defining a catalog
Add dependency coordinates in the catalog block with an alias name
Configuring Publishing Metadata
To publish the catalog to maven requires multiple things: components to be published, artifact meta-data, POM meta-data, licensing details, repository, and developer information, credentials publishing URL, etc.
To publish you need to add the credentials to the environment. You can add your credentials in a gradle.properties
file in either the Gradle’s installation directory of your system or create a gradle.properties
file in your project(do not check in this file into version control for obvious reasons). Make sure the variable name used in the file is the same as what you declare in the script. In the above example, the variables should be mavenCentralRepositoryUsername
and mavenCentralRepositoryPassword
The properties file would look like following
Signing Artifact
All artifacts uploaded to maven have to be signed. To sign the catalog add the below block to your script. Make sure you have the signing key metadata in your gradle.properties
file
Uploading to Maven
To upload the catalog to maven run the below command in the project directory
Once the artifact is successfully uploaded log in to your sonatype account and publish the staged repository.
Find the complete script here. Refer to a sample catalog here.